Hirdetés

2024. május 3., péntek

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Visual Basic

Hozzászólások

(#1851) vilag válasza sztanozs (#1850) üzenetére


vilag
tag

Végül is eddig úgy tűnik, hogy a következő verziónál maradok:

Workbook:
Private Sub Workbook_Open()

UserForm1.Show

End Sub

Userform:

Private Sub CommandButton2_Click() 'Kilépés gomb

mfszam = 0 'mfszam=munkafüzetek száma
For Each twb In Application.Workbooks
mfszam = mfszam + 1
Next
If mfszam = 0 Then
Application.Quit
Else
Application.DisplayAlerts = False
Unload Me
ThisWorkbook.Close
Application.DisplayAlerts = True
End If
Application.WindowState = xlNormal

End Sub

Private Sub UserForm_Terminate()

Application.DisplayAlerts = True
Application.WindowState = xlNormal

End Sub

Ez lett a végleges (legalább is most annak tűnő) megoldás.
Még betettem egy Unload Me-t, mert így lefut a lejjebbi részben írt Terminate is, amivel el tudom érni, hogy a hibajelzést visszakapcsoljam, illetve, hogy újra nagy méretű legyen a megnyitva maradt munkafüzet (már persze ha több volt nyitva). Ha csak egy volt nyitva az sem gond, mert felugrik és aztán bezáródik az egész.

A dim-eket kihagytam, mert anélkül is megy, illetve a változó nevét megváltoztattam, mert nekem így beszédesebb :)

Üdv, vilag

(#1852) sztanozs válasza vilag (#1851) üzenetére


sztanozs
veterán

Dim-eket ne hagyd ki és tedd ki az összes modul elejére az Option Explicit-et (megköveteli az összes változó deklarálását), és akkor nem lesznek esetleges elütésből eredő problémáid sem.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1853) vilag válasza sztanozs (#1852) üzenetére


vilag
tag

Üdv!

Kicsit utánaolvastam az Option Explicit-nek, mert megmondom őszintén nem is hallottam róla.
A meglévő kevéske tudásomat a kollégámtól, innen, általánosságban az internetről, illetve saját kútfőböl szereztem. Vélhetően ezért nem hallottam róla.

Szóval utánaolvastam, és szerintem nem fogom bekapcsolni (legalább is ebben a programban tuti nem), mert rövidke a program és a tárgyalt kódon kívül mindössze egy változó van, így igazán nincs is értelme.

Meg rosszat is olvastam (1 hsz):
[link]

Bár nem olvastam végig, így könnyen lehet, hogy nem is ez okozta a problémát.

Üdv, vilag

Szerk: Annyit azonban észrevettem, hogy a fenti módon megoldott kilépéssel előállta az a helyzet, hogy a personal.xls-t is bezárja, így a kipakolt saját menük, illetve beállítások elszállnak.
Ezt nem lehet valahogyan elkerülni????

[ Szerkesztve ]

(#1854) sztanozs válasza vilag (#1853) üzenetére


sztanozs
veterán

Saját funkciókat, és menüket menüket tedd XLA-ba, ne XLS-be.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1855) vilag válasza sztanozs (#1854) üzenetére


vilag
tag

Üdv!

Felmerült még egy probléma.

Az a baj, hogy nem tudom, hogy a felhasználók közül ki az akinek van personal.xls és esetleg rendelkezik az általunk írt sajatfuggvenyek.xla-val.
Ebből kifolyólag sajnos nem tudom előre meghatározni, hogy melyik az ominózus munkafüzetszám amihez viszonyítani tudnám, hogy van e még nyitva munkafüzet vagy sem.

Tudunk esetleg beépíteni valami erre vonatkozó vizsgálatot?
Esetleg vizsgáljuk meg, hogy megnyitáskor mennyi munkafüzet van nyitva és azt vegyük bázisértéknek?
Bár lehet, hogy ez sem jó, mert még így sem tudjuk megmondani, hogy az valóban egy látható munkafüzet e vagy az előbb említett kettő valamelyike...

Próbáljunk meg esetleg ezekre a munkafüzet nevekre keresni és kivonni a számukat a bázisszámból?
Valami ötlet esetleg?

Üdv, vilag

(#1856) sztanozs válasza vilag (#1855) üzenetére


sztanozs
veterán

Mármint megnyitva?
A telepített / elérhető AddInek az Application.AddIns collectionben vannak nyilvántartva. For Each-vel végigmész rajtuk, és megnézed, hogy a tiéd nyitva van-e (property-k, amik kellhetnek: Name, Installed, IsOpen).
Public Function SajatfuggvenyekBetolve()
Dim A1 As AddIn
For Each A1 In Application.AddIns
If (A1.Name = "sajatfuggvenyek.xla") And A1.IsOpen And A1.Installed Then
SajatfuggvenyekBetolve = True
Exit Function
Next
SajatfuggvenyekBetolve = False
End Function

A megnyitott workbookok pedig az Application.Workbooks collectionben vannak. Megnézni ugyanúgy tudod:
Public Function PersonalBetolve()
Dim W1 As Workbook
For Each W1 In Application.Workbooks

If W1.Name = "personal.xls" Then
PersonalBetolve = True
Exit Function
Next
PersonalBetolve = False
End Function

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1857) vilag válasza sztanozs (#1856) üzenetére


vilag
tag

Ez lett a végső (nek tűnő) megoldás:

For Each twb In Application.Workbooks
wbnev = twb.Name
If wbnev <> "PERSONAL.XLS" And wbnev <> ThisWorkbook.Name Then
GoTo bezar
End If
Next

kilep:
Application.Quit
GoTo vege
bezar:
Application.DisplayAlerts = False
Unload Me
ThisWorkbook.Close

vege:
Application.WindowState = xlMaximized

Jelenleg úgy tűnik, hogy minden gond nélkül működik. mondom ezt néhány teszt után.
Remélem most már így is marad.

Van azonban egy másik kérdésem:
A szóban forgó project le van jelszavazva a basicben azon oknál fogva, hogy a mezei felhasználó ne tévedhessen debug módba.
Van a felhasználói felületen egy gomb aminek a jelentősége most megnőtt (eddig nem is használtam). Ez a gomb arra szolgál, hogy a userformot bezárja és megnyissa a basicet.

A probléma az lenne, hogy a project kibontásához jelszót kér (mivel ugye lejelszavaztam).

Szóval a kérdés az, hogy lehet e automatizálni a pojecthez tartozó jelszóbeadást?

Természetesen a userformon lévő gomb jelszavazva van.

Üdv, vilag

(#1858) martonx válasza vilag (#1857) üzenetére


martonx
veterán

Úristen, ez a dolog kezd végtelenül elbutulni ;]

Én kérek elnézést!

(#1859) vilag válasza martonx (#1858) üzenetére


vilag
tag

Csupán érdekelnek (legalább is számomra) új megoldások.
Nem tudom ez miért baj?

(#1860) martonx válasza vilag (#1859) üzenetére


martonx
veterán

Nem ez a baj. Neked már réges régen tovább kellett volna lépned az excel makróról, bármilyen normális fejlesztői környezet felé.
Mi lesz a következő, amit excel makróban akarsz csinálni? Directx-es játékprogram? ;]

Én kérek elnézést!

(#1861) vilag válasza martonx (#1860) üzenetére


vilag
tag

Üdv!

Azt mondod megérettem a továbblépésre?

Mégis milyen fejlesztői környezetet javasolnál?

Üdv, vilag

(#1862) martonx válasza vilag (#1861) üzenetére


martonx
veterán

Igen, megértél :)
VB scriptek után .Net-et javaslom továbblépésre. Talán elsőre winforms a legideálisabb továbblépni, de nehogy itt leragadj, mert a végső cél nem lehet más, mint az ASP.NET (MVC).

Én kérek elnézést!

(#1863) vilag válasza martonx (#1862) üzenetére


vilag
tag

Ajánlották még a CSharpot is.

Arról mi a véleményed, illetve mi a lényegi különbség közöttük?

(#1864) martonx válasza vilag (#1863) üzenetére


martonx
veterán

Én már régóta .Net vonalon kizárólag C#-ozok. Makróról .Net-re áttérésre legjobb a VB.Net viszont rá fogsz jönni, hogy mostanra szinte senki nem használja a VB.Net-et, ergo tutorialokat, példákat, különösen az újabb technológiákhoz szinte lehetetlen hozzá találni.
Nekem személyes kedvencem a VB.Net, és mind tudásban, mind sebességben egyenrangú a C#-al. Csak valahogy az élet így hozta, hogy mostanra a C# dominál.

Én kérek elnézést!

(#1865) DerStauner válasza martonx (#1864) üzenetére


DerStauner
senior tag

"tutorialokat, példákat, különösen az újabb technológiákhoz szinte lehetetlen hozzá találni."

erre jó a sok ingyenes online converter

én soha nem tudtam megbékélni a c# szintaxisával, máig is vb.net-tel nyomulok (anno vb6-tal kezdtem)

(#1866) martonx válasza DerStauner (#1865) üzenetére


martonx
veterán

akkor adj be egy speciálisabb RIA Services LINQ-t, vagy az online konverternek, és nézd meg, hogy mit fog vele kezdeni.
Az online konverterek addig jók, amig a console.writeline sor végéről le kell szedni a pontosvesszőt ;]
Mint mondtam nekem is a VB.Net a kedvencem, de már évek óta nem igazán használtam, pont az újabb technológiák nehézkes VB.Net támogatása miatt.

Én kérek elnézést!

(#1867) DerStauner


DerStauner
senior tag

sziasztok!

alant a kód:

ConnectToDb(acces_conn)
acces_cmd.Connection = acces_conn
acces_cmd.Parameters.Clear()
acces_cmd.Parameters.AddWithValue("@knev", frmkereses.inp_knev.szoveg.Replace("*", "%"))
acces_cmd.Parameters.AddWithValue("@hrsz", frmkereses.inp_hrsz.szoveg.Replace("*", "%"))
If frmkereses.inp_terulet.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@terulet", CInt(frmkereses.inp_terulet.szoveg))
If frmkereses.tb_teruletig.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@teruletig", CInt(frmkereses.tb_teruletig.szoveg))
If frmkereses.inp_erdo.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@erdoter", CInt(frmkereses.inp_erdo.szoveg))
If frmkereses.tb_erdoig.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@erdoig", CInt(frmkereses.tb_erdoig.szoveg))
acces_cmd.Parameters.AddWithValue("@kivett", frmkereses.cmb_kivett.selecteditem)
acces_cmd.Parameters.AddWithValue("@jogallas", frmkereses.cmb_jogallas.selecteditem)
acces_cmd.Parameters.AddWithValue("@tulaj1", frmkereses.inp_tulaj.szoveg)
acces_cmd.Parameters.AddWithValue("@tulaj2", frmkereses.tb_tulaj2.szoveg)
acces_cmd.Parameters.AddWithValue("@tulaj3", frmkereses.tb_tulaj3.szoveg)
acces_cmd.Parameters.AddWithValue("@erdo", frmkereses.j_erdo.Checked)
Dim selstring As String = ""
acces_cmd.CommandText = "select * from fotabla where id>=0"
If frmkereses.inp_knev.szoveg <> "" Then selstring = selstring & " and knev like @knev"
If frmkereses.inp_hrsz.szoveg <> "" Then selstring = selstring & " and hrsz like @hrsz"
If frmkereses.inp_terulet.szoveg <> "" And frmkereses.tb_teruletig.szoveg = "" Then selstring = selstring & " and terulet>=@terulet"
If frmkereses.inp_terulet.szoveg = "" And frmkereses.tb_teruletig.szoveg <> "" Then selstring = selstring & " and terulet<=@teruletig"
If frmkereses.inp_terulet.szoveg <> "" And frmkereses.tb_teruletig.szoveg <> "" Then selstring = selstring & " and terulet between @terulet and @teruletig"
If frmkereses.inp_erdo.szoveg <> "" And frmkereses.tb_erdoig.szoveg = "" Then selstring = selstring & " and erdo>=@erdo"
If frmkereses.inp_erdo.szoveg = "" And frmkereses.tb_erdoig.szoveg <> "" Then selstring = selstring & " and erdo<=@erdoig"
If frmkereses.inp_erdo.szoveg <> "" And frmkereses.tb_erdoig.szoveg <> "" Then selstring = selstring & " and terulet between @erdo and @erdoig"
acces_cmd.CommandText = acces_cmd.CommandText & selstring & " order by id"
'acces_cmd.CommandText = "select * from fotabla where id>=0 and terulet>4000 order by id"
'MsgBox(acces_cmd.CommandText)
'DisplaySPInformation(acces_cmd)
'lekérdezési tábla előkészítése
acces_reader = acces_cmd.ExecuteReader

Az a gondom vele, hogy amikor a lekérdezést végrehajtatom (csak a terület értéket adom meg), azt írja ki, hogy típuseltérési hiba a feltételkifejezésben.

Az adatbázisban a terület mező egész, itt pedig a paraméter típusa is egész. Tehát mindennek jónak kellene lennie. Mégsem az. Miért??

Adatbázisként acces-t használok (most kivételesen csak a projekt kedvééért - felesleges lenne a postgresql).

(#1868) DerStauner válasza DerStauner (#1867) üzenetére


DerStauner
senior tag

a bolondját járatja velem az access. Vagy valamit nagyon benézek.

csak a knev-re hajlandó működni a where feltétel

még egy sima egyszerű stringre sem. Pedig a paraméterek értékei helyesek.

pl van az adatbázisban egy sor, ahol a tulaj1=valaki

ha csak ezt írom be a tulaj mezőbe, nem hoz ki semmit sem.

Miért van ez???

(#1869) martonx válasza DerStauner (#1868) üzenetére


martonx
veterán

ez olyan hosszú volt hogy el se olvastam, de látatlanban egy nagyon hülye tanács. Nem lehet, hogy a string-et nem tetted '-ok közé? Azaz where mező = valami helyett where mező = 'valami'-t kellene használni.
Nagyon gagyi ötlet, de nem ez lehet a gond?

Én kérek elnézést!

(#1870) DerStauner válasza martonx (#1869) üzenetére


DerStauner
senior tag

de pont erre használom a paramétereket

pl. acces_cmb.parameters.addwithvalue("@tulaj1",txtulaj1.text)

és akkor simán írhatom, hogy .... where tulaj1=@tulaj1

ez mindenhol működött eddig. úgy látszik, az access egy külön dió?

EDIT: ha felcserélem a knev és a hrsz paraméteradási sorokat, akkor meg a hrsz működik úgy, ahogy kell, a knev pedig nem.

miért??

[ Szerkesztve ]

(#1871) DerStauner válasza DerStauner (#1870) üzenetére


DerStauner
senior tag

hát ezért:

Instead of SQLClient has OleDB (what you call Access) no named parameters.

They are used in the order (sequence) they appear. Therefore you see often in sample code the question mark (?) used.

inkább összefűzögetem őket.

nem a legszebb, de hát ez van.

(#1872) martonx válasza DerStauner (#1871) üzenetére


martonx
veterán

hát igen, az access az egy külön világ. Mondjuk éppen ezért nem kellene access-t használni külső DB-ként. Arra az access-nél csak jobbak vannak.

Én kérek elnézést!

(#1873) DerStauner válasza martonx (#1872) üzenetére


DerStauner
senior tag

igen, ezt tudom, de erre a kis projektre nem érdemes egy normális db-t alkalmazni
egy postgresql-t elég nehéz belenyomni egy setup-ba, úgy, hogy click-click-re tökéletesen felmenjen
mert ha fel is megy, ezer gondja lehet, hogy miért nem kapcsolódik a program a szerverhez

(#1874) martonx válasza DerStauner (#1873) üzenetére


martonx
veterán

nem, de ott van például az SQL CE vagy az SQLite. Az access oledb-je ráadásul 64 bites környezetben nem is működik, office is kell, hogy legyen a gépen. Bármilyen kicsi is a projekt SQL CE-t (vagy sqlite-ot) érdemes használni, az access-t pedig tökéletesen mellőzni kellene.

Én kérek elnézést!

(#1875) DerStauner válasza martonx (#1874) üzenetére


DerStauner
senior tag

"Az access oledb-je ráadásul 64 bites környezetben nem is működik"

erre a projekt elején sajnos rá kellett jönnöm. de kiküszöbölhető volt.

"office is kell, hogy legyen a gépen"

ezt nem tudtam 100%-osan, nem elég csak a jet?

már nem is emlékszem, melyikkel, vagy az sql ce-vel, vagy az sqlite-tal már annak idején kísérletezgettem, amikor a témát kóstolgattam.

egyre emlékszem: rohadt lassú volt.

(#1876) martonx válasza DerStauner (#1875) üzenetére


martonx
veterán

Én mindhármat használtam, igaz minden esetben csak tényleg minimális adatmennyiséget (néhány tucat sor) tároltam bennük. Ennyiből én nem láttam sebesség különbséget köztük.

Én kérek elnézést!

(#1877) Speeedfire


Speeedfire
nagyúr

Kérdésem az lenne, hogy itt a 3. sorra miért dob nekem errort? A fájl létezik pedig. :F
Ha meg zárójelbe rakom a paramétereket a run-nál, akkor hibát dob.

WScript.Sleep 180000
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "C:\Program Files\wamp\wampmanager.exe",0,True
WScript.Sleep 120000
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "C:\Users\Speeedfire\AppData\Roaming\Dropbox\bin\Dropbox.exe",0,True
WScript.Sleep 300000
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "C:\Users\Speeedfire\AppData\Local\Microsoft\SkyDrive\SkyDrive.exe",0,True

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#1878) sztanozs válasza Speeedfire (#1877) üzenetére


sztanozs
veterán

Azért, mert ha zárójelbe rakod, akkor nem statementként működik, hanme function-ként, tehát vagy meghívni kell (asszem call-lal), vagy át kell adni a visszatérési értéket valaminek.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1879) Speeedfire válasza sztanozs (#1878) üzenetére


Speeedfire
nagyúr

Átírtam call-ra, most elfogadja a zárójelet, ellenben még mindig azt írja, hogy a fájl nem található. Ilyenkor mi van? Csináljak valahova egy parancsikont róla és azt linkeljem be neki? :F
Ahol nincs szóköz a mappa nevében, azt simán elindítja.

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#1880) sztanozs válasza Speeedfire (#1879) üzenetére


sztanozs
veterán

Szóközzel próbálj meg rövid pathnevet, avgy rakj az elejére és a végére dupla macskakörmöt:
"""c:\elérési útvonal\fájl.exe"""

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1881) Speeedfire válasza sztanozs (#1880) üzenetére


Speeedfire
nagyúr

Ezt a dupla macskakörmöt megpróbálom majd. :R
Egyelőre a parancsikonnal tökéletes. :)

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#1882) TIKI3


TIKI3
csendes tag

sziasztok. Visual basic 6ban programozunk, és olyan kérdésem lenne h ha van egy szöveges fájlom és abban számok vannak sortöréssel elválasztva, akkor ezt h tudnám egy tömbe beolvasni ? Előre is köszönöm.

(#1883) kotapeter


kotapeter
csendes tag

Kedves Fórumozók!

A segítségetekre lenn szükségem.
Visual Basicben fejlesztgetek egy iskolai szoftvert és kicsit megakadtam.
A program lényege a következő:
Egy Access adatbázisban lévő adatokat (diákok adatait: név osztály lakcim stb..) dolgozza fel.

Ezeket az adatokat szűrni szeretném.
Azt szeretném, hogy a felhasználó tudja hozzáadni a feltételeket.

Tehát, ha úgy szeretnék szűrni, hogy kollégista lányok a 12. osztályból, akkor legyen egy "Feltétel hozzáadása" gomb és ki tudom választani:
- Osztály: 12
- Lány: Igen
- Internátus: Igen

(Csináltam olyan szűrést, hogy minden adatot beraktam és a programon belül a textbox-okba be lehet írni a feltételeket, viszont ha üres a mező akkor megborul a rendszer..)

Ötleteiteket előre köszönöm!

[ Szerkesztve ]

(#1884) martonx válasza kotapeter (#1883) üzenetére


martonx
veterán

"Csináltam olyan szűrést, hogy minden adatot beraktam és a programon belül a textbox-okba be lehet írni a feltételeket, viszont ha üres a mező akkor megborul a rendszer.."

Ez így kiindulásnak nem rossz. Arra figyelj oda, hogy a feltételeidben kezeld le az üres textbox-ot is, mondjuk valahogy így (szintaktikailag lehet hibás a példám):

where
(mezo1 = textbox1.text or textbox1.text = '')
and (mezo2 = textbox2.text or textbox2.text = '')
stb...

Én kérek elnézést!

(#1885) DerStauner


DerStauner
senior tag

Sziasztok!

Két kérdésem lenne:

1. Csináltam egy egyedi combobox-ot. Minden jól működik, egyet kivéve: ha legördítem a combobox-ot, és úgy döntök, hogy nem választok ki semmit, hanem félrekattintok, akkor azt szeretném elérni, hogy tűnjön el a legördülő rész, úgy, mint a szokványos combobox-nál. Kép mellékelve. Próbáltam a lostfocus event-et felülírni, de nem jártam sikerrel. Nem is lép be a lostfocus-ba, csak akkor, miután már választottam egy item-et, bezárult a legördülő lista, és úgy lépek el.

2. Ha a combobox legördülő része túllóg a saját container-e határán, akkor a maradék már nem látszik. Hiába írtam neki, hogy bringtofront. Kép mellékelve.

[ Szerkesztve ]

(#1886) Lengyi


Lengyi
aktív tag

Üdv
Hátha találkozott már valamelyikőtök hasonlóval. Adott egy dokumentum, mely az alábbi módszerrel van védve. A kérdésem az lenne, hogy van e rá esély, hogy esetleg visszanyerjem vagy ez lehetetlen? Előre is köszönöm!

(#1887) martonx válasza Lengyi (#1886) üzenetére


martonx
veterán

Semmi sem lehetetlen, kérdés hogy megéri-e a befektetett pár évnyi processzoridőt a visszafejtés? ;]

Én kérek elnézést!

(#1888) Lengyi válasza martonx (#1887) üzenetére


Lengyi
aktív tag

Ne tartsd magadban! ;]

(#1889) sztanozs válasza Lengyi (#1888) üzenetére


sztanozs
veterán

1) leszeded a jelszót a vba projektről
2) bekapcsolod a debug módot
3) kézzel végignyálazod a kódot (és legalább a konstansokat visszaváltoztatod fix értékekre)

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1890) vilag


vilag
tag

Üdv!

Lenne egy olyan kérdésem, hogy valamely vezérlő RowSource-át be lehet e állítani úgy, hogy nem cella neveket adok meg hanem oszlop és sorszámokat?

Pl.: Combobox1.RowSource = "napló!a2:b5" helyett "napló!xy:xy", ahol x=oszlopszám és y=sorszám

Azért lenne szükséges, hogy ha esetleg a forrástáblába be akarok szúrni egy oszlopot vagy bővíteni akarom a sorok számát, akkor ne kelljen az egyes vezérlők tulajdonságait folyton kézzel áligatni.

Az már megvan, hogy a kívánt oszlop fejlécét megkeresve az adott táblában kinyerem az oszlop sorszámát az
Application.Worksheetfunction.Match-el.
Vagy olyan megoldás is érdekel, amelyben a keresés eredményeként nem oszlopszámot hanem oszlonevet kapok vissza.
Ez talán még jobb volna.

Lehetséges?
Ha igen, akkor hogyan?

Köszönöm!

Üdv, vilag

(#1891) martonx válasza vilag (#1890) üzenetére


martonx
veterán

Ahogy nézem a RowSource Range-et vár. Range-et pedig össze tudsz rakni kódból, úgy ahogy szeretnéd.

Én kérek elnézést!

(#1892) vilag válasza martonx (#1891) üzenetére


vilag
tag

Oszlopszámmal azt hogyan lehet megcsinálni, mert én már próbáltam néhányféleképpen.

Esetleg tudnád egy példával illusztrálni?

Üdv, vilag

(#1893) sztanozs válasza vilag (#1892) üzenetére


sztanozs
veterán

Dim r As Range
With Worksheets(munkalapneve)
Set r = .Range(.Cells(kezdosor, kezdooszlop), .Cells(utolsosor, utolsooszlop))
End With
ComboBox1.RowSource = r.Address

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1894) vilag válasza sztanozs (#1893) üzenetére


vilag
tag

Üdv!

Köszönöm a segítséget!
Holnap remélem eljutok odáig, hogy kis is tudom próbálni működik e a dolog, mert ma nemigen jut/jutott rá időm.

vilag

(#1895) Bobrooney


Bobrooney
senior tag

Sziasztok!

Az lenne a kérdésem (VBA), hogy van kb 40 CommandButton-öm aminek a Click eseményét szeretném kezelni, lehet ezt valahogy ciklusban szervezni, vagy külön külön kell megírni mindet?

Köszönöm előre is a válaszokat!

(#1896) sztanozs válasza Bobrooney (#1895) üzenetére


sztanozs
veterán

[link] (odaírjam, hogy google első?)

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1897) martonx válasza Bobrooney (#1895) üzenetére


martonx
veterán

Nem tudom mit szeretnél, de a külön megírást javaslom. Excel VBA-ja nagyon buta.
Ha cél, hogy bármelyik gomb megnyomására ugyanaz történjen, akkor programozottan talán meg tudod adni, hogy mindnek ugyanaz legyen az eseménye.

Én kérek elnézést!

(#1898) Bobrooney válasza sztanozs (#1896) üzenetére


Bobrooney
senior tag

Köszi! Ebből sokat nem értek, de bocsánat, hogy meg mertem kérdezni... :(((

martonx: Én is attól tartok az a megoldás marad, de találtam közben egy Funtion CallByName, talán ő lesz a nyerő. De még nem sikerült használnom.

(#1899) sztanozs válasza Bobrooney (#1898) üzenetére


sztanozs
veterán

Mármint mi a probléma? Megcsinálsz mindent az első válasz alapján:
1) Csinálsz egy classt (még a neve is oda van írva - TextBoxEventHandler)
2) Belemásolod az újonnan készített class-ba az első adag kódot
3) Belelépsz a formod kódszerkesztőjébe
4) Belemásolod a második kódot (persze, ha volt már valami kitöltve a UserForm_Initialise-ben, akkor hozzácsapod az elejéhez/végéhez)
5) A TextBoxEventHandlerclass kódszerkesztőjében a Private Sub m_oTextBox_Change() -et szerkeszted a kedved szerint...

Hol akadtál egyáltalán el?

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1900) martonx válasza sztanozs (#1899) üzenetére


martonx
veterán

mondjuk bennem is felmerült a kérdés, hogy vajon mi lehet az a probléma, amihez 40 commandbutton kell???

Én kérek elnézést!

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Visual Basic
Copyright © 2000-2024 PROHARDVER Informatikai Kft.