- Projektor topic
- Fejhallgató erősítő és DAC topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Akciókamerák
- A Linux megnégyszerezte magát a Steamen — a Microsoft ismét ígérget
- AMD vs. INTEL vs. NVIDIA
- AMD FX
- Kormányok / autós szimulátorok topikja
- Amlogic S905, S912 processzoros készülékek
- Milyen billentyűzetet vegyek?
-
1900 - 1801
3204 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1901 1900 - 1801 1800 - 1701 1700 - 1601 1600 - 1501 1500 - 1401 1400 - 1301 1300 - 1201 1200 - 1101 1100 - 1001 1000 - 901 900 - 801 800 - 701 700 - 601 600 - 501 500 - 401 400 - 301 300 - 201 200 - 101 100 - 1
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
martonx
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?
mondjuk bennem is felmerült a kérdés, hogy vajon mi lehet az a probléma, amihez 40 commandbutton kell???
-
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?
-
Bobrooney
senior tag
-
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. -
sztanozs
veterán
-
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!
-
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
-
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 -
vilag
tag
-
martonx
veterán
Ü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
Ahogy nézem a RowSource Range-et vár. Range-et pedig össze tudsz rakni kódból, úgy ahogy szeretnéd.
-
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
-
sztanozs
veterán
-
Lengyi
aktív tag
-
martonx
veterán
Semmi sem lehetetlen, kérdés hogy megéri-e a befektetett pár évnyi processzoridőt a visszafejtés?
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
Lengyi
aktív tag
-
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.
-
martonx
veterán
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!
"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... -
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!
-
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.
-
Speeedfire
félisten
-
sztanozs
veterán
Á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?

Ahol nincs szóköz a mappa nevében, azt simán elindítja.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""" -
Speeedfire
félisten
Á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?

Ahol nincs szóköz a mappa nevében, azt simán elindítja. -
sztanozs
veterán
Kérdésem az lenne, hogy itt a 3. sorra miért dob nekem errort? A fájl létezik pedig.

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,TrueAzé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.
-
Speeedfire
félisten
Kérdésem az lenne, hogy itt a 3. sorra miért dob nekem errort? A fájl létezik pedig.

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 -
martonx
veterán
"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.
É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.
-
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.
-
martonx
veterán
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 szerverheznem, 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.
-
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 -
martonx
veterán
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.
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.
-
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??
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.
-
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??
-
martonx
veterán
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???
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? -
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.ExecuteReaderAz 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).
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???
-
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.ExecuteReaderAz 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).
-
martonx
veterán
"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)
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![;]](//cdn.rios.hu/dl/s/v1.gif)
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. -
DerStauner
senior tag
É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."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)
-
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. -
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?
-
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). -
vilag
tag
Üdv!
Azt mondod megérettem a továbblépésre?
Mégis milyen fejlesztői környezetet javasolnál?
Üdv, vilag
-
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?![;]](//cdn.rios.hu/dl/s/v1.gif)
-
vilag
tag
-
martonx
veterán
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 = xlMaximizedJelenleg ú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
Úristen, ez a dolog kezd végtelenül elbutulni
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
vilag
tag
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 FunctionA 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 FunctionEz 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 = xlMaximizedJelenleg ú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
-
sztanozs
veterán
Ü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
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 FunctionA 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 -
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
-
sztanozs
veterán
Ü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????Saját funkciókat, és menüket menüket tedd XLA-ba, ne XLS-be.
-
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???? -
sztanozs
veterán
Végül is eddig úgy tűnik, hogy a következő verziónál maradok:
Workbook:
Private Sub Workbook_Open()
UserForm1.Show
End SubUserform:
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 SubPrivate Sub UserForm_Terminate()
Application.DisplayAlerts = True
Application.WindowState = xlNormal
End SubEz 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
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.
-
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 SubUserform:
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 SubPrivate Sub UserForm_Terminate()
Application.DisplayAlerts = True
Application.WindowState = xlNormal
End SubEz 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
-
sztanozs
veterán
A wb a Form1 egy lokális változója, amit inicializáláskor töltesz fel, ahogy - szintén ugyanabban a hszban - írtam is:
Kód - Workbook:
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Set UserForm1.wb = Me
UserForm1.Show
End Sub
Kód - Form:
Public wb As Objectwcount=0-ra:
Addin-moódba teszed végül a workbook-ot? Akkor tényleg nem jelenik meg a workbook-ok között.ThisWorkbook az igazi. Nem kell hackelni a lokális változóval - csak nem jutott az eszembe...

-
sztanozs
veterán
Üdv!
Csináltam magamnak egy kis időt és megnéztem a több munkafüzetes megoldást is.
A megoldás működik...csak fordítva

Igazából azt írtad, hogy ha csak egy munkafüzet van nyitva, akkor csak a munkafüzetet zárja be, és ha több akkor pedig az egész programot

De a problémát megoldottam.
A hiba a következő volt:Private Sub CommandButton1_Click()
Dim wcount As Integer
Dim twb As Workbook
wcount = 0
For Each twb In Application.Workbooks
wcount = wcount + 1
Next
If wcount = 1 Then helyette 0 kell
Application.Quit
Else
Application.DisplayAlerts = False
wb.Close False
End If
End SubValamint a wb.Close -ra hibát dob, így azt átírtam twb-re (de így sem működött), így átírtam ThisWorkbook-ra.
Meg annyi, hogy én ez után a hibajelzést újra true-ra állítottam, hogy a nyitva maradt munkafüzetekben működjön. Bár lehet, hogy ez csak adott munkafüzetre vonatkozik.
Az igazat megvallva ezt nem tudom.Mindent egybevéve, nagyon köszönöm a segítséget, most több programomba is beépítem a megoldást.
Üdv, vilag
A wb a Form1 egy lokális változója, amit inicializáláskor töltesz fel, ahogy - szintén ugyanabban a hszban - írtam is:
Kód - Workbook:
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Set UserForm1.wb = Me
UserForm1.Show
End Sub
Kód - Form:
Public wb As Objectwcount=0-ra:
Addin-moódba teszed végül a workbook-ot? Akkor tényleg nem jelenik meg a workbook-ok között. -
vilag
tag
Form properties:
Show Modal - False
Window Position - Center ScreenTöbb Workbookra - csak a formosat zárja be:
Kód - Workbook:
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Set UserForm1.wb = Me
UserForm1.Show
End SubKód - Form:
Public wb As Object
Private Sub CommandButton1_Click()
Dim wcount As Integer
Dim twb As Workbook
wcount = 0
For Each twb In Application.Workbooks
wcount = wcount + 1
Next
If wcount = 1 Then
Application.Quit
Else
Application.DisplayAlerts = False
wb.Close False
End If
End SubÜdv!
Csináltam magamnak egy kis időt és megnéztem a több munkafüzetes megoldást is.
A megoldás működik...csak fordítva

Igazából azt írtad, hogy ha csak egy munkafüzet van nyitva, akkor csak a munkafüzetet zárja be, és ha több akkor pedig az egész programot

De a problémát megoldottam.
A hiba a következő volt:Private Sub CommandButton1_Click()
Dim wcount As Integer
Dim twb As Workbook
wcount = 0
For Each twb In Application.Workbooks
wcount = wcount + 1
Next
If wcount = 1 Then helyette 0 kell
Application.Quit
Else
Application.DisplayAlerts = False
wb.Close False
End If
End SubValamint a wb.Close -ra hibát dob, így azt átírtam twb-re (de így sem működött), így átírtam ThisWorkbook-ra.
Meg annyi, hogy én ez után a hibajelzést újra true-ra állítottam, hogy a nyitva maradt munkafüzetekben működjön. Bár lehet, hogy ez csak adott munkafüzetre vonatkozik.
Az igazat megvallva ezt nem tudom.Mindent egybevéve, nagyon köszönöm a segítséget, most több programomba is beépítem a megoldást.
Üdv, vilag
-
PumpkinSeed
addikt
Van valami kötelező olvasmány ami segít egy kezdőnek? Mit ajánlotok? Most kezdett érdekelni ez a téma.

-
sztanozs
veterán
Hali!
Az ötleted sokat segített a modul tekintetében.
a Show Modal = False az jó volt, de Window Position tulajdonsága nincs a userformnak.Végül is úgy sikerült megoldani, hogy ötvöztem az általad javasoltat a saját ötlettel, azaz a Show Modal-t Falsra állítottam, illetve a userform initializáláshoz beírtam ezt:
Application.WindowState = xlMinimizedA kettő együtt végül is azt csinálja amit szerettem volna

A több Workbook-ra kínált megoldással még nem volt időm foglalatoskodni, mert a másik sürgősebb.
Azzal igazából azt szeretném megoldani, hogy amikor a userformon megnyomom a kilépés gombot, akkor megvizsgálja, hogy van e nyitva másik munkafüzet is vagy sem. Ekkor kettéválna a folyamat:
1. Az eredmény az, hogy nincs nyitva másik munkafüzet -> zárja be az egész excelt
2. Az eredmény az, hogy van nyitva másik munkafüzet -> csak ezt a munkafüzetet zárja be.A két különböző bezárást le tudom vezérelni, igazából a vizsgálatot nem tudtam megoldani.
Remélem az általad vázoltal meg tudom majd oldani.
Üdv, vilag
A hozzászólásomban a CommandButton1_Click() metódus pont azt csinálja, amit szeretnél...
-
vilag
tag
Form properties:
Show Modal - False
Window Position - Center ScreenTöbb Workbookra - csak a formosat zárja be:
Kód - Workbook:
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Set UserForm1.wb = Me
UserForm1.Show
End SubKód - Form:
Public wb As Object
Private Sub CommandButton1_Click()
Dim wcount As Integer
Dim twb As Workbook
wcount = 0
For Each twb In Application.Workbooks
wcount = wcount + 1
Next
If wcount = 1 Then
Application.Quit
Else
Application.DisplayAlerts = False
wb.Close False
End If
End SubHali!
Az ötleted sokat segített a modul tekintetében.
a Show Modal = False az jó volt, de Window Position tulajdonsága nincs a userformnak.Végül is úgy sikerült megoldani, hogy ötvöztem az általad javasoltat a saját ötlettel, azaz a Show Modal-t Falsra állítottam, illetve a userform initializáláshoz beírtam ezt:
Application.WindowState = xlMinimizedA kettő együtt végül is azt csinálja amit szerettem volna

A több Workbook-ra kínált megoldással még nem volt időm foglalatoskodni, mert a másik sürgősebb.
Azzal igazából azt szeretném megoldani, hogy amikor a userformon megnyomom a kilépés gombot, akkor megvizsgálja, hogy van e nyitva másik munkafüzet is vagy sem. Ekkor kettéválna a folyamat:
1. Az eredmény az, hogy nincs nyitva másik munkafüzet -> zárja be az egész excelt
2. Az eredmény az, hogy van nyitva másik munkafüzet -> csak ezt a munkafüzetet zárja be.A két különböző bezárást le tudom vezérelni, igazából a vizsgálatot nem tudtam megoldani.
Remélem az általad vázoltal meg tudom majd oldani.
Üdv, vilag
-
dkaro
őstag
Ja - és ahogy mondani szoktuk - nem ártana debogolni... Sok kérdést meg lehet vele spórolni:
0. Megoldás
1) azon a soron, ahol megáll, megnézed a változók értékét...1. megoldás
1) Problémás sorra rámész
2) F9 vagy sor elé (szürke sávra) kattintasz - Breakpoint
3) még egyszer futtatod a kódot és megnézed, mi a sorban található változók értéke - a problémák nagy része a helytelenül használt / inicializált változókból adódik.2. megoldás
1) Problémás sor elé beszúrsz egy sort:
On Error Resume Next
2) Problémás sor után beszúrod az alábbiakat:
If Err Then
MsgBox Err & vbCrLf & Err.Description
Err.Clear
End If
On Error Goto 0Szia!
Köszönöm a segítséget és a tippeket!
Tényleg az utolsó karakter volt a hiba.
Levágtam és lefut rendesen.
Köszi! -
sztanozs
veterán
Amúgy vsz amiatt csinál(hat)ja, mert a tömb utolsó eleme üres:
3 printert kiválsztva
strComputer tartalma ez lesz: cn=printer1%cn=printer2%cn=printer3%
az ebből generált tomb pedig ez:
(
"cn=printer1",
"cn=printer2",
"cn=printer3",
""
)Szóval nem ártana levágni az strComputer utolsó karakterét

Ja - és ahogy mondani szoktuk - nem ártana debogolni... Sok kérdést meg lehet vele spórolni:
0. Megoldás
1) azon a soron, ahol megáll, megnézed a változók értékét...1. megoldás
1) Problémás sorra rámész
2) F9 vagy sor elé (szürke sávra) kattintasz - Breakpoint
3) még egyszer futtatod a kódot és megnézed, mi a sorban található változók értéke - a problémák nagy része a helytelenül használt / inicializált változókból adódik.2. megoldás
1) Problémás sor elé beszúrsz egy sort:
On Error Resume Next
2) Problémás sor után beszúrod az alábbiakat:
If Err Then
MsgBox Err & vbCrLf & Err.Description
Err.Clear
End If
On Error Goto 0 -
sztanozs
veterán
A tomb(j)-ben rendesen van formázva a nyomtató neve?
GetObject("LDAP://srv/" & tomb(j) & ",ou=Printers,ou=SZE,dc=domain,dc=local")
a "rendesen" alatt a cn=csoportnév formát értem.Kódbeillesztésre ezt*
//kód
dim valami as Variant
valami = 1
// még kód
dim masvalami as Variant
masvalami = valami* Kattintható kódok és arcocskák, második sor, első gomb: [Programkód]
Amúgy vsz amiatt csinál(hat)ja, mert a tömb utolsó eleme üres:
3 printert kiválsztva
strComputer tartalma ez lesz: cn=printer1%cn=printer2%cn=printer3%
az ebből generált tomb pedig ez:
(
"cn=printer1",
"cn=printer2",
"cn=printer3",
""
)Szóval nem ártana levágni az strComputer utolsó karakterét

-
sztanozs
veterán
A tomb(j)-ben rendesen van formázva a nyomtató neve?
GetObject("LDAP://srv/" & tomb(j) & ",ou=Printers,ou=SZE,dc=domain,dc=local")
a "rendesen" alatt a cn=csoportnév formát értem.Kódbeillesztésre ezt*
//kód
dim valami as Variant
valami = 1
// még kód
dim masvalami as Variant
masvalami = valami* Kattintható kódok és arcocskák, második sor, első gomb: [Programkód]
-
dkaro
őstag
-
sztanozs
veterán
-
dkaro
őstag
-
martonx
veterán
Köszönöm a segítséget így nyert.
Most újabb hibánál akadtam el:
Sub RunScript
For i = 0 to (nyomtato.Options.Length - 1)
If (nyomtato.Options(i).Selected) Then
strComputer = strComputer & nyomtato.Options(i).Value & "%"
End If
Next
Dim tomb
Dim objGroup
Const ADS_PROPERTY_APPEND = 3
tomb = Split(strComputer,"%")
For j = 0 To (UBound(tomb))
Set objGroup = GetObject("LDAP://srv/"&tomb(j)&",ou=Printers,ou=SZE,dc=domain,dc=local")
objGroup.PutEx ADS_PROPERTY_APPEND, "member", Array("cn=user,ou=SZE,dc=domain,dc=local")
objGroup.SetInfo
next
End SubEz a script azt lenne hivatott csinálni, hogy a multiple selectben kiválasztott csoportokba berakja a user.
Sajnos 80005000-es hibaüzenetet kapok. Ettől függetlenül bekerül a user az összeskijelölt csoportba de a hibaüzenet zavar.
Természetesen rendszergazdaként futtatom a scriptet.
Köszönöm!debug mit mutat? Melyik sornál van a hiba?
Másrészt, ha végeredményben megcsinálja a script amit kell, a hibaüzenetet egy On Error Resume Next-el meg lehet kerülni. -
dkaro
őstag
Köszönöm a segítséget így nyert.
Most újabb hibánál akadtam el:
Sub RunScript
For i = 0 to (nyomtato.Options.Length - 1)
If (nyomtato.Options(i).Selected) Then
strComputer = strComputer & nyomtato.Options(i).Value & "%"
End If
Next
Dim tomb
Dim objGroup
Const ADS_PROPERTY_APPEND = 3
tomb = Split(strComputer,"%")
For j = 0 To (UBound(tomb))
Set objGroup = GetObject("LDAP://srv/"&tomb(j)&",ou=Printers,ou=SZE,dc=domain,dc=local")
objGroup.PutEx ADS_PROPERTY_APPEND, "member", Array("cn=user,ou=SZE,dc=domain,dc=local")
objGroup.SetInfo
next
End SubEz a script azt lenne hivatott csinálni, hogy a multiple selectben kiválasztott csoportokba berakja a user.
Sajnos 80005000-es hibaüzenetet kapok. Ettől függetlenül bekerül a user az összeskijelölt csoportba de a hibaüzenet zavar.
Természetesen rendszergazdaként futtatom a scriptet.
Köszönöm! -
sztanozs
veterán
Igazából csak annyit szeretnék elérni, hogy az excel megnyitása után azonnal csakis a userform látszódjon. Se a munkalap, se pedig az üres excel ablak ne látszódjon, csak és kizárólag a userform.
A táblába jelen esetben semmiféle kivétel-visszaírás nem történik!
Gyakorlatilag kódból fut minden.
Az egész csak annyit csinál, hogy gombnyomásra kiválasztott fájlt/fájlokat bizonyos helyre másol. Kilépéskori mentésre semmi szükség.
Rendben, valamint egy kilépés gomb.--------------------
A több munkafüzetes problémára esetleg valami megoldás?
Üdv, vilag
Form properties:
Show Modal - False
Window Position - Center ScreenTöbb Workbookra - csak a formosat zárja be:
Kód - Workbook:
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Set UserForm1.wb = Me
UserForm1.Show
End SubKód - Form:
Public wb As Object
Private Sub CommandButton1_Click()
Dim wcount As Integer
Dim twb As Workbook
wcount = 0
For Each twb In Application.Workbooks
wcount = wcount + 1
Next
If wcount = 1 Then
Application.Quit
Else
Application.DisplayAlerts = False
wb.Close False
End If
End Sub -
vilag
tag
Egyrészt, ha Excel Addint csinálsz, akkor nem látszik a worksheet, de tud futni kód.
Másrészt el tudod takni kicsibe (minimized) a worksheetet, de így is látható marad (és megszünteti a többi ablak "Maximized" állapotát
Harmadrészt megnyitás után is át tudod rakni Add-in típusba, viszpnt úgy nem fogod tudni menteni a save gombbal, csak formról.Add-in-be átrakni megnyitáskor:
Private Sub Workbook_Open()
Me.IsAddin = True
End SubMentést viszont kézzel kell csinálnod, mert addin típusú excel-t nem lehet xls/xlsm-be menteni, csak xla-ba. Így mentés előtt kézzel ki kell szedni az Addin property-t (ami láthatóvá teszi a sheet-et - de jól lekódolva csak a mentés idejére).
ThisWorkbook:
Private Sub Workbook_Open()
Me.IsAddin = True
Set UserForm1.App = Me
UserForm1.Show False
End Sub
Public Sub WB_Save()
Me.IsAddin = False
Me.Save
Me.IsAddin = True
End SubUserForm:
Public App As Object
Private Sub CommandButton1_Click()
App.WB_Save
End SubIgazából csak annyit szeretnék elérni, hogy az excel megnyitása után azonnal csakis a userform látszódjon. Se a munkalap, se pedig az üres excel ablak ne látszódjon, csak és kizárólag a userform.
A táblába jelen esetben semmiféle kivétel-visszaírás nem történik!
Gyakorlatilag kódból fut minden.
Az egész csak annyit csinál, hogy gombnyomásra kiválasztott fájlt/fájlokat bizonyos helyre másol. Kilépéskori mentésre semmi szükség.
Rendben, valamint egy kilépés gomb.--------------------
A több munkafüzetes problémára esetleg valami megoldás?
Üdv, vilag
-
sztanozs
veterán
Sziasztok!
Egy újabb problémával találtam szemben magamat.
A probléma az lenne, hogy egy excel dokumentumot úgy akarok megnyitni, hogy egyből a userform jelenjen meg, viszont (mivel ez nem túl nagy) a háttérben maga az extel tábla ne is látszódjon.
A googliban kutakodva meg is találtam amire szükségem van, de sajnos nem egészen úgy történik minden ahogyan én szeretném.
Már több megoldással is próbálkoztam de eddig csak félsikert értem el mindegyikkel.
1.Private Sub Workbook_Open()
Application.WindowState = xlMinimized
UserForm1.Show
End SubEbben az esetben a munkafüzet megnyitásakor az valóban a tálcára kerül, viszont a userform-al együtt.
2.
Private Sub CommandButton1_Click()
Application.WindowState = xlMinimized
UserForm1.Show
End SubEllenben ha egy úgy van megcsinálva, hogy a munkafüzetben van egy gomb, amihez ugyan ez a kód van beírva, akkor a gombnyomásra úgy működik ahogyan kell.
Csak ugye pont ezt szeretném elkerülni, mert semmi szükség még egy felesleges gombnyomásra.-----------------
Próbáltam már magából a userform initializálásból megcsinálni, de az eredmény ugyan az mint a 2. esetben.
Próbáltam már a userform initializálásból meghívni a kattintást, de az nem tetszett neki.
Próbáltam már az első programkódot megcserélni, azaz előbb nyitni a userformot aztán minimalizálni, de ekkor nem történik semmi.
Próbáltam már az első verzió után valahogyan aktiválni a munkafüzetet, de ez sem sikerült.Van esetleg valakinek valami használható megoldása?
------------------
Lenne még egy olyan kérdésem, hogy valahogyan ki lehet e nyerni, hogy az altív munkafüzeten kívül van e még nyitva másiki munkafüzet?
Kérdezem ezt azért, mert mondjuk egy kilépés gombnál akkor le tudnám vezérelni, hogy csak az aktív munkafüzetet zárja e be, vagy az egész excelt.
Így elkerülhető lenne, hogy a felhasználónál nyitva lévő (és esetleg mentetlen) más munkafüzetet is bezárjak. (Az application.displayalerts direkt falsra van állítva).Előre is köszönöm!
Egyrészt, ha Excel Addint csinálsz, akkor nem látszik a worksheet, de tud futni kód.
Másrészt el tudod takni kicsibe (minimized) a worksheetet, de így is látható marad (és megszünteti a többi ablak "Maximized" állapotát
Harmadrészt megnyitás után is át tudod rakni Add-in típusba, viszpnt úgy nem fogod tudni menteni a save gombbal, csak formról.Add-in-be átrakni megnyitáskor:
Private Sub Workbook_Open()
Me.IsAddin = True
End SubMentést viszont kézzel kell csinálnod, mert addin típusú excel-t nem lehet xls/xlsm-be menteni, csak xla-ba. Így mentés előtt kézzel ki kell szedni az Addin property-t (ami láthatóvá teszi a sheet-et - de jól lekódolva csak a mentés idejére).
ThisWorkbook:
Private Sub Workbook_Open()
Me.IsAddin = True
Set UserForm1.App = Me
UserForm1.Show False
End Sub
Public Sub WB_Save()
Me.IsAddin = False
Me.Save
Me.IsAddin = True
End SubUserForm:
Public App As Object
Private Sub CommandButton1_Click()
App.WB_Save
End Sub -
vilag
tag
Sziasztok!
Egy újabb problémával találtam szemben magamat.
A probléma az lenne, hogy egy excel dokumentumot úgy akarok megnyitni, hogy egyből a userform jelenjen meg, viszont (mivel ez nem túl nagy) a háttérben maga az extel tábla ne is látszódjon.
A googliban kutakodva meg is találtam amire szükségem van, de sajnos nem egészen úgy történik minden ahogyan én szeretném.
Már több megoldással is próbálkoztam de eddig csak félsikert értem el mindegyikkel.
1.Private Sub Workbook_Open()
Application.WindowState = xlMinimized
UserForm1.Show
End SubEbben az esetben a munkafüzet megnyitásakor az valóban a tálcára kerül, viszont a userform-al együtt.
2.
Private Sub CommandButton1_Click()
Application.WindowState = xlMinimized
UserForm1.Show
End SubEllenben ha egy úgy van megcsinálva, hogy a munkafüzetben van egy gomb, amihez ugyan ez a kód van beírva, akkor a gombnyomásra úgy működik ahogyan kell.
Csak ugye pont ezt szeretném elkerülni, mert semmi szükség még egy felesleges gombnyomásra.-----------------
Próbáltam már magából a userform initializálásból megcsinálni, de az eredmény ugyan az mint a 2. esetben.
Próbáltam már a userform initializálásból meghívni a kattintást, de az nem tetszett neki.
Próbáltam már az első programkódot megcserélni, azaz előbb nyitni a userformot aztán minimalizálni, de ekkor nem történik semmi.
Próbáltam már az első verzió után valahogyan aktiválni a munkafüzetet, de ez sem sikerült.Van esetleg valakinek valami használható megoldása?
------------------
Lenne még egy olyan kérdésem, hogy valahogyan ki lehet e nyerni, hogy az altív munkafüzeten kívül van e még nyitva másiki munkafüzet?
Kérdezem ezt azért, mert mondjuk egy kilépés gombnál akkor le tudnám vezérelni, hogy csak az aktív munkafüzetet zárja e be, vagy az egész excelt.
Így elkerülhető lenne, hogy a felhasználónál nyitva lévő (és esetleg mentetlen) más munkafüzetet is bezárjak. (Az application.displayalerts direkt falsra van állítva).Előre is köszönöm!
-
sztanozs
veterán
helló!
a social msdn-n eddig nem kaptam választ a kérdésemre, ezért itt is feltenném:
hogyan tudok egy datagridview cellához egy picturebox-ot hozzáadni? nem imagecell-re van szükségem, hanem egy textbox cell-re, aminek a jobb sarkában van egy picturebox. és ami fontos, hogy mindig látható legyen, tehát edit mode-ban is. egy custom column-t szeretnék létre hozni. ez lenne az első lépés (picturebox hozzáadása a cell-hez). de a neten nem találok semmit. a microsoft host control-os példáját próbáltam, nem az kell nekem.
tudjátok, minden control-nak van Controls tömbje, és akkor írhatom, hogy Controls.Add(picturebox). de úgy néz ki, hogy a cell-nek nincs.
Esetleg ha a cell teljes Paint-jét te valósítod meg...
-
martonx
veterán
helló!
a social msdn-n eddig nem kaptam választ a kérdésemre, ezért itt is feltenném:
hogyan tudok egy datagridview cellához egy picturebox-ot hozzáadni? nem imagecell-re van szükségem, hanem egy textbox cell-re, aminek a jobb sarkában van egy picturebox. és ami fontos, hogy mindig látható legyen, tehát edit mode-ban is. egy custom column-t szeretnék létre hozni. ez lenne az első lépés (picturebox hozzáadása a cell-hez). de a neten nem találok semmit. a microsoft host control-os példáját próbáltam, nem az kell nekem.
tudjátok, minden control-nak van Controls tömbje, és akkor írhatom, hogy Controls.Add(picturebox). de úgy néz ki, hogy a cell-nek nincs.
Ez most winforms, wpf, silverlight, vagy asp.net? Winforms-al nem hiszem, hogy tudnál valaha is ilyet csinálni.
-
DerStauner
senior tag
helló!
a social msdn-n eddig nem kaptam választ a kérdésemre, ezért itt is feltenném:
hogyan tudok egy datagridview cellához egy picturebox-ot hozzáadni? nem imagecell-re van szükségem, hanem egy textbox cell-re, aminek a jobb sarkában van egy picturebox. és ami fontos, hogy mindig látható legyen, tehát edit mode-ban is. egy custom column-t szeretnék létre hozni. ez lenne az első lépés (picturebox hozzáadása a cell-hez). de a neten nem találok semmit. a microsoft host control-os példáját próbáltam, nem az kell nekem.
tudjátok, minden control-nak van Controls tömbje, és akkor írhatom, hogy Controls.Add(picturebox). de úgy néz ki, hogy a cell-nek nincs.
-
Gülredy
tag
Megvan a megoldás (figyelmetlen voltam) a hozzászólásom tárgytalan!

-
Gülredy
tag
Már rájöttem mit rontottam el nem tudom miért a-t írtam oszlop indexnek

Most így néz ki eddig, működni működik csak az a baj hogy csak az utolsó számot írja bele de azt 20x!
Tehát beleraktam a program végét is (az exportálást) a for ciklusba, így beírja 20x de csak az utolsó számot! Nekem meg pl az A oszlop 20. eleméig mindet bele kellene íratni.For i = 1 To 20
strSQL = "INSERT INTO valuta (b)"
strSQL = strSQL & "VALUES (" & Cells(20, 1).Text & ")"Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff
Next iMit rontok el szerinted?
-
Gülredy
tag
strSQL = "INSERT INTO valuta (a,b,c)" - itt adod meg, hogy mely sql mezőkbe akarsz értéket beszúrni.
strSQL = strSQL & "VALUES (" cells(sor,oszlop).text ")" - kell két and jel természetesen, csak a billentyűzetem szar.Az egészet pedig egy for vagy while ciklussal annyirszor futtatod ahány sorod van.
For i = 1 To 20
strSQL = "INSERT INTO valuta (b)"
strSQL = strSQL & "VALUES (" & Cells(20, a).Text & ")"
Next iValahogy így?
A második sorra Application defined or Object Defined error-t nyom!
-
martonx
veterán
Sziasztok!
Egy olyan kérdésem lenne, hogy hogyan tudnék excel-ből sql adatbázsiba exportálni oszlopokat?
Van egy próbálkozásom de nem tudom hogy hogy tudnám megadni az oszlopokat mert mindenre hibát dob!
Dim strSQL As String
Dim strXLSource As String
Dim lngRecsAff As Long
strConn = strConn & "Provider=SQLOLEDB;Data Source=;"
strConn = strConn & "Initial Catolog=;Trusted_Connection=YES"
Set cn = New ADODB.connection
cn.Open "DRIVER={MySQL ODBC 5.1 Driver}" _
& ";SERVER=localhost" _
& ";DATABASE=test" _
& ";UID=root" _
& ";PWD=root" _
& ";OPTION=16427"
strXLSource = "c:\david\test\Munkafüzet1.xlsm;Extended Properties=Excel 12.0"
'
'Import by using OPENDATASOURCE.
'
'INSERT INTO
'(SQL Fields)
'
'SELECT
'
'FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source=$]
strSQL = "INSERT INTO valuta (a)"
strSQL = strSQL & "VALUES "
'strSQL = " INSERT INTO valuta VALUES "
'SELECT a, b, c FROM valuta"
'strSQL = strSQL & " ([a]) "
'strSQL = strSQL & " SELECT [a] "
'strSQL = strSQL & " FROM "
'strSQL = strSQL & " OPENDATASOURCE('valuta', 'Data Source=" & strXLSource & "')...[tbla$] "
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff
End SubValójában ezt az strSQL-es részt nem igazán értem hogy hogyan adhatnám meg!
Egy értéket meg tudok adni sql szintaxissal de nekem egész oszlop adatait kellene exportálni!strSQL = "INSERT INTO valuta (a,b,c)" - itt adod meg, hogy mely sql mezőkbe akarsz értéket beszúrni.
strSQL = strSQL & "VALUES (" cells(sor,oszlop).text ")" - kell két and jel természetesen, csak a billentyűzetem szar.Az egészet pedig egy for vagy while ciklussal annyirszor futtatod ahány sorod van.
-
Gülredy
tag
Sziasztok!
Egy olyan kérdésem lenne, hogy hogyan tudnék excel-ből sql adatbázsiba exportálni oszlopokat?
Van egy próbálkozásom de nem tudom hogy hogy tudnám megadni az oszlopokat mert mindenre hibát dob!
Dim strSQL As String
Dim strXLSource As String
Dim lngRecsAff As Long
strConn = strConn & "Provider=SQLOLEDB;Data Source=;"
strConn = strConn & "Initial Catolog=;Trusted_Connection=YES"
Set cn = New ADODB.connection
cn.Open "DRIVER={MySQL ODBC 5.1 Driver}" _
& ";SERVER=localhost" _
& ";DATABASE=test" _
& ";UID=root" _
& ";PWD=root" _
& ";OPTION=16427"
strXLSource = "c:\david\test\Munkafüzet1.xlsm;Extended Properties=Excel 12.0"
'
'Import by using OPENDATASOURCE.
'
'INSERT INTO
'(SQL Fields)
'
'SELECT
'
'FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source=$]
strSQL = "INSERT INTO valuta (a)"
strSQL = strSQL & "VALUES "
'strSQL = " INSERT INTO valuta VALUES "
'SELECT a, b, c FROM valuta"
'strSQL = strSQL & " ([a]) "
'strSQL = strSQL & " SELECT [a] "
'strSQL = strSQL & " FROM "
'strSQL = strSQL & " OPENDATASOURCE('valuta', 'Data Source=" & strXLSource & "')...[tbla$] "
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff
End SubValójában ezt az strSQL-es részt nem igazán értem hogy hogyan adhatnám meg!
Egy értéket meg tudok adni sql szintaxissal de nekem egész oszlop adatait kellene exportálni! -
martonx
veterán
Sziasztok!
Most a multiple selecttel akadtam el. Úgy olvastam hogy egy stringben tárolódik le az értéke a kiválasztott elemeknek vesszővel elválasztva. Adott ez a kód:
<html>
<head>
<title>My HTML application</title>
<HTA:APPLICATION
APPLICATIONNAME="My HTML application"
ID="MyHTMLapplication"
VERSION="1.0"/><script language="VBScript">
Sub RunScript
Dim strValaszt
strValaszt = ertek.value
document.write("<span>"&strValaszt&"</span>")End Sub
</script>
</head><body bgcolor="white">
<form>
<select multiple="multiple" size="3" name="ertek">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<input type="button" value="próba" onClick="RunScript">
</form></body>
</html>Csak az első kijelölt elem kerül bele a változóba. Hogy tudom belevarázsolni mindet?
Köszönöm!Sub RunScript
For i = 0 to (ertek.Options.Length - 1)
If (ertek.Options(i).Selected) Then
strComputer = strComputer & ertek.Options(i).Value & vbcrlf
End If
Next
Msgbox strComputer
End Sub -
dkaro
őstag
Sziasztok!
Most a multiple selecttel akadtam el. Úgy olvastam hogy egy stringben tárolódik le az értéke a kiválasztott elemeknek vesszővel elválasztva. Adott ez a kód:
<html>
<head>
<title>My HTML application</title>
<HTA:APPLICATION
APPLICATIONNAME="My HTML application"
ID="MyHTMLapplication"
VERSION="1.0"/><script language="VBScript">
Sub RunScript
Dim strValaszt
strValaszt = ertek.value
document.write("<span>"&strValaszt&"</span>")End Sub
</script>
</head><body bgcolor="white">
<form>
<select multiple="multiple" size="3" name="ertek">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<input type="button" value="próba" onClick="RunScript">
</form></body>
</html>Csak az első kijelölt elem kerül bele a változóba. Hogy tudom belevarázsolni mindet?
Köszönöm! -
stigma
addikt
-
martonx
veterán
Útközben sikerült megoldanom a problémát, bocsesz.
Amúgy lényegében a textbox-ok összerakása dátummá kellett, mivel ebből a dátumból építkezett tovább a moduljaim és maga a form ezért kellett volna hibakezelés rossz dátum esetén ne legyen gond, hanem inkább hibaleállás.Esetleg olyan kérdésem, lenne még, hogy lehet megoldani azt hogy a GetOpenFilename -el új ablak nyíljon meg ha egy fájlt kiválasztok?
Probléma az hogy Reflection-ben ami WRQ rendszer, VBA van aláépítve de egy átírtabb verzió, amiben nincs Dialog metódus hogy előhívjam csak GetOpenFilename van ami ha megnyitok egy fájt az elérési útját adja vissza.
fileToOpen = Application .GetOpenFilename("Text Files (*.txt), *.txt")sosem használtam Reflection X-et. Passz.
-
stigma
addikt
Amit írtál kódot nem tűnik rossznak, szóval nem igazán értem, hogy most mi is a bajod?
Hogy kell bezárni a form-ot, a msgbox után? Vagy mit szeretnél tudni?
Esetedben abszolút nem kell az on error-okkal szórakozni. Simán használod az IsDate függvényt, és ennek értelmében vagy hibát jelzel vissza a felhasználónak vag futtatod a kódot.Útközben sikerült megoldanom a problémát, bocsesz.
Amúgy lényegében a textbox-ok összerakása dátummá kellett, mivel ebből a dátumból építkezett tovább a moduljaim és maga a form ezért kellett volna hibakezelés rossz dátum esetén ne legyen gond, hanem inkább hibaleállás.Esetleg olyan kérdésem, lenne még, hogy lehet megoldani azt hogy a GetOpenFilename -el új ablak nyíljon meg ha egy fájlt kiválasztok?
Probléma az hogy Reflection-ben ami WRQ rendszer, VBA van aláépítve de egy átírtabb verzió, amiben nincs Dialog metódus hogy előhívjam csak GetOpenFilename van ami ha megnyitok egy fájt az elérési útját adja vissza.
fileToOpen = Application .GetOpenFilename("Text Files (*.txt), *.txt") -
martonx
veterán
Hali abban kérnék segítséget, hogy lenne egy kivételkezelés amihez help-et kérnék.
3 textbox egy formon amiben egy adott dátum nap,hónap, év eredményét adom meg, majd azt a későbbiekben felhasználom, átalakítva dátummá.
Ehhez kellene valami error kezelés, mégpedig ha rossz dátumot adok meg az adott metódus ne induljon el vagy dobjon ki hibát, elég lesz egy msgbox is.(itt az intervallumokat már lekezeltem)sub lista()
...
on error goto errorhandler:
datum= ev.text + "." + nap.text + "." + textbox1.text (Ebből lesz a dátum)
if not isdate(datum) then
msgbox("Nem dátum formátum")
on error goto 0 'Dobjon üzenetet, álljon le a form futtatása
elseif datum = " " then
msgbox("Üres")
on error goto 0 'Dobjon üzenetet, álljon le a form futtatása
else
folytatódjon a többi parancs lefutása
itt próbáltam "on error resume next"-el, de sajnos semmit nem csinál.errorhandler:
msgbox err.descreption ' ide leeht inkább switch case -el kellene error-t kezelnem
exit subSegítséget előre is köszönöm, bocs ha nagy hülyeséget kérdeztem csak eléggé fáradt vagyok és ma meg kéne oldanom a problémát.
Amit írtál kódot nem tűnik rossznak, szóval nem igazán értem, hogy most mi is a bajod?
Hogy kell bezárni a form-ot, a msgbox után? Vagy mit szeretnél tudni?
Esetedben abszolút nem kell az on error-okkal szórakozni. Simán használod az IsDate függvényt, és ennek értelmében vagy hibát jelzel vissza a felhasználónak vag futtatod a kódot. -
stigma
addikt
Hali abban kérnék segítséget, hogy lenne egy kivételkezelés amihez help-et kérnék.
3 textbox egy formon amiben egy adott dátum nap,hónap, év eredményét adom meg, majd azt a későbbiekben felhasználom, átalakítva dátummá.
Ehhez kellene valami error kezelés, mégpedig ha rossz dátumot adok meg az adott metódus ne induljon el vagy dobjon ki hibát, elég lesz egy msgbox is.(itt az intervallumokat már lekezeltem)sub lista()
...
on error goto errorhandler:
datum= ev.text + "." + nap.text + "." + textbox1.text (Ebből lesz a dátum)
if not isdate(datum) then
msgbox("Nem dátum formátum")
on error goto 0 'Dobjon üzenetet, álljon le a form futtatása
elseif datum = " " then
msgbox("Üres")
on error goto 0 'Dobjon üzenetet, álljon le a form futtatása
else
folytatódjon a többi parancs lefutása
itt próbáltam "on error resume next"-el, de sajnos semmit nem csinál.errorhandler:
msgbox err.descreption ' ide leeht inkább switch case -el kellene error-t kezelnem
exit subSegítséget előre is köszönöm, bocs ha nagy hülyeséget kérdeztem csak eléggé fáradt vagyok és ma meg kéne oldanom a problémát.
-
Gülredy
tag
Hogyan tudnám ezt a kódot úgy módosítani, hogy ne egy megadott intervallumot írjon ki pl A9
9-ig hanem mondjuk A9
9-től lefele az összes sort (balról jobbra) addig amíg van olyan cella amiben adat van?
Mert ha csak egy nagyobb számot írok a D-nek akkor egy csomó ;-t rak a fájlba, ami meg viszont kell, mert így kell kinéznie a fájban az adatoknak, mindnek külön sorba.
szerző1;cím1;kiadáséve1;kategória1;
szerző2;cím2;kiadáséve2;kategória2;
....Szóval amit beolvas a cellákból azok is ugyan ebben a sorrendben vannak, csak az nem megy hogy ne csak egy sort olvasson be, hanem annyi sort amennyiben adat van!
Private Sub CommandButton3_Click()
Dim ce As Range
Open "D:\export_from_xls.txt" For Append As #1
fileba = ""
For Each ce In Range("A9:D9")
fileba = fileba & ce.Value & ";"
Next ce
Print #1, fileba
Close #1
End Sub -
martonx
veterán
Nagyon köszönöm ez pont úgy működik ahogy kell!
Ráadásul ha egymás után veszek fel két rekordot akkor szépen külön sorba is rakja!
Úgyhogy nagyon eltaláltad a működését!
Nem kell levágnom a végéről se semmit mert ez így van jól!Annyit kérdeznék még, hogy a működését jól értelmezem-e?
készítünk egy fileba nevű változót ami üres lesz
Lesz egy for ciklus az első elemtől az utolsó lista elemig.
majd itt ez a rész nem teljesen tiszta, hogy a fileba nevű változóna értékül adjuk önmagát, és ahhoz hozzáfűzzük a lista i-edik elemét + ;De ettől miért marad egysorban?

azért marad egy sorban, mert egyben adjuk át neki az összefűzött értékeket.
-
Gülredy
tag
Az előbbi feleadatot befejeztem, amely egy windows form-on végzendő feladat volt.
Most egy exlcel worksheet-en végzett feladathoz kellene segítség. Ilyen macro-s dolgokat még nem tanultam soha, de ez a kiadott feladat.
Szóval a problémám egyszerű, mégsem találok rá megoldást.
Van az excel táblázaton egy combobox, amelynek értéket kell adni. Ezt meg is tudom tenni, de csak úgy működik az én verzióm, ha a visual basic editorból lefuttatom. De így a felhasználó meg nem fogja látni a három variációt, csak ha elindítaná a programot.
Próbáltam a general részbe berakni, de úgy meg akárhányszor futtatom a programot mindig hozzáadja a három kategóriát a kategória combobox-hoz így nem három lesz belőlük hanem annyiszor három ahányszor futtatom a programot!Szóval itt a kód. (így nem látja a user megnyitáskor a három kategóriát, csak ha F5el lefuttatja visual basicből)
Private Sub Worksheet_Activate()
With ActiveSheet.ComboBox1
.Clear
.AddItem ("Regény")
.AddItem ("Verseskötet")
.AddItem ("Folyóirat")
End With
End SubHogyan tudnám a combobox-nak értékül adni ezt a három kategóriát úgy, hogy az már a dokumentum megnyitásakor benne legyen. Ha lehet kerülném a cellákból betöltött adatkénti megadást. De ha nincs más...
Már tárgytalan!
-
Gülredy
tag
Az előbbi feleadatot befejeztem, amely egy windows form-on végzendő feladat volt.
Most egy exlcel worksheet-en végzett feladathoz kellene segítség. Ilyen macro-s dolgokat még nem tanultam soha, de ez a kiadott feladat.
Szóval a problémám egyszerű, mégsem találok rá megoldást.
Van az excel táblázaton egy combobox, amelynek értéket kell adni. Ezt meg is tudom tenni, de csak úgy működik az én verzióm, ha a visual basic editorból lefuttatom. De így a felhasználó meg nem fogja látni a három variációt, csak ha elindítaná a programot.
Próbáltam a general részbe berakni, de úgy meg akárhányszor futtatom a programot mindig hozzáadja a három kategóriát a kategória combobox-hoz így nem három lesz belőlük hanem annyiszor három ahányszor futtatom a programot!Szóval itt a kód. (így nem látja a user megnyitáskor a három kategóriát, csak ha F5el lefuttatja visual basicből)
Private Sub Worksheet_Activate()
With ActiveSheet.ComboBox1
.Clear
.AddItem ("Regény")
.AddItem ("Verseskötet")
.AddItem ("Folyóirat")
End With
End SubHogyan tudnám a combobox-nak értékül adni ezt a három kategóriát úgy, hogy az már a dokumentum megnyitásakor benne legyen. Ha lehet kerülném a cellákból betöltött adatkénti megadást. De ha nincs más...
-
Gülredy
tag
Nagyon köszönöm ez pont úgy működik ahogy kell!
Ráadásul ha egymás után veszek fel két rekordot akkor szépen külön sorba is rakja!
Úgyhogy nagyon eltaláltad a működését!
Nem kell levágnom a végéről se semmit mert ez így van jól!Annyit kérdeznék még, hogy a működését jól értelmezem-e?
készítünk egy fileba nevű változót ami üres lesz
Lesz egy for ciklus az első elemtől az utolsó lista elemig.
majd itt ez a rész nem teljesen tiszta, hogy a fileba nevű változóna értékül adjuk önmagát, és ahhoz hozzáfűzzük a lista i-edik elemét + ;De ettől miért marad egysorban?

-
martonx
veterán
Sziasztok!
Remélem jó helyre írok, Excel-es visual basic-ből kérnék egy apró segítséget.Egy nagyobb feladat részfeladata lenne, hogy egy listbox-ba bevitt tartalmat (gomb nyomásra bevitt tartalmat) egy export gomb nyomására egy txt fájlba kell exportálni.
Ez meg is lenne, de megvan adva hogy milyen formátumba kell exportálni, az én megoldásommal pedig ugyan úgy exportálja ahogy a listában van!Szóval itt az én kódom:
Private Sub CommandButton_export_Click()
Dim i As Long
Open "D:\export.txt" For Output As #1
For i = 0 To lista.ListCount - 1
lista.Selected(i) = True
Print #1, lista.List(lista.ListIndex)
Next
Close #1
End SubEz így exportálja nekem a listát fájlba: (az adatokat csak találomra írtam)
Márai
Füveskönyv
1980
Verseskötet
----------De ilyen módon kellene beírnia a fájlba:
szerző1;cím1;1999;RegényHogyan tudnám a jelenlegi kódomat módosítani ahhoz hogy formázott legyen? Vagy teljesen más kódot kellene használni hozzá?
Régen tanultam már a visual basic-et...Előre is köszönöm a válaszokat!
fileba = ""
For i = 0 To lista.ListCount - 1
lista.Selected(i) = True
fileba = fileba & lista.List(lista.ListIndex) & ";"
Next
Print #1, filebaAnnyiból nem tökéletes, hogy a legutolsó ;-t le kell majd hagynod a végéről. De valamit te is csinálj

-
Gülredy
tag
Sziasztok!
Remélem jó helyre írok, Excel-es visual basic-ből kérnék egy apró segítséget.Egy nagyobb feladat részfeladata lenne, hogy egy listbox-ba bevitt tartalmat (gomb nyomásra bevitt tartalmat) egy export gomb nyomására egy txt fájlba kell exportálni.
Ez meg is lenne, de megvan adva hogy milyen formátumba kell exportálni, az én megoldásommal pedig ugyan úgy exportálja ahogy a listában van!Szóval itt az én kódom:
Private Sub CommandButton_export_Click()
Dim i As Long
Open "D:\export.txt" For Output As #1
For i = 0 To lista.ListCount - 1
lista.Selected(i) = True
Print #1, lista.List(lista.ListIndex)
Next
Close #1
End SubEz így exportálja nekem a listát fájlba: (az adatokat csak találomra írtam)
Márai
Füveskönyv
1980
Verseskötet
----------De ilyen módon kellene beírnia a fájlba:
szerző1;cím1;1999;RegényHogyan tudnám a jelenlegi kódomat módosítani ahhoz hogy formázott legyen? Vagy teljesen más kódot kellene használni hozzá?
Régen tanultam már a visual basic-et...Előre is köszönöm a válaszokat!
-
dkaro
őstag
Hát megvan télleg triviális. Lemaradt egy ' a > előtt.

-
dkaro
őstag
Akkor újabb kérdésem lenne (gondolom lesz még
:
Adott ez a script részletem:
Célja az lenne hogy kiiratom a Printers ouban található Csoportokat (mind univerzális biztonsági csoport)
<script language="vbs">
Set objOU = GetObject("LDAP://srv0101vg/ou=Printers,ou=cég,dc=varosgazda,dc=hu")
objOU.Filter = Array("group")
For Each objGroup in objOU
document.write("<option value='"&objGroup.Name&">"&objGroup.Name&"</option>")
Next
</script>Nos ki is listázza a csoportokat de nem mindet. Csak 13at a 29ből hibát pedig nem kapok.
Mit kéne máshogy írnom?
Köszönöm!---
Szerk:
Pontosítanék. Minden 2kat ír csak ki. Ez vmi triviális hiba lehet.
-
dkaro
őstag
Köszönöm!!!
-
martonx
veterán
Sziasztok!
Remélem jó helyre írok. VBS HTA script írásban szeretnék segítséget kérni.
A célom:
Egy tömbbe kigyűjtöttem egy OU Groupjait.
Szeretném ezeket a groupokat html formban dinamikusan megjeleníteni.
Tehát pl ha x a mérete a tömbnek akkor generáljon le x radiogombot így, hogy:
radiogomb1 értéke tomb(0)
radiogomb2 értéke tomb(1)
stb...Tudom, hogy kicsit összetettebb de remélem valaki tud segíteni.
Azt fontos megjegyezni, hogy nem egész 2 napja "foglalkozgatok" vbssel.
Előre is köszönöm a segítséget!
dkaroSzia!
Egy for ciklussal bejárod a tömböt, és mondjuk egy div-be (ami a DataArea) belerakod a rádió gombokat.
strHTML = strHTML & "<input id=" & intButtonCount & " type="radio value= " & tomb(i) & ">"
És az összeállított rádió gombokat így rakod bele a div-be:
DataArea.InnerHTML = strHTML -
dkaro
őstag
Sziasztok!
Remélem jó helyre írok. VBS HTA script írásban szeretnék segítséget kérni.
A célom:
Egy tömbbe kigyűjtöttem egy OU Groupjait.
Szeretném ezeket a groupokat html formban dinamikusan megjeleníteni.
Tehát pl ha x a mérete a tömbnek akkor generáljon le x radiogombot így, hogy:
radiogomb1 értéke tomb(0)
radiogomb2 értéke tomb(1)
stb...Tudom, hogy kicsit összetettebb de remélem valaki tud segíteni.
Azt fontos megjegyezni, hogy nem egész 2 napja "foglalkozgatok" vbssel.
Előre is köszönöm a segítséget!
dkaro -
vilag
tag
Bár a mi rendszergazdánk a 90%-ba esik (nem ügyes annyira), azért meg is kell védenem, mert csak mellékesen rendszergazda, emellett ugyan olyan ügyintéző mint bármelyikünk a cégnél. A nemakarás, így betudható a rengeteg ügynek.
Mondjuk ha sokat macerálom valami miatt általában kötélnek áll

-
vilag
tag
Domain van, vagy csak egy csomó gép workgroupban?
Domainban simán berakjátok domain policy-be a telepítést és következő újrainduláskor felmegy. Workgroupra meg csak kell csinálni egy command file-t ami végigfut a hálózaton, fellép az összes gépre és felmásolja/elindítja a telepítőt (vagy csak bemásolod a silent telepítést indító cmd-t a startup-ba - ami ha fent van már letörli magát).Van esetleg valami hasonló command file mintád?
Valami hasonlót kerestem igazából. Bár sejtem, hogy egy file ikoncserét nemigen lehet belőle levezérelni.
Már az is haladás volna ha egy asztali parancsikon elhelyezést le tudnék vele vezérelni.Egyébként van domain, szerver meg minden Istennyila.
Azért az vicces lenne ha a rendszergazda gépén is megjelenne a kis telepítőablak

-
martonx
veterán
Sajnos akkor mindkét megoldást (VB6, .NET) el kell vetnem, mert még ha tudom is a rendszergazda jelszót, nem lesz alkalmam feltenni minden gépre.
Még amik helyben vannak, azok csak-csak, mert mondjuk a kora reggeli órákban megcsinálom mikor nincs itt senki, de a másik két központban lévő gépekre nem tudom feltenni. Elmenni nem tudok (na meg nem is akarok), a gépneveket meg nem tudom.Innentől meg a rendszergazda jóindulatán múlik, hogy hajlandó e ennyit vacakolni....
de ahogy ismerem első szóra biztos nem csinálja meg.mondjuk egy .Net telepítés, az kb. két kattintás egy .msi-re.
Ha meg picit ügyesebb a rendszergazda, akkor automatizálja.
Bár a rendszergazdákat ismerve 90%, hogy se nem ügyes, se dolgozni nem akar. -
sztanozs
veterán
Sajnos akkor mindkét megoldást (VB6, .NET) el kell vetnem, mert még ha tudom is a rendszergazda jelszót, nem lesz alkalmam feltenni minden gépre.
Még amik helyben vannak, azok csak-csak, mert mondjuk a kora reggeli órákban megcsinálom mikor nincs itt senki, de a másik két központban lévő gépekre nem tudom feltenni. Elmenni nem tudok (na meg nem is akarok), a gépneveket meg nem tudom.Innentől meg a rendszergazda jóindulatán múlik, hogy hajlandó e ennyit vacakolni....
de ahogy ismerem első szóra biztos nem csinálja meg.Domain van, vagy csak egy csomó gép workgroupban?
Domainban simán berakjátok domain policy-be a telepítést és következő újrainduláskor felmegy. Workgroupra meg csak kell csinálni egy command file-t ami végigfut a hálózaton, fellép az összes gépre és felmásolja/elindítja a telepítőt (vagy csak bemásolod a silent telepítést indító cmd-t a startup-ba - ami ha fent van már letörli magát).
Új hozzászólás Aktív témák
-
1900 - 1801
3204 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1901 1900 - 1801 1800 - 1701 1700 - 1601 1600 - 1501 1500 - 1401 1400 - 1301 1300 - 1201 1200 - 1101 1100 - 1001 1000 - 901 900 - 801 800 - 701 700 - 601 600 - 501 500 - 401 400 - 301 300 - 201 200 - 101 100 - 1
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Projektor topic
- Fejhallgató erősítő és DAC topik
- Anime filmek és sorozatok
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- gban: Ingyen kellene, de tegnapra
- iPhone topik
- Akciókamerák
- BestBuy topik
- Mibe tegyem a megtakarításaimat?
- A Linux megnégyszerezte magát a Steamen — a Microsoft ismét ígérget
- További aktív témák...
- Keresünk iPhone 13/13 Mini/13 Pro/13 Pro Max
- Apple AirPods Max Midnight ! Új Bontatlan / 2028.03.16-ig Garancia!
- Apple iPhone 17e 256GB Bontatlan Független Összes Szín / 27% áfás ár
- Telefon felvásárlás!! Samsung Galaxy S23/Samsung Galaxy S23+/Samsung Galaxy S23 Ultra
- Eladó ÚJ TCL 501 2/32GB fekete / 12 hó jótállás
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


![;]](http://cdn.rios.hu/dl/s/v1.gif)




9-ig hanem mondjuk A9


