Új hozzászólás Aktív témák
-
vilag
tag
válasz
ArchElf #1696 üzenetére
Üdv!
Úgy tűnik, hogy az automatikus számolás okozza ezt a fölösleges futkározást.
Már csak abban legyetek a segítségemre, hogy magyarázzátok el, hogy ennek a bekapcsolása miért is okozza azt, hogy folyton lefut a change.Volna még egy olyan kérdésem, hogy a userform jobb felső sarkában található "X" gombot le lehet e valahogyan tiltani, mert az terminate-re futtatja a kódot, amin viszont már nem tudok megállítani, meg egyébként is okoz nekem más problémákat.
Van nekem egy másik problémám is, bár könnyen meglehet, hogy nem kapcsolódik szorosan a VBA-hoz.
A probléma a fájl biztonsági beállításoknál van. A már említett programocskát többen is használjuk, de azt szeretném elérni, hogy írásra csak bizonyos felhasználóknak legyen elérhető. Eddig még nincs is gond, csak az a baj, hogy az egyik felhasználó akinek írásra is engedélyezve van a fájl, valahogyan mindig saját tulajdonba veszi a fájlt (mikor ráment) és a biztonsági beállítások elszállnak, aminek egyenes következménye, hogy megint mindenki hozzáfér írásra.Tud nekem ebben valaki segíteni?
Üdv, vilag
-
vilag
tag
válasz
martonx #1692 üzenetére
Van egy rutin ami egy gomb megnyomására az egyes vezérlők tartalmát elkezdi egyesével kiirkálni az excel tábal megfelel cellájába.
Most azt vettem észre, hogy a két évszámos vezérlő (CB4 és CB7) change minden egyes alkalommal lefut amikor egy-egy érték kiíródik az excel tábla.
Esetleg ez megvilágosít nálad valamit? -
vilag
tag
válasz
martonx #1692 üzenetére
Ezt már komolyan nem hiszem el.
Próbálok egy másik problémát orvosolni, erre azt veszem észre, hogy ugyan oda lyukadok ki, hogy a már említett vezérlő change elkezd futni.
Épp az initializálást futtatja, aztán ennél a sornál átvált a CB7 Change-re:Sheets("napló").Range("j2").Value = Sheets("irszam").Range("a1").End(xlDown).Row
Most mond meg nekem, hogy ez hogy a búbánatos francban váltja ki a CB7 Change lefutását????
-
vilag
tag
válasz
martonx #1692 üzenetére
Abban én is biztos vagyok, hogy valami nagyon egyszerű megoldása lesz a dolognak (ha egyszer megtalálom).
Egyébként ha tudnád, hogy a debuggolást már hányszor játszottuk végig...
Egyszerűen értetlenül állok a dolog előtt.Azért ha esetleg mégis megtalálom a megoldást megírom, hátha érdekel.
-
martonx
veterán
-
vilag
tag
válasz
martonx #1690 üzenetére
Bocs, hogy értetlen vagyok, de nem tanultam egyetemen a programozást.
Egyébként meg Te sem értetted amit én írtam, mert nincs hibaüzenet, csak hibás működés amit ugyan elhárítottam (egy változó bevezetésével), csak az okát szeretném megtudni.
A Combobox4 közvetlenül nincs excel mezőhöz kötve (már ha egyáltalán excel mezőre gondolsz). Csak közvetetten van excelmezőhöz kötve. Egy dátum évszáma, tehát a CB4,CB5,CB6 mezők értéke összefűzésre kerül és csak ez után íródik a tábla egy cellájába.
A probléma csak annyi, hogy ez esetben ez nem történik meg, mert az tök más folyamat ami ettől független.Még egy dolog jutott eszembe. Az évszám a userform initializálásakor kap automatikusan értéket a trim(str(Year(date))) segítségével. Ez indukálhatja eseteg a change lefutását valamilyen módon?
-
martonx
veterán
nem értetted amit írtam. Nem érdekel a kódod. A hibaüzenet esetleg érdekelt volna, bár az excel elég semmit mondó üzeneteket ad vissza.
Egy dolog érdekel, hogy a combobx4 be van-e kötve valamelyik mezőhöz, és ha igen melyikhez.
Mert ez lenne a legépeszűbb magyarázata a change event kiváltásának.
Bár látom feleslegesen koptatom a billentyűzetet. -
vilag
tag
válasz
martonx #1681 üzenetére
De tudomásom szerint csak excelbe történő kiírás folyik, onnan visszaolvasás nem. Legalább is ennél a folyamatnál nem. Tehát nem tudok rájönni, hogy mi indokolja egy elvileg nem érintett combobox change-ének lefutását. Mitől változna az értéke????
Csak egy nyamvad évszám van benne.
Akkor a kódrészletek:
A gomb megnyomásakor ez fut le:
Private Sub CommandButton6_Click() 'Partner rögzítése a gyakori partnerek listájára
If ComboBox12.Text = "" Or ComboBox2.Text = "" Or TextBox3.Text = "" Or ComboBox1.Text = "" Then
hiba = MsgBox("Valamely címzéshez szükséges adat hiányzik, kérlek ellenőrizd!", 16, "Címadat hiba")
Exit Sub
End If
üzenet = MsgBox("Biztosan rögzíteni akarod a partnert a gyakori partnerek listájára az alábbi adatokkal?" + Chr(13) + Chr(13) + _
"Név:" + Chr(9) + Chr(9) + ComboBox12.Text + Chr(13) + _
"Település:" + Chr(9) + ComboBox2.Text + Chr(13) + _
"Utca, hászám:" + Chr(9) + TextBox3.Text + Chr(13) + _
"Irányítószám:" + Chr(9) + ComboBox1.Text, 36, "Partnerrögzítés")
If üzenet = 2 Then
Exit Sub
Else
kileptet = False
partnerujsor = ThisWorkbook.Worksheets("Partnerek").Range("a2").End(xlDown).Row + 1
ThisWorkbook.Worksheets("Partnerek").Range("a" + Trim(Str(partnerujsor))).Value = Trim(Str(partnerujsor - 1))
ThisWorkbook.Worksheets("Partnerek").Range("b" + Trim(Str(partnerujsor))).Value = ComboBox12.Text
ThisWorkbook.Worksheets("Partnerek").Range("c" + Trim(Str(partnerujsor))).Value = ComboBox2.Text
ThisWorkbook.Worksheets("Partnerek").Range("d" + Trim(Str(partnerujsor))).Value = TextBox3.Text
ThisWorkbook.Worksheets("Partnerek").Range("e" + Trim(Str(partnerujsor))).Value = ComboBox1.Text
kileptet = True
End If
End Subahol kiléptet=a probléma miatt bevezetett változó
A futkározó vezérlő change-e:
Private Sub ComboBox4_Change() 'postázás éve
If kileptet = False Then Exit Sub
If eloszor = True Then Exit Sub
CommandButton3.Enabled = True
CommandButton2.Enabled = True
If ComboBox4.MatchFound = False And Len(ComboBox4.Value) > 0 Then
hiba = MsgBox("A postázás éve négy jegyű és nem térhet el az aktuális évtől egy évvel többel!", vbCritical + vbOKOnly, "Dátum beviteli hiba")
ComboBox4.ListIndex = -1
Exit Sub
End If
If ComboBox4.ListIndex = -1 Then Exit Sub
postev = ComboBox4.Value
If Int(postev / 4) <> postev / 4 Then szoko = False Else szoko = True
If postho = "02" Then
If szoko = True Then
ComboBox6.RowSource = "napló!h2:h30"
If ComboBox6.ListIndex = -1 Then
ComboBox6.ListIndex = 28
postnap = ComboBox6.Text
End If
Else
ComboBox6.RowSource = "napló!h2:h29"
If ComboBox6.ListIndex = -1 Then
ComboBox6.ListIndex = 27
postnap = ComboBox6.Text
End If
End If
End If
End SubMint látható az első részletben szó sem esik a Combobox4-ről.
Így esetleg valami ötlet??? -
Messss
csendes tag
ÜDV!
Újabb kérdésem lenne.
Létrehoztam 2 objektumot, az egyikbe nyitottam egy excel fájlt, ezt tudom is kezelni, nincs vele gond. A másikba pedig egy word-öt.
A Wordbe beszúrtam egy szövegmezőt text1 névvel. Egy formról szeretnék ennek értéket adni.Wrd = CreateObject("Word.Application")
Wrd.Visible = True
Wrd.Documents.Open("F:\Szerzodes.doc")
Wrd.Documents.text1 = TextBox1.Text 'itt a hiba.... -
ArchElf
addikt
document.getElementById("orszagok").value
RadioButton esetén is működik, ha van ID property-je... Nálad nem volt.Amúgy meg RadioButtonra ott a
document.getElementsByName("szin")
Ezen egy foreach-el végignyomulsz, és megnézed melyik value melett igaz a checked property...AE
-
Oly
őstag
válasz
martonx #1683 üzenetére
Azt hittem, hogy van jobb lehetőség is.
Mivel csak 2-3 button van, így nem gázos... KösziMás:
Function mailsender()
Dim objOutlook, objMail, oAddSig
Set objOutlook = CreateObject("Outlook.Application")
objOutlook.Session.Logon
Set objMail = objOutlook.CreateItem(olMailItem)
Set objOutlook = objMail.GetInspector
With objMail
.SentOnBehalfOfName = "from"
.To = "to"
.Cc = "cc"
.Subject = "Subject"
.Body = "Body"
.Display
End With
Set objOutlook = Nothing
Set objMail = Nothing
End FunctionHogyan tudnám megadni, hogy a felugró levélhez már szúrja be az alapértelmezett Outlook aláírást is?
Amiket találtam (pl: [link]) azért nem jó, mert több gépen fogják használni, más-más aláírási filenévvel.Találtam egy ilyet is, de ez meg nem akar működni HTML-be ültetve.
-
Oly
őstag
Sziasztok
Van egy HTML űrlapom, amit VBA (vagyVBS... mittomén
) dolgoz fel.
Nem találom, hogy miként tudnék dolgozni a kijelölt radio button értékével.<label>
<input type="radio" name="szin" value="Fekete">
Fekete </label>
<br>
<label>
<input type="radio" name="szin" value="Fehér">
Fehér </label>Hogyan tudnám változóként kezelni, hogy mit jelölünk ki?
Select esetén működik a document.getElementById("orszagok").value
<label for="orszagok">Válasszon országot:</label>
<select name="orszagok" id="orszagok">
<option value="HU">Magyarország</option>
<option value="AT">Ausztria</option>
<option value="BE">Belgium</option>
<option value="BG">Bulgária</option>
</select>Vannak olyan esetek, amikor a radio Button jobb lenne.
Előre is köszönöm.
-
vilag
tag
Sziasztok
Egy furcsaságra lettem figyelmes az egyik általam írt programban.
Az a baj, hogy nem csak furcsa, hanem bonyodalmakat is okozott, melynek kikerülésére egy újabb változót voltam kénytlen bevezetni.A jelenség a következő:
Adott egy userform,.amin vezérlők és fram-ek is vannak.
Az egyik (ponosabban kettő) vezérlő change rutinja akkor is lefut amikor azt se nem hívom meg, se nem folyik olyan művelet (legalább is ismereteim szerint) aminek azt meg kellene hívnia.A folyamat a következő:
adott egy gomb a userformon aminek a megnyomásával 3 comboboxban és egy textboxban lévő text visszaíródik az excel tábla megfelelő sorának megfelelelő helyére.
Ekkor azonban (nem tudom miért) el kezd lefutni egy tök másik combobox (amelynek tudtommal nincs köze az adott eseményekhez) change rutinja.Van valakinek valami ötlete, hogy ezt mi okozhatja? Léptetéssel végignéztem, de sehol nem találok olyan sort amely indokolná ennek a changenek a lefutását.
Várom az ötleteket.
Üdv, vilag
-
wikings2
őstag
A megoldásokat általában tanulmányozás után feldolgozza az agyam, de néha olyan parancsrészleteket használ, hogy magamtól megírni ilyeneket kevésnek érzem magam. Utolsó évre hagyta az infótanár a programozást, és kb nem ért hozzá semmit sem. A már kész megoldásokat szedi le és felkommentelve magyaráz nekünk...
Sajna nincs meg a rutinom ami nagyon kellene :\Néha még azt sem tudom eldönteni hogy mennyi dolgot kell deklarálnom hiszen nem látom előre hogy hova, mit, meddig kell pakolnom egy egyszerű kereséshez vagy sorba tételhez.
Vagyis menne... de az emelt szintű 9 feladatából az első 5 höz kellett kb 3 óra hogy magamtól megírjam mindenféle segítség nélkül.Doksi.hu-n még nem jártam de felnézek, hátha találok valami okosságot
Köszi szépen mindenesetre -
wikings2
őstag
vb parancsokat autódidaktaként tanuljátok, vagy valamilyen logika alapján?
Vannak problémák/feladatok amiknek a megoldásához kő kemény alapozás kéne, de emelt érettségin alig ha lesz annyi időm hogy én leüljek csak úgy tervezgetni :\
Hogy tudnám valamilyen logika mentén elsajátítani a ciklusokat és azok működési elvét és fontosabb funkcióját? (mondjuk x elemből válogassa ki az y nál nagyobbakat és ezeket listázza vagy ilyesmikre gondolok.)
Köszi előre is. -
Messss
csendes tag
Köszönöm az infókat. Létrehoztam már a kapcsolatot az excelem és a grid között, szépen meg is jelenik.
Belevetem magam a dokumentációknak, lehet-e olyat, hogy online legyen a kapcsolat a grid és az excel között, tehát ha elemet adok az excelhez, akkor az megjelenjen a grid-en is.Köszi mégegyszer.
-
drkbl
őstag
A "DOS-közeli" dolgok Unicode támogatását nem tudják megoldani, mert az a meglévő, régebbi programok működését lehetetlenné tenné (Nemzeti ASCII kódolás: 1 karakter 1 byte, Unicode: 1..4 byte).
Az újabb rendszerhívások már támogatják az Unicode kódolást, ráadásul a több nyelv egyidejű támogatását is.
Amit ajánlottam, az csak a nemzeti ASCII variálása lett volna.A legjobb megoldást választottad, hacsak nem fogod fel a helyzetet bíztatásnak egy modernebb programnyelv megtanulására
-
mezis
félisten
A Cirill betűs támogatás rendben van, az intéző is ezért tudja megjeleníteni. Cirill betűs billentyűzetet is tudtam készíteni. (Ezt a Win7 még akkor rendezte, amikor az Opera böngésző szembetalálta magát egy orosz WEB oldallal.)
Az MS táblázatkezelőjével és a LibreOffice-el is be tudom másolni a táblázatba ezt a Cirill betűs file nevet.
Most már biztos vagyok benne, hogy ez a "DOS közeli" szoftverek (VBS, Notepad2) problémája, amivel bizonyára az MS sem óhajt foglalkozni. Nekem sikerült úgy megoldanom, hogy a listázásból kimaradt alkönyvtárakra egyesével lefuttattam a programomat és az eredményeket "hozzászerkesztettem" félbemaradt lista file-hoz. A jövőben kerülni fogom a problémát okozó file nevek használatát.
-
martonx
veterán
-
martonx
veterán
ember, felejtsd el a listbox-ot!
Az excelt mint adatforrás tudod használni.
Ennél elegánsabb, ha SQL Compact-ot, vagy SQL Express-t használsz adattárolásra, és erre kötöd rá az excelt, és a Forms alkalmazásodat is.
Sőt még jobb, ha egy makrósított excel-lel oldod meg az egészet. -
Messss
csendes tag
Köszi, akkor ezt benéztem a MultiColumn-al....
Viszont a grid sem lesz jó nekem, mivel ahogy látom ehhez kellene access, akiknek pedig készülne az alkalmazás, azoknak nincsen.
Épp ezért én excel-el akartam megoldani. Tehát a Form1_Load-be betölteni az excel-ből az adatokat ebbe a ListBox-ba, az adatok felvitelekor pedig bekerülne excel-be is és a ListBox-ba is. Excel nyilvántartásra is szükség van, így ezt tartom logikusnak. Azonban sehogy sem tudom táblázatos megjelenítésre bírni a ListBox-ot.
-
drkbl
őstag
A multicolumn ListBox nem az, amire gondolsz! Az csak azért többoszlopos, hogy ne kelljen függőlegesen görgetni [1]. Használj Grid-et.
[1] A multicolumn ListBox places items into as many columns as are needed to make vertical scrolling unnecessary. The user can use the keyboard to navigate to columns that are not currently visible. Set the HorizontalScrollbar property to true to display a horizontal scroll bar that enables the user to scroll to columns that are not currently shown in the visible region of the ListBox. The value of the ColumnWidth property determines the width of each column. [link]
-
Messss
csendes tag
ÜDV!
Sztem egy egyszerű kérdésem lenne, azonban sehol nem találom rá a választ, illetve bárhogy próbálom megoldani a problémát, valami hibába ütközök.
Visual Studio2010-et használok. Egy több oszlopos listbox-ot szeretnék készíteni.
A listbox beállításainál be is állítottam true értékre a MultiColumn-t.
Azonban nem tudom, hogy adhatok a ListBox1-hez értékeket úgy, hogy azok táblázatos formában jelenjenek meg.
A lista oszlopszámát be kell állítanom?
Előre is köszi!
-
drkbl
őstag
A ? a gond, az ugye érvénytelen karakter a fájl/mappanévben. Unicode támogatás nem Unicode nyelvekhez XP+ rendszereken van, Vezérlőpult nyelvi beállítások (W7: Vezérlőpult>Óra,Nyelv és terület>Másik billentyűzet vagy beviteli módszer megadása>Felügyelet fül alsó része), de nem tudom, segítene-e.
Hibakezelés az On Error és Goto -
mezis
félisten
Még mielőtt bármi bekerülhetne a file névbe, ledöglik. Az alkönyvtárban a legutolsó helyen van a névsorban a Cirill betűs file. Az összes többi file neve bekerül a listába.
(MsgBox esetén is file-ba kerül egy ugyanolyan lista. Valószínű, hogy csiki/csuki-t kellene játszanom a lista file-lal, de nem hiszem, hogy a monitorra más karakter, illetve egyáltalán kerülne valami is a Cirill betűkből.)
A DOS dir parancsa a cirill betűk helyett ? jeleket tesz. Most vettem észre, hogy a file nevének a vége latin karakterekből áll ! A DOS dir ezeket helyesen jeleníti meg a kérdőjelek után. Ugyanígy jártam, amikor a Win vágólapról a Notepad2-vel szerkesztett szövegfile-ba "kézzel" másoltam be a cirill betűs file nevet
Hibakezelést hol lehet nézni ?
-
drkbl
őstag
Sajnos a konzolablak ASCII valami, pl. magyar Windowson 852-es kibővített kódtábla, így a Unicode->nemzeti ASCII konverzió során bármi kerülhet a fájlnévbe.
Segíthet, ha dir /s paranccsal kilistáztatod az adott könyvtárakat, és megnézed, mivé lesz a cirill karakter.
Ha ott jónak tűnik, ideiglenesen cseréld le a rekurzív
listFiles objSubFolder.path
sort
MsgBox objSubFolder.path
sorra, és nézd meg, mi jelenik meg.Bónusz: nézd át a hibakezelést, és egy hibaüzenet megjelenítésével lépj át a problémás alkönyvtárakon
-
mezis
félisten
Bocs, most jöttem rá, hogy lehet programkódot is beilleszteni:
Function listFiles(strFolder)
If objFileSystem.FolderExists(strFolder) Then
Set objFolder = objFileSystem.GetFolder(strFolder)
For Each objFile In objFolder.Files
objCsvFile.Write objFile.Name & ";" & objFolder.Path & vbNewLine
Next
For Each objSubFolder In objFolder.SubFolders
listFiles objSubFolder.path
Next
Else
MsgBox "A megadott " & strFolder & "mappa nem létezik !"
End If
End Function -
mezis
félisten
Üdv.!
Dupla kattintással remekül működik a VBS script programom, amely CD, DVD, vagy bármelyik alkönyvtár nyilvántartását írja ki egy .csv file-ba. Mindaddig, amíg nincs abban az alkönyvtárban egy cirill betűs file név (РадиоКот __ Радиометрический дозиметр GreenRay.mht).
A hibaüzenet ez:
Kivédhető ez valahogy ?
(A vastagon kiemelt utasításba döglik bele.)
Function listFiles(strFolder)
If objFileSystem.FolderExists(strFolder) Then
Set objFolder = objFileSystem.GetFolder(strFolder)
For Each objFile In objFolder.FilesobjCsvFile.Write objFile.Name & ";" & objFolder.Path & vbNewLine
Next
For Each objSubFolder In objFolder.SubFolderslistFiles objSubFolder.path
Next
Else
MsgBox "A megadott " & strFolder & "mappa nem létezik !"
End If
End Function -
mezis
félisten
válasz
martonx #1656 üzenetére
Kinézete alapján fogtam rá, hogy objektum orientált. Vagyis számomra érthetetlenül túlkomplikált.
Könyvhöz még nem jutottam hozzá, internetről próbáltam beletanulni a VBS programozásba. A legzavarosabb számomra az, hogy meddig VBS és honnan Visual Basic.
Az MS-nek a honlapján folyton összezavarodtak (csak nekem ?) az információk, az előbb még egyértelműen VBS magyarázat volt előttem, aztán egy óvatlan katintás után már lehet, hogy C#.)
(Ja, elfelejtettem, hogy Commodore 64-en is írtam Basic nyelven programot. Innen gondoltam, hogy csak fog ez menni valahogy.)
Meg arra gondoltam, hogy a makro programokról is illő lenne már egy keveset tudnom, ha egyszer már a PDP-8 TECO macrojában annak idején teljesen otthon voltam.A .hta -hoz jól gondolom, hogy a HTML-en keresztül vezet egy bizonyára göröngyös út ?
(A WEB lap készítésbe is bele kellene már csapni, kezd ciki lenni, lassan már a nagycsoportosok is csinálják az oviban.)Átolvastam már néhány könyvet Java, C, Webvilág) a mostanában elterjedt nyelvekről, sajnos azt tapasztaltam, hogy a Lőcs Gy. Fortran IV, könyvével ellentétben egyik sem egy komplett leírás, hanem vagy az elejéből, vagy a "magasabb" részéből ír le valamennyit.
A Clipper5-öt is rongyosra olvastam, miközben folyamatosan fejlesztettem a programjaimat, de ott is tapasztaltam, hogy nem mindig komplett egy utasítás, fv. leírása. -
martonx
veterán
A VbScript nem objektum orientált. Vagy ez poén akart lenni? Mert a hsz-edről végig nem tudtam eldönteni, hogy ez most komoly, vagy poén volt.
Nem sértődtem meg, nem kell bocsánatot kérned.
Windowsban nem komplikált képernyőre adatokat kiíratni, vbscriptben mondhatjuk komplikálnak, mert egyszerűen nem erre készült, vagy aki mégis erre akarja használni, az cscript-tel futtatja
Ha meg dupla kattintással akarod használni, akkor .hta-ként csináld meg a vbscriptedet, és akkor ismét könnyű lesz az adatokat kiíratni. -
mezis
félisten
válasz
martonx #1654 üzenetére
Bocs !
Akkor most inkább gyorsan bevallom, hogy Algol-68, Fortran IV -el kezdtem a programírást, script nyelvnek a Focal meg a TECO-macro volt. A PC-ken meg a FoxBase, Clipper volt számomra elérhető. Ez utóbbiról (illetve az MS-DOS ]dir parancsáról) is csak azért váltottam egy ilyen hiper/szuper csilivilire, mert a Windows ékezetes karakterei nem stimmelnek az MS-DOS karaktereivel
Azon meglepődtem, hogy milyen komplikált Windowsban megoldani a képernyőre való kiírás várakozás nélkül. (Gondoltam ott marad nyitva az ablak, majd becsukja akit zavar.)
Az programot (és elődjeit) CD, DVD tartalmak nyilvántartására használom. Egy alkönyvtárban gyűjtöm az ilyen file-okat, melyeknek a neve azonos CD, DVD nevével.
Keresésre az intéző keresőjét használom. Ez egy újabb, remek lehetőség, hogy a csv file-t meg tudja nyitni pl. táblázat kezelő is.A dupla kattintásos indítás külön jól jön, ha az ismerősöm is használni fogja.
Tegnap már próbálgattam a cscript.exe -vel való futtatást, a jelenlegi verzió ugyanúgy fut, sajnos az echo utasítást már eltüntettem belőle. Késő volt és már fáradt voltam. Nagyon kimerít engem ez az objektum orientált programozás.
Köszönöm a tanácsokat !
-
drkbl
őstag
Nem mindegy, melyik hosttal futtatod a vbscript-et, WScript-el vagy CScript-el!
Az echo eljárás doksija szerint wscript hosttal dialógusablak, cscript-el futtatva egy sort ad vissza a konzolablakba.
-
-
mezis
félisten
Üdv.!
Szeretnék a monitoron információt megjeleníteni a futó VB script program állapotáról. Amit eddig találtam ,az a MsgBox strFolder, 64 függvény, aminél sajnos legalább az "OK" gombot nem tudom elhagyni, ezzel viszont a program várakozik amíg nem klikkelek.
Oda-vissza végignéztem az összes funkciót, lehetséges paramétereit, file-ba tudnék írni, de a monitorra nem. (Igaziból a dobozra sem lenne szükségem, csak egy sorra, amit állandóan felülírhatok az aktuálisan feldolgozott alkönyvtár nevével, vagy egy sorszámmal, aktuális idővel...)
A VB Script programot a CHIP magazin 2008 júliusi számából másoltam ki, csekély módosítással a DVD olvasóban lévő DVD file-jait listázza egy csv file-ba. Ezt a kijelzést azért szeretném beletenni, mert igen lassan fut, a DVD olvasó LED-je se jelez vissza és jó lenne, ha információt kapnék arról, hogy rendben dolgozik.
-
-
erich85T
csendes tag
Sziasztok!
Ismét egy makró kérdéssel fordulok hozzátok. Olyan programra lenne szükségem ami egy adott oszlop adatai alapján sorokat szúr be az azonos adatok után.
Elvárás, hogy belehessen állítani, hogy melyik oszlop adatai szerint szúrja be a sorokat a táblázatba.
pl.: legyen egy A, B és C oszlopból álló táblázatunk, ez
A - B - C
1 - a - 32
2 - a - 43
3 - a - 32
4 - d - 12
5 - d - 21
6 - v - 45
7 - v - 5
8 - b - 333ebből a táblázatból ezt szeretném makróval kapni:
A - B - C
1 - a - 32
2 - a - 43
3 - a - 324 - d - 12
5 - d - 216 - v - 45
7 - v - 58 - b - 333
Valakinek erre van megoldás, programja?
Köszönöm,
Erik
-
kisi
aktív tag
válasz
martonx #1637 üzenetére
Sziasztok!
Amikor készítettem, hibaüzenetet adott, ha nem volt előtte Call. Kis piros felkiáltójel, mint értelmetlen utasítás.
Ami érdekes, az az , hogy a help, és a neten lévő források szerint is jól írtam.
Most viszont próbaként kitörölve a Call utasítást is tökéletesen működik.. -
AzO
csendes tag
Sziasztok!
Excel 2003-ban szerettem volna írni egy VBA függvényt, ami egy text file-ból kiolvassa a benne található sql utasításokat és a "go" kulcsszavak mentén szétvágja őket és egy tömbbe teszi az önálló sql utasításokat.
Public Function OpenTextFileToString(strFile As String) As String
Dim hFile As Long
Dim OpenTextFileToString2 As String
hFile = FreeFile 'FreeFile: the next file number that is not already in use
Open strFile For Input As #hFile
OpenTextFileToString2 = Input$(LOF(hFile), hFile) 'LOF = Length Of File
Close #hFile
OpenTextFileToString = Split(OpenTextFileToString2, vbCrLf & "go" & vbCrLf)
Debug.Print OpenTextFileToString(0)
End FunctionEz hibát ad nekem (type mismatch error).
Én úgy tudtam, hogy függvény eredménye lehet string array.Próbálkoztam olyannal is, hogy variant-nak definiálok mindent, és a végén próbálom átkonvertálni string-gé a tömb elemeit:
Public Function OpenTextFileToString(strFile As String) As String
Dim hFile As Long
Dim OpenTextFileToString2 As String
hFile = FreeFile 'FreeFile: the next file number that is not already in use
Open strFile For Input As #hFile
OpenTextFileToString2 = Input$(LOF(hFile), hFile) 'LOF = Length Of File
Close #hFile
Dim OpenTextFileToString3 As Variant
OpenTextFileToString3 = Split(OpenTextFileToString2, vbCrLf & "go" & vbCrLf)
Debug.Print OpenTextFileToString3(0)
Dim i As Integer
Dim OpenTextFileToString4() As String
For i = 0 To UBound(OpenTextFileToString3)
OpenTextFileToString4(i) = CStr(OpenTextFileToString3(i))
Next
OpenTextFileToString = OpenTextFileToString4()
Debug.Print OpenTextFileToString(0)
End FunctionEz már végső kínomban született, de ez sem futott le.
Előre is köszi a segítséget!
-
ArchElf
addikt
Általában az elérhető HW/SW sorozatszámokból készít egy hash-t amit valami olvasható formába alakít (mint amit te is írtál), az lesz a kulcs és abból a kulcsból generálja a cég válaszkulcsot.
Nem közvetlenül használja fel az elérhető hw/sw kulcsokat, hiszen akkor túl könnyű dolga lenne a próbálkozóknak.AE
-
czizso
csendes tag
Sziasztok! Kezdő-középhaladó programozó vagyok, és az alábbi témában elkadtam:
Írtam egy progit (most mindegy, hogy mit), amelyet szeretnék serial kóddal védeni. Egy hasonló progiban láttam egy olyan megoldást, hogy a telepítés utáni első indításkor a progi kiír egy kulcsot, majd ezt megküldve a progi készítőjének visszakapunk egy aktiváló kódot. Ezt beírva a megfelelő helyre lesz teljes értékű a progi.
Nekem nagyon tetszik ez a megoldás, én is ezt szeretném megcsinálni, csak érdekelne az elv, tehát nem a konkrét leprogramozás, hanem az elv.
Az első indításkor egy ilyen formárumú kulcs jön létre: QFQQYT-SBKBRI-3-CABBAC. Az érdekessége az, hogy ha az aktiválás után a windowst újra telepítik, illetve a progi is ismételten felkerül az újratelepített win alá, akkor is ugyanezt a kulcsot készíti a progi az első indításkor, tehát az egyszer már aktivált progi ugyanarra a gépre ismételten teljesen működővé tehető, viszont másik gépre történő telepítéskor már természetesen más kulcs készül.
Ez a kulcs minek (esetleg hardvernek?) lehet a sorozatszáma, hiszen ránézésre nem HDD serial, illetve nem is VSN (partíció kötetszám).Köszi a válaszokat.
Ui.: Azért ebbe a topikba írtam, mert az eredeti progi is Visual Basic-ben készült.
-
martonx
veterán
válasz
Crystalheart #1631 üzenetére
szia!
A margókat felejtsd el. Olyan általános szabályban gondolkozz, hogy pl. a szöveg minden 72-dik karakterénél beszúr egy sortörést.
-
Crystalheart
őstag
Sziasztok, Word-höz lenne szükségem egy VB scriptre. Túl régen programoztam már ahhoz, hogy belevessem magam egy ismeretlen nyelvbe. Delphiben még emlékeznék rá, de egy új szövegszerkesztőt összedobni csak ezért az macera volna, míg gondolom, VB-vel pár sor.
A dolog egyszerű (vagy nem?): van egy folyamatos szöveg, amibe minden margónál sortörést kellene bevinni, majd minden létrehozott sor elejére meghatározott számú NBSP-t illeszteni.
Lényegében ide a Ph!-ra kellene, egy közvetett sufnituning spoiler-tagnek, a Code taggel kombinálva. Manuálisan kicsit kellemetlen hosszabb szöveg esetén.
Kösz!
-
wikings2
őstag
Sziasztok!
Nem igazán olvasgattam bele a témába.
Szeretném megkérdezi, hogy van-e valami olyasmi oldal lehetőleg magyar, ahol összevannak szedve a különböző parancsok és a hozzájuk tartozó jelentések/ rövid magyarázatok is akár?
Most fogok emeltezni infóból, de sajnos ez a része kevésbé megy. Kevésnek tartom az időd rá, hogy ott helyben kitaláljak különféle ciklusokat és eljárásokat, hogy lemenjen frankón a program amit kérnek, de valószinüleg sokat segítene rajtam egy ismertető, hogy mégis ha már meg van a terv a fejemben, akkor ne a megvalósítással legyen a baj.
Köszi szépen előre is.!Ui: szívesen fogadnám a segítségeket olyanoktól akik rá érnek és szívesen segítenének 1-2 érettségi feladat megértéséhez
-
kisi
aktív tag
Köszönöm szépen a válaszokat !
Az első kérdésre tökéletesen sikerült a válaszok alapján megoldást találni, a felugró form kérdésével még küzdök.
-
Homer
tag
Hello,
én így csinálnám:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _
..........................As System.EventArgs) Handles Button1.Click
.........Dim valasz As integer
.........valasz = MsgBox("Hello", MsgBoxStyle.YesNo, "Semmi")
.........MsgBox("A válaszod: " & valasz)
End SubEszerint az igen válasz esetén a valasz változó értéke 6 nem esetén pedig 7.
...mondjuk ez nem VS2010 hanem VB2003, de sztem használható lesz...
... ha pl kilépésre akarod használni akkor tovább folytatva:
if valasz = 6 then end
-
martonx
veterán
eredmeny() = MsgBoxResult.Ok ez tuti hülyeség. Nem 100%, hogy jó megoldás, mert jóideje nem VB.Net-ezek, de
If MsgBox("Biztos ki akarsz lépni? Mindent mentettél?", Title:="Kilépés", Buttons:=MsgBoxStyle.OkCancel) = = DialogResult.OK Then Close()Így már a feltétel jó lesz, a Close rémlik, hogy jó, bár lehet, hogy Exit kell helyette? Close az aktuálisan nyitott form-ot zárja, ha ez az egy volt csak nyitva, akkor egyenértékű az Exit-tel.
Új ablakot pedig valami ilyesmivel tudsz létrehozni
dim formuj as form - ide majd a VS-ben megcsinált formod neve fog kelleni a form helyett
majd formuj.Show-val jön fel az ablak. -
kisi
aktív tag
Sziasztok !
Most kezdek ismerkedni a Visual Studio 2010 VB részével.
Egy olyan problémába akadtam amivel valamiért nem bírok boldogulni, pedig valószínűleg egyszerű, és kézenfekvő a megoldás:
Private Sub KilépésToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KilépésToolStripMenuItem.Click
MsgBox("Biztos ki akarsz lépni? Mindent mentettél?", Title:="Kilépés", Buttons:=MsgBoxStyle.OkCancel)
If eredmeny() = MsgBoxResult.Ok Then Close()Valamiért nem tudok kilépni.. Valószínűleg nem jól, vagy nem megfelelően kérdezem le az MsgBox visszatérési értékét. Vagy egyszerűen az MsgBox-ra értődik a Close() utasítás így?
Egy másik kérdésem az lenne, hogy milyen utasítással lehet egy formon felépített menüszerkezetből ( Private Sub ValamiToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) Handles ValamiToolStripMenuItem1.Click )
egy új ablakot felhozni, amin pár adat bekérhető, pld inputbox, stb.. és ezek eredményeit visszaadni a főalkalmazásnak? -
ArchElf
addikt
-
erich85T
csendes tag
Sziasztok!
Itt mindig olyan segítőkész emberkékre találok, remélem mostani kérdésem is válaszra talál majd. A feladat a következő lenne: Adott két táblázat (munkalap), és a két táblázat különbségét kéne venni, ezt egy haramadik táblázatba (munkalapra) kéne tenni. Erre érdemes makrót írni, vagy valamit tud ezzel az excel kezdeni egyszerűen is?
pl: adott A és B táblázatból készítünk egy C táblázatot mely AB különbségeit tartalmazza.
(A) táblázat (oszlopokat kötőjellel választom el):
a - 2 - 3
a - 3 - 7
b - 1 - 2
b - 3 - 4(B) táblázat:
a - 2 - 3
a - 3 - 7
b - 3 - 2
b - 3 - 4
c - 1 - 1(C) eredmény táblázat:
b - 1 - 2
b - 3 - 2
c - 1 - 1Úgy is felfoghatjuk, hogy olyan program kell, ami azon adatokat teszi be egy táblázatba amely adatból adott A vagy B táblázatban csak az egyikben szerepel, tehát aminek a másik táblázatban nincsen párja.
Várom az ötleteket, illetve megoldásokat. Köszönöm előre!
))
-
vilag
tag
Megoldottam, tudtam, hogy valami egyszerű megoldása lesz.
Selection.Sort Key1:=Cells(kulcs1, 2), Order1:=xlAscending _
, Key2:=Range(kulcs2), Order2:=xlAscending _
, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormalahol range(kulcs1) helyett, cells(kulcs1, 2) van,
ahol kulcs1 a korábbi b2 helyett, már csak az oszlop száma (pl.4) -
vilag
tag
Tudja esetleg valaki, hogyan tudom az oszlop számából visszanyerni az oszlop betűjelét?
Vagy kit tudom e "váltani" valamivel?A probléma az előzőekből adódik (nem akarok fiksz hivatkozásokat használni).
Van azonban egy olyan kódrészletem amiben egy változó által hozott cellanevet adok meg.
Selection.Sort Key1:=Range(kulcs1), Order1:=xlAscending _
, Key2:=Range(kulcs2), Order2:=xlAscending _
, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormalahol kulcs1=a cella hivatkozása (pl.: b2)
kulcs2=egy másik cella hivatkozása (pl.: d2)Jelen esetben a 2 az fix lenne, de az előtte lévő oszlopnak csak a számát tudom, mivel az dinamikus lenne, tehát adott pillanatban nem biztos, hogy az adat a b oszlopban van.
Tudom, hogy valami egyszerű a megoldás csak nem találom.
Igazából annyit szeretnék, hogy az oszlop betűjelét helyettesíthessem az oszlop számával.
-
vilag
tag
válasz
martonx #1608 üzenetére
Ha már így megcsiklandoztad a fantáziámat, akkor ajánlhatnál valami jó könyvet (lehetőleg magyar nyelvűt), ami esetleg a világhálón is elérhető. Aztán lehet, hogy belevetem magamat az access-re történő átültetésbe (bár még excelben sincs befejezve
)
Most belekukkantottam az accessbe, de azt sem tudom mit kell indítani, úgyhogy kicsit megrémültem, de gondolom ez csak kezdeti ijedtség lesz...
-
martonx
veterán
A VBA az VBA, ha excel-t, ha access-t használsz.
Az accessnek megvan az az előnye, hogy az űrlapokhoz nem kell szinte semennyi makrót írni, elég csak varázsolni. Pl. amivel most szívatod magad, az jó eséllyel accessben varázsolva pár perc meló lenne.
Acces-hez vannak nagyon jó könyvek tutorialok, én a helyetekben rászánnám az időt. Ebben a topikban pedig ugyanúgy kapnátok segítséget, mint eddig.
Teljesítményben pedig össze se lehet majd hasonlítani. Csatolt táblaként tudja használni az oracle db tábláit is, normális lekérdezéseket, sql-eket lehetne írni benne.Van tapasztalatom agyonmakrósított excelekkel
Soha nem fog 100%-osan működni, mindig kell hozzá kompromisszum, ráadásul a 90-es - 2000 évek legeleje óta rengeteget fejlődtek az egyéb megoldások. -
Homer
tag
Juhuhuhúú...
Azt kell, hogy mondjam, részben egyetértek az előttem szólóval. Az excel már ehhez egy kicsit kevés, és nem erre való!
Ami miatt viszont meg tudlak érteni, az az hogy hasonló cipőben járok. A cégnél ahol dolgozom nekem is sokat segít a makró, és én is ezért kezdtem el foglalkozni a VB-el és a VBA-al. Nálunk SAP van és abban kellene megoldani a hasonló feladatokat, de a fejlesztés időbe telik, és az a szomorú tapasztalatom, hogy ha kérünk egy programfejlesztést akkor hosszas várakozás után ugyan történik valami, de mégsem olyan lesz a z új program mint amilyet szerettünk volna.Hasonó kaliberű programokat írogattam már én is a könyvelgetéseinkhez. (SAP mellett! Egyik kollégám szerint az SAP a "Sz*pjon A P*raszt"-nak a rövidítése
)
Kérdésedre:
Én egyesével töltögetném fel az oszlopban lévő adatokkal a combobox items gyűjteményét.valahogy így:
dim e as scripting.dictionary
for each elem in column(x)
...if not consist e elem.value and elem.value<>"" then e.add(elem.value
nextA fenti megoldás csak ötletelés, nem írtam be sehová, tehát valszeg nem működik ha copy-paste-zed
-
vilag
tag
válasz
martonx #1605 üzenetére
Sajnos ez van.
Pénz nincs semmire, tehát a lightswitch kilőve.
Az Oracle-t használja a cég (a központi szoftverünk arra lett írva), de kétlem, hogy a szerverhez kapnánk hozzáférést, mivel az a központban van, mi meg megyei szinten vagyunk.
Az Access járható út lenne (gondoltunk is rá), de sajnos ahhoz még annyit sem konyítunk mint az excelhez és a VBA-hoz.Megj.: a gazdálkodói adatbázis jelenleg is excelben van (ugyan így VBA-val "megbolondítva"), de eljárt felette az idő. Új tartalmak szükségesek és megváltoztak az elvárásaink is, így arra gondoltunk, hogy már egyszerűbb újra írni, (és persze akkor már a funkciókat is kibővíteni) mint toldozni-foltozni.
Esetleg ha lenne egy mentor akkor elkacérkodnánk az access gondolatával, de anélkül egyikünknek sincs annyi (fölös) munkaideje, hogy önerőből belevesse magát a dologba.
Szerk.: a félreértések elkerülése végett, ez nem kiadott munka, inkább a saját munkánk megkönnyítése, és kihívás is egyben.
-
martonx
veterán
Úristen, na ezt itt hagyjátok gyorsan abba.
Az excel nem erre való. Hahó.
Az átlag user által elképzelhetetlenül sokat tud az excel, de egyszerűen nem erre való.
Egyáltalán honnan jut manapság valakinek az eszébe ilyen marhaság?
Ha nem akarjátok túlbonyolítani a dolgot, meg sokat programozni,akkor használjatok lightswitch-et (ehhez mondjuk fizetős az ide) .Net vonalon, vagy oracle adf-et (ehhez meg fizetős az alkalmazás szerver) javavonalon.
Vagy ha már Office, akkor az Access erre lett kitalálva. -
vilag
tag
válasz
ArchElf #1603 üzenetére
Akkor röviden a lényeg.
Egy gazdálkodói adatbázisról lenne szó, minden egyes adathoz (legalább is a nagy részéhez) tartozik egy userform vezérlő.
A userformnak kettős célja van, egyrészt lehetővé teszi a meglévő adatbázisban a találatok szűkítését az adott vezérlőbe írt szöveg alapján, másrész új tételek felvitelére is alkalmas lesz (legalább is eddig ez a terv)
Induló állapotban a listbox tartalmazza a teljes adatbázist. A beírt karakterek alapján az adatbázis (és így a listbox is) szűkítésre kerül.
Ha a szűkítés megtörtént és látható a (vélhetően) keresett gazdálkodó, akkor a listboxban rákattinthatunk a keresett emberkére, és egy gombot megnyomva az összes adata betöltődik a megfelelő vezérlőbe ahol ezután változtatásokat hajthatunk végre az adatain.Összegezve tehát jól "ment le"
neked a dolog, két említett probléma független egymástól.
Valóban a címsorban akartam keresni. Pontosítva a címsor megfelelő szövegét kerestem, hogy megkaphassam a helyét (oszlop sorszmát), mert később szeretnék hivatkozni a helyére (amikor visszatöltöm az adatokat), de az adatbázis oszlopbeosztása még képlékeny, ezért nem akartam abszolult hivatkozásokat (vagy offset-et) használni. Mert ha esetleg később be kell szúrnom egy oszlopot (vagy éppen ki kell vennem) akkor nézhetném át az egész kódot, így viszont nem kell ilyesmivel törődnöm.
Remélem nagyjából értelmezhető amit írtam.
Egy pár kép, hogy jobban átlátható legyen a dolog:
[link] -
vilag
tag
Igazából már muszáj "makrobizni", mert userformon fog történni minden, ez csak egy apró szeletet volt a dolognak. Mindössze enélkül nem lett volna értelme folytatni, mert később újra kellett volna írnom az egészet.
A megoldás ez lett (bár gondolom az előzőekből nektek ez már nemigen lesz újdonság):
név = Application.WorksheetFunction.Match("Név", ThisWorkbook.Sheets("gtorzs").Range("1:1"), 0)Listboxal kapcsolatban viszont lenne egy érdekes kérdésem, amelyre eddig önerőből nem találtam választ.
A listbox ugye egy kijelölt excel tartományt "mutat meg". Azt viszont, hogyan lehet megoldani, hogy az egyesített cellák is egyesítettként jelenjenek meg benne?Pl. excel táblában van nekem egy fejléc oszlopom ami viselje pl a következő nevet: "Születési dátum", viszont ez három oszlop (év, hónap, nap) fejléce. A listboxban viszont úgy jelenik meg, hogy az év oszlop felett van a "Születési dátum", a másik kettő felett pedig üres cella (elválasztó vonallal mindennel együtt).
Ötlet?
Új hozzászólás Aktív témák
Hirdetés
- Linux Mint
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Kerékpárosok, bringások ide!
- Elektromos autók - motorok
- Formula-1
- Robot fűnyírók
- OFF TOPIC 44 - Te mondd, hogy offtopic, a te hangod mélyebb!
- War Thunder - MMO Combat Game
- Szünetmentes tápegységek (UPS)
- alza vélemények - tapasztalatok
- További aktív témák...
- ZOTAC GAMING GeForce RTX 3090 Trinity OC 24GB
- DJI Avata drón +Motion controller - hibátlan, karcmentes állapotban
- BESZÁMÍTÁS! ASUS B450 R7 1700X 16GB DDR4 512GB SSD RX 580 8GB Rampage SHIVA Corsair 450W
- BESZÁMÍTÁS! MSI B450M R5 5600 16GB DDR4 512GB SSD RTX 3060 12GB THERMALTAKE Core V21 Enermax 650W
- BESZÁMÍTÁS! MSI B450M R5 3600 16GB DDR4 512GB SSD RTX 2060 Super 8GB THERMALTAKE Core V21 500W
- Telefon felvásárlás!! Xiaomi Redmi Note 13, Xiaomi Redmi Note 13 Pro, Xiaomi Redmi Note 13 Pro+
- BESZÁMÍTÁS! Apple iMac Pro (2017) 5K - Xeon W-2140B 64GB DDR4 RAM 1TB SSD Radeon PRO Vega 56 8GB
- iKing.Hu - Xiaomi 14 Ultra - Ultra White - Használt, karcmentes
- ProCaster 50UNB800H 50" 127cm FULL HD üzleti kijelző
- Telefon felvásárlás!! Samsung Galaxy S23/Samsung Galaxy S23+/Samsung Galaxy S23 Ultra
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged