- Parci: Milyen mosógépet vegyek?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- bambano: Bambanő háza tája
- Szevam: „Rendszerleállás” – egy AI képzeletbeli halál utáni élménye
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Brogyi: CTEK akkumulátor töltő és másolatai
- btz: Internet fejlesztés országosan!
Új hozzászólás Aktív témák
-
vilag
tag
válasz
sztanozs #2256 üzenetére
Az Applicaion.UserName-el az a gond, hogy az az excelben használt felhasználói név, amelyet a felhasználó akár meg is változtathat, ellenben az Environ("Usernam")-el, amelyet egy mezei felhasználó nem nagyon változtathat meg.
Nekem pedig szükségem van a "stabil" környezetre, mert jogosultságok kötődnek ehhez a felhasználói névhez.
Megj.: még ha az Environ("Username") nincs is benne monndjuk a Basicben, azért szerintem a Trim-nek csak benne kellene lennie...
Amit belinkeltél azt én is megtaláltam, de még nem volt alkalmam kipróbálni, tekintve, hogy a problematikus gép másik helyszínen van.
A referenciákat viszi magával a program, vagy hogyan működik ez?
-
vilag
tag
válasz
martonx #2254 üzenetére
Próbáltam is, többször kiugrik ugyan ezzel a hibaüzenettel.
Először pl. ennél a sornál: nev = Environ("USERNAME")
Az "Environ" szövegrészt pedig szépen kijelöli kékkel.Ha ezt a sort kiveszem, akkor meg pl. itt:
xy=Trim(Str(Date))
Itt pedig a "Trim" szövegrészt jelöli ki.Esetleg, így valami pontosabb megoldási ötlet?
-
vilag
tag
Üdv!
Olyan problémába futottam, hogy az egyik általam írt programot (Excel VBA) elvittem egy másik gépre, azonban ott nem fit rendesen, mert az alábbi hibaüzenetet kapom:
Compile error:
Can't find project or Library
Ez a kérdés itt a fórumban már kétszer is felmerült, azonban senki nem válaszolt azokra a kérdésekre.
Próbáltam kicsit kutakodni a neten, ott annyit találtam (ha jól értettem), hogy a references-el lehet a baj.Nálam (és a helyi hálón leledző gépeken) Office 2003 Professional, illetve 2007 Professional van, azon a gépen amelyiken nem megy ott Office 2003 Basic van.
Utóbbi gépen újra futtattam a telepítőt és "Minden a saját gépről fut" opcióval újratelepítettem az office alkalmazásokat.Van esetleg valakinek ötlete a hibára vonatkozóan?
Mondanom sem kell, hogy nagyon fontos volna.
Előre is köszönöm a segítséget!
-
vilag
tag
válasz
martonx #2180 üzenetére
Igen, tudom, hogy visszafelé kompatibilis, azonban az office 2007 (és az utáni) verziókban a menüt sikerült olyan jól megoldani, hogy parancsokat nem tudsz kitenni a menüszalagra csak ha saját xml-t szerkesztessz.
Jelenleg viszont sok olyan a menüben alapból nem szereplő parancsot használok, amelyek egy gombnyomással történő elérése igen sok segítséget jelent.
Tudom, hogy van olyan program ami a gyári menüszalag fölé kiteszi a régi típusú menüt, az viszont nem legális, így erre a sz.r céges gépre nem tehetem fel.
A kérdésem viszont még mindig áll!
Mi a megoldás a felvetett problémára?
Üdv, vilag
-
vilag
tag
válasz
sztanozs #2178 üzenetére
Azt is előkutathatom majd, de a jelenség az Office 2007 mellételepítésével jelentkezett és nem csak programkódból való megnyitás esetén jelentkezik.
Ha már nyitva van egy munkafüzet és megnyitok egy másikat, akkor kiírja, hogy:
A PERSONAL.XLS fájl zárolva van szerkesztésre
'x y'. (én)
Megnyitja "Olvasására", vagy válassza az 'Értesítés" gombot, ha az olvasásra való megnyitás mellett értesítést is kér, mikor a dokumentum használatát bejezték."
Ez ugye arra utal, hogy másik excelt indított az új munkafüzetnek. Továbbá ezt támasztja alá az is, hogy ha a nagy X-el zárom be a munkafüzetet, akkor csak ezt az egy munkafüzetet zárja be, az excel ablakkal együtt is.
Ha meg a kis X-el zárom be a munkafüzetet, akkor meg marad egy üres excel ablakom. -
vilag
tag
A probléma inkább kicsit excel jellegű.
Office 2003 mellé feltelepítettem az Office 2007-et.
Azóta olyan problémával küzdök, hogy ha nyitva van egy excel tábla és megnyitok egy másikat, akkor nyit egy új excelt és abban nyitja meg az új táblát.A jelenségnek a következménye igen kellemetlen, mert ha megnyitok egy új fájlt, akkor mindig kiírja, hogy a personal.xls írásra meg van nyitva bla bla bla.
Egyik programnál pedig azt idézi elő, hogy ha kódból megnyitok egy munkafüzetet ami már egyébként is nyitva van, akkor lesz egy nyitott pl. próba.xls-em és egy nyitott próba.xls [olvasásra] munkafüzetem.
A kérdésem az, hogy hogyan lehet megoldani, hogy ne új excelt nyisson minden megnyitott munkafüzethez, hanem csak egy excel lehessen több nyitott munkafüzettel?
Előre is köszönöm!
-
vilag
tag
válasz
martonx #2173 üzenetére
Azért kérdeztem az időtúllépést, mert ha van ilyesmi, akkor valami környezeti változót kérdezek le és az alapján döntöm el, hogy megnyíljon e a segédtábla vagy sem.
Nem tudom, hogy a VBA programkód vár e egy adott sor végrehajtására (open) vagy csak "bedobja", hogy open aztán megy tovább és vagy megnyilt, vagy nem.
Bár ha jól sejtem, akkor vár, a kérdés csak az, hogy meddig...
-
vilag
tag
Volna egy még újabb kérdésem.
Az egyik programban a munkafüzet megnyitásakor megnyitásra kerül egy segédfájl is amiből adatokat veszek ki és írok bele (amolyan napló ha úgy tetszik).
Az egyik kolléga VPN-en keresztül éri el a helyi hálót.
Amikor elindítja a programot a következő hibaüzenetet kapja:Run-time error '1004':
WorksheetFunction osztály Match tulajdonsága nem érhető el-Először arra gondoltam, hogy nem tudja megnyitni a segédfájlt, de valószínűleg nem ez a probléma, mert On Errorral ezt levezéreltem olyan módon, hogy ha a Workbook Open hibára fut akkor hagyja ki a hozzá kapcsolódó további műveleteket (abból olvasás, és írás) és egyszerűen csak nyissa meg az eredeti fájlt.
Elmondása szerint a korábbi verziók (amikor ez a segédfájl még nem volt hozzákapcsolva) is borzasztóan lassan nyíltak meg (a munkafüzet mérete kb. 800-900 kb).
A kérdésem tehát az, hogy van e az ilyen műveleteknek esetleg időtúllépése a VBA-ban?
Vagy van e valakinek ötlete a hiba elhárításával kapcsolatban?
-
vilag
tag
Akkor kérdezek valami újat.
Egy ListBoxba szeretnék értékeket "bevételezni" a munkafüzet egy tartományából, de csak azokat a sorokat, amelyek láthatóak.
Megoldható ez?
Egyelőre nem találtam csak olyan megoldást, hogy egy segédmunkalapra másoltatom, a keresésnek megfelelő értékeket és azt "vételezem" be.Igazából valami olyasmit szeretnék megoldani, hogy van nekem egy vezérlőm (mondjuk textbox), melyet amolyan keresőmezőnek (vagy inkább szűrőmezőnek) szeretnék használni és a bevitt karaktereknek még megfelelő találatokat szeretném listázni a listboxba.
Tehát minden billentyűleütés után frissülne a listbox tartalma.Azért szeretném így megoldani, mert akkor nincs szükség segédmunkalapra, szűrésre, másolásra -mert ugye ezek mind időbe telnek és a nem kifejezetten csúcskategóriás gépeinken ez hosszú másodpercekbe kerülne.
-
vilag
tag
Üdv!
Mi a fitty-fene van? Netán mindenki nyaral, hogy senki nem válaszol???
-
vilag
tag
Féli már sikerült megoldani a problémát.
Ahhoz, hogy a tördelés megfelelő legyen a következőket kell tenni:
TextBox tulajdonságainál a következőket kell állítani:
MultiLine=True
ScrollBars=3
WordWrap=TrueSajnálatos módon a Scrollbar csak akkor jelenik meg ha a TextBox fókuszba kerül, így kénytelen voltam programból fókuszba hozni, majd átadni egy másik vezérlőnek a fókuszt.
Ennek az a sajnálatos eredménye, hogy a TexBoxban a szöveg úgy jelenik meg, hogy a szöveg vége látszik azaz az eleje van rejtve, nem pedig a hátulja, ahogy az várható volna.Ennek kiküszöbölésére van valakinek ötlete??
-
vilag
tag
Kis segítségre lenne szükségem. Már megint....
Már mindenféle ötletet kipróbáltam ami eszembe jutott, de eddig nem oldódott meg a gubanc.
Van nekem egy Userformom ami amolyan üzenetablakként funkcionál.
Ezen az Formon van egy textbox (korábban label), ami az excel tábla megfelelő cellájában elhelyezett üzenet megjelenítésére szolgál.
A probléma az, hogy egy olyan üzenetet próbálok megjeleníteni benne, ami nem fér el a textboxban, ezért bekapcsoltam a Scrollbar tulajdonságot.
Ezzel kapcsolatban több problémám is felmerül:
1. Csak akkor jelenik meg a scrollbar, ha a textboxban lévő szövegbe belekattintok.
-Én pedig azt szeretném, ha a függőleges srollbar alapból látható lenne (de csak akkor ha a szöveg valóban nem fér el)
2. Jelenleg a szöveg vízszintesen lóg ki a textboxból (így a vízszinte scrollbar jelenik meg), én pedig azt szeretném ha függőlegesen lógna ki (és ennek megfelelően automatikusan tördelésre kerülne), és a függőleges scrollbar jelenne meg.Szerk.: A TextBox Multiline tulajdonsága True-ra van állítva.
-
vilag
tag
válasz
Bobrooney #2164 üzenetére
Teljesen igazad van, úgy (ahogy régi matektanárom mondta) valóban elegánsabb. Holnap ha bemegyek a céghez át is írom.
A programot még 2010-ben kezdtem írni, akkor még fele ennyit sem tudtamAzóta persze sokat tanultam és ha valamire találok elegánsabb megoldást akkor át szoktam írni.
-
vilag
tag
Közben a saját kérdésem nyomán meg is találtam a választ.
A probléma az volt, hogy menet közben programból megnyitottam egy másik fájlt, így az lett az aktív munkafüzet.
Mivel az új aktív munkafüzetben nem volt olyan munkalap ezért a RowSourceot nem tudta beállítani.Szóval mindössze a megnyitás után a ThisWorkBokk.Activate parancsot kellett kiadnom és minden rendbe jött.
-
vilag
tag
Volna nekem egy gondom.
Vélhetően nem nagy probléma, csak egyszerűen nem értem az okát.Van nekem ugye egy UserFormon több comboboxom.
Az egyik ComboBoxnak a másikból vezérelve szeretnék értéktartományt adni a következő módon:
Combobox17_Change()
(...)
If ComboBox17.Value = 1 Then ComboBox18.RowSource = "Egységdíjak!b5:c21"
If ComboBox17.Value = 2 Then ComboBox18.RowSource = "Egységdíjak!b23:c33"
If ComboBox17.Value = 3 Then ComboBox18.RowSource = "Egységdíjak!b35:c38"
If ComboBox17.Value = 4 Then ComboBox18.RowSource = "Egységdíjak!b40:c43"
If ComboBox17.Value = 5 Then ComboBox18.RowSource = "Egységdíjak!b45:c56"
If ComboBox17.Value = 6 Then ComboBox18.RowSource = "Egységdíjak!b58:c58"
If ComboBox17.Value = 7 Then ComboBox18.RowSource = "Egységdíjak!b60:c63"
If ComboBox17.Value = 8 Then ComboBox18.RowSource = "Egységdíjak!b65:c66"
(...)
End SubAzonban ez a hibaüzenet jelenik meg:
"Could not set the RowSource property. Invalid property value."
Ehhez a programkódhoz egy másik UserFormon kiadott parancs juttat el, miszerint:
UserForm1.ComboBox17.Value = Workbooks(filenev).Sheets(1).Range("b2").ValueEgyszerűen nem értem miért nem hajlandó beadni ezt a szöveges értéket beállítani.
Esetleg a ComboBox18 valamelyik tulajdonsága még nincs megfelelő állapotban ahhoz, hogy a RowSourceot be tudja, állítani?
Ha így lenne, akkor melyik az a tulajdonság amelyik nem megfelelő?Esetleg nem az az aktív munkafüzet amiben ez a munkalap található?
Lehet itt teljes hivatkozást megadni??? -
vilag
tag
Így indult ez nálam is.
Mikor idekerültem egy (pontosabban több is) VBA-val megbolondított excel táblát kellett használnom bizonyos munkákra.Mikor beletanultam láttam, hogy vannak hiányosságai, gyermekbetegségei, vagy éppen csak változtatni kellett valamit. Ilyenkor mindig a kollégát kellett "zaklatnom", aki írta a programot. Olyankor ott ültem mellette és kérdezgettem, hogy ez miért így, meg mért nem úgy, ez mire való, nem lehetne esetleg ezt így megcsinálni, stb.
Később más munkáim megkönnyítésére elkezdtem magamtól programozni, ha elakadtam (ami persze az elején elég sokszor előfordult) csak akkor kérdeztem a kollégámat, ha meg már ő sem tudott megoldást kínálni vagy találni, akkor írtam ide.Ez mára oda jutott, hogy a legnagyobb projekt most kb. ötezer soros, de mindig valami apró cseprő, vagy (most éppen) nagy volumenű javításon, kiegészítésen dolgozom ha van idő. (Évi átlag 2.000 ügyirat ezzel készül a hivatalnál
, szóval úgy érzem volt értelme eltölteni vele az időt.
Több más mellett írtunk egy olyan programot is amire igen büszke vagyok, mert sikerült vele felváltani a sz*r papír alapú postakönyvet is, de persze egy sima postakönyvtől sokkal többet tud
Mondjuk én azért még így is inkább a kezdő szintre lőném be magam, tekintve, hogy rengeteget kell kérdeznem tőletek, meg látva, hogy mennyi olyan VBA elem van a súgóban amiről még csak lövésem sincs mire való.
-
vilag
tag
válasz
martonx #2151 üzenetére
Ezek szerint a Te "uralmad" alatt is ugyan ez lenne a helyzet, mert a napi 8 óra maszekolással eltöltött munkaidő miatt nem lenne időd foglalkozni mással...
Lehet, hogy ők is ezt csinálják, ezért nem halad semmi sehová.
/Mondjuk a saját rendszergazdánknak van rendes munkaköre is, talán ezért sem ér rá igazán mással foglalkozni./
Mivel foglalkozol munkaidőben?
-
vilag
tag
válasz
martonx #2149 üzenetére
Mivel közszférában dolgozom, az utolsó megjegyzést csak megerősíteni tudom!
...sajnos
A gépeink elavultak (erről mondjuk pont nem a rendszergazda tehet), a szoftvereinkről meg ne is beszéljek.
Utóbbihoz (persze csak a gépek kapacitásán belül) azért már a rendszergazdánknak is igen jelentős a szerepe.
A gépeink nagy részén a megérkezésük óta (azaz kb. 2004 óta) ugyan az a Windows Xp fut, pedig a legtöbb már megérett egy újratelepítésre...
saját pénzből vett monitor
és még sorolhatnám....Úgy is mondhatnám, hogy:
'sok a baj, oszt egy se kicsi' -
vilag
tag
válasz
martonx #2140 üzenetére
Jelenleg úgy működik a dolog, hogy a programban megadott adatok alapján xls-be készül egy ügyirat (ezt ugye mindenki ki tudja nyomtatni, meg tudja nézni, stb.).
Mivel azonban (ha nem is gyakran de) előfordul, hogy a felhasználó valamilyen adatot helytelenül adott meg.
Felmerült tehát az igény, hogy meg lehetne-e oldani, hogy ne kelljen egy teljesen új ügyiratot létrehozni (és minden adatot újra megadni), hanem mondjuk olvassuk vissza az adatokat.Ebből látható, hogy kénytelen vagyok a "generált" ügyiratokból visszaolvastatni az adatokat.
Ezért kérdeztem, hogy a fájl megnyitása nélkül (ez sem foglalná a memóriát az amúgy sem túl erős hivatali gépeken) lehet e belőle olvastatni, de sajnos eddig úgy tűnik, hogy nem.Azért még reménykedem, hátha rámcáfoltok.
-
vilag
tag
Van egy újabb kérdésem (még nem próbáltam).
Lehet e egy NEM nyitott excel tábla (de ismert az elérési útja) bizonyos cellájának adatát kinyerni, vagy mindenképpen meg kell hozzá nyitni?
-
vilag
tag
válasz
martonx #2134 üzenetére
Az ötleted nyomán a kollégám ezt hozta össze:
Sub Gomb1_Kattintás()
Dim komp
Set fs = CreateObject("Scripting.FileSystemObject")
For Each komp In Workbooks("proba.xlsm").VBProject.VBComponents
ize = komp.Name
If komp.Name = "Module1" Then
komp.Export ("d:\temp\module1.bas")
Workbooks("proba2.xlsm").VBProject.VBComponents.Import ("d:\temp\module1.bas")
fs.DeleteFile ("d:\temp\module1.bas")
End If
Next
End SubMég nem próbáltam, hogy működik e.
Ha odáig jutok szólok. -
vilag
tag
Egy új problémára keresem a választ:
Röviden:
Van egy programom ami létrehoz egy másik xls fájlt, melyben statikusan tároltatom el az eredetiben megadott adatokat.Megoldható e, hogy a programból létrehozott új statikus fájlba programkódot vigyek át?
Ha a munkalapot másoltatnám akkor tudom, hogy megy a laphoz tartozó kód is, de jelen esetben ez sajnos nem megfelelő megoldás.Van esetleg ötlet, hogy hogyan lehetne "átküldeni" a kódot az újonnan létrehozott fájlba?
-
vilag
tag
-
vilag
tag
válasz
martonx #2125 üzenetére
Egy ilyet találtam:
Set fs = Application.FileSearch
With fs
.LookIn = "v:\Szamlatervek"
.Filename = "*000-2*.xls"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
Else
MsgBox "There were no files found."
End If
End WithSzerintem némi átalakítással még használható is lesz.
-
vilag
tag
válasz
martonx #2122 üzenetére
A *-al már kísérleteztem, de egyelőre nem tűik használhatónak.
Pedig nekem pont arra lenne szükségem, hogy úgy tudjam megnyitni, hogy a fájlnévnek csak egy része van meg. Az elérési utat pontosan ismerem.Bekeresőssel azért nem akarom megoldani, mert az adott mappában több mint ezer fájl található (már most, és hol van még az év vége...) és nem akarom azzal megszívatni, hogy nézegettetem vele a több ezer fájlt, hogy nesze paraszt, válassz egyet...
Eddig ezt találtam az ötleted nyomán:
fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End IfDe attól tartok, hogy ezt nem tudom átalakítani olyanra amilyenre szeretném...
Nem lehetne esetleg olyat csinálni, hogy az ismert fájlnév részletet kerestetem az ismert elérési úton belül és ha a találatok száma mondjuk 1, akkor azt a fájlt megnyittatom?
-
vilag
tag
Egy hasonló kérdés az előzőhöz.
Programkódból szeretnék megnyitni egy fájlt, azonban nem ismerem a pontos fájlnevet.
Tudok e itt valamilyen helyettesítő karaktert használni a hivatkozás megadásakor? -
vilag
tag
Üdv!
Egy valószínleg igen bagatel kérdéssel fordulok a tisztelt publikumhoz.
Van-e olyan karakter ami a "bármit" helyettesíti?
Semmi="" -ből kiindulva.
Azért keresem, mert a darabteli függvényt szeretném használni, de ott konkrét keresési értéket vár tőlem.
A konkrét példa az lenne, hogy van nekem egy olyan oszlopom aminek nem minden sorában ugyan de különböző dátumok vannak.
Azt szeretném megtudakolni, hogy mennyi olyas cella van amiben van bármilyen érték, tehát nem üres.Köszönöm!
-
vilag
tag
válasz
sztanozs #2093 üzenetére
A vizsgálatra a Change eseményt használom, abból a megfontolásból, hogy miért hagyjam hogy végigírja a hülyeséget.
A fókusznál gondolom TabStop helyett a TabIndexre gondoltál, mert a TabStop értéke csak True, vagy False lehet.
Egyébként ezt a megoldást én is próbáltam már korábban, mert a vezérlőnek amit szeretnék újra fókuszba hozni a TabIndexe=0, szóval ez sem megoldás.
Sántít ez a Frame kapja vissza a kontrollt dolog, mert most megnéztem és az általam feldobott hibaüzenet okézása után a az ActivConrol.Name szerint a MultiPage1 az aktívkontroll.
-
vilag
tag
válasz
martonx #2101 üzenetére
Elméletileg ütközés nem jöhet létre, mert -egyelőre legalábbis- minden felhasználónak van egy sora és abban tároltatok néhány dolgot (pl.: utolsó belépés időpontja).
Szóval minden felhasználó esetében csak a nevéhez kötődő sorba kerül érték, így ütközés elméletben nem jöhet létre. Kivéve persze ha ugyan abban a pillanatban, ugyan azzal a felhasználónévvel két gépen is elindítja a programot.
A kérdésedre én magam sem tudom a választ, pontosan emiatt kértem ötleteket.
Az xml és a csv mennyiben más, mint a sima excel tábla?
Ezeket még sosem használtam, pontosabban az MVH-nál történő egységes kérelem beadás kapcsán már találkoztam xml fájl-lal, meg mondjuk régen a DC++ kapcsán, de írni még nem írtam.Jelenleg úgy használom, hogy a program meghívja a fájlt, ír bele (pl.: a belépés dátumát rögzít), menti, majd pedig bezárja.
A felhasználók számára létrehozott aktualitásokat tartalmazó üzeneteket is ebben rögzítem és itt kerül rögzítésre, hogy olvasottá jelölte e az üzenetet vagy sem.
Jobban végig gondolva az üzenetes rész miatt akár végtelenségig is nyitva lehet a segédfájl egy felhasználó által, ha az üzenetablakra nem nyom semmit.
Lehet, hogy ide meg írnom kéne valami időlimites részt??? -
-
vilag
tag
Valahogyan ki lehet deríteni, hogy egy programból megnyitott fájl csak olvasásra nyílt-e meg?
Oka: a korábbiakban tárgyaltaknak megfelelően egy segédfájl létrehozása mellett döntöttem, tehát az elmentendő szükséges változókat ebbe teszem.
Mivel azonban a programot többen is használják (akár) egyszerre ezért előfordulhat, hogy a segédtáblát már megnyitotta írásra egy felhasználó (pontosabban ugye a program) amikor a másik felhasználó is meg akarja nyitni szintén írásra a fájlt.A segédtábla meglehetősen rövid ideig van nyitva (a lehető legrövidebb ideig), talán 1-2 másodperc, de statisztikailag van rá esély, hogy egyszerre nyissák meg.
Ezért a második felhasználó által futtatott program nem tudja elmenteni a fájlt.
Fentiek miatt indokoltnak látom ennek a hibalehetőségnek az előre történő lekezelését.
Esetleg tegyem közös használatúvá a fájlt?
-
vilag
tag
válasz
martonx #2088 üzenetére
Na igen, ez már valóban nem ma kezdődött, hanem egy messzi, messzi galaxisban...
Persze sok problémán átsegítettek már az itt tevékenykedők, főként martonx és sztanozs, és bizonyára még rengeteg kérdésem lesz, melyek közül számos hülyeség lesz
De aki nem kérdez, az általában nem is kap választ...
-
vilag
tag
válasz
sztanozs #2087 üzenetére
Csak UserFormon vannak vezérlők, mert gyakorlatilag a munkalapokat a felhasználók számára "kiiktattáma".
A felépítés: UserForm amenyen van egy Frame (persze több is de az most nem érdekes), amelyen belül található a ComboBox.
A ComboBox-nak kötött az értéktartománya, ezért mikor abban nem szereplő adatot viszel be, feljön egy MsgBox, melyen csak egy OK gomb van.
Ha ezt megnyomod, akkor a MsgBox értelem szerűen eltűnik, azonban a fokusz nem tudni hová kerül, mert a kurzor sehol nem villog, mintha a fókusz nem került volna vissza a UserForm-ra. -
vilag
tag
válasz
martonx #2079 üzenetére
Nem tudom, hogy számít e, de nem kell létrehozni a munkafüzetet, mert azt én már megcsináltam és azt nyitom ha bele kell írni, majd mentem és zárom, majd legközelebb ugyan ez a tábla kerül megnyitásra.
Úgy is mondhatnám ebben fogom tárolni a szükséges elmentendő dolgokat.
Az általad leírtakból azért megpróbálkozom a lehetőségekkel.
-
vilag
tag
válasz
sztanozs #2072 üzenetére
Köszönöm a javaslatot.
Nekem volt egy másik ötletem is, miszerint:
Minden Change-hez beírom ezt:
Thisworkbook.ActivateCsak kicsit fárasztónak találtam ezt a megoldást.
A te javaslatod szerint ha jól értem, akkor az összes eddigi "régi típusú" hivatkozásomat le kell cseréljem?
Vajon a keresés/csere megoldást kínál nekem erre a problémára????Másik problémára esetleg valami ötlet?
-
vilag
tag
Üdv!
Új kérdés merült fel bennem.
Alaphelyzet: van egy munkafüzetem ami automatikusan futtat egy userformot indításkor és a felhasználó minden változtatást csak ezen végezhet.
Lehet e azt valahogyan vizsgálni, hogy a nem az általam említett munkafüzet kerül fókuszba.
A kérdés oka az, hogy elég sok (de egy is elég lenne) vezérlőm menet közben kap értéktartományt RowSoure segítségével az említett munkafüzetből. Na már most ha a felhasználó futtatás közben a tálcán egy másik munkafüzetre kattint, akkor az enyém kikerül a fókuszból. Így amikor legközelebb a vezérlő a munkafüzetem egy bizonyos nevű lapjának bizonyos helyéről próbál értéket felvenni, akkor hibára fut mondván (és persze jogosan), hogy "Could' t set RowSource Property" Minthogy az aktív munkafüzetnek nincs olyan lapja amire én hivatkozok.
Továbbá érdekelne az is, hogy egy írásvédett munkafüzetet megnyitva azzal lehetővé tehető e az kódból, hogy önmagáról levegye az írásvédettséget, írjon a munkafüzetbe, mentse el majd újra legyen írásvédett a fájl.
Ennek célja, hogy az alapjáraton a felhasználók általi véletlen módosítások elkerülése érdekében levédett munkafüzetben bizonyos beállítások (ellenőrzött körülmények között) eltárolhatóak legyenek.
Előre is köszönöm a közreműködést!
-
vilag
tag
Valaki áruja már el, hogy a vezérlők fókuszba hozása (setfocus paranccsal) mi a fészkes fenéért nem működik rendesen????
Már megőrjít.
Pl.: van nekem egy comboboxom amiben a település neveket lehet begépelni. Ha a megadott településnév hibás, akkor sima msgbox-al kap egy hibaüzenetet. Ezt 'leokézza', de a fókusz eltűnik, nem tudni hol van. Ez azonban még mind semmi, a visszatérési pontra (az msgbox üzenete utáni sorba) megírom a setfocus parancsot, de ennek ellenére sem kerül fókuszba.Valaki mondja már meg mi vezérli, hogy mikor mi van fókuszban.
Köszönöm!
-
vilag
tag
Mi a különbség a CheckBox_Click és a CheckBox_Change között?
Értelmezésem szerint az lenne, hogy az egyik akkor fut e ha kattintanak, a másik meg akkor ha megváltozik.
Ez azt jelenti, hogy ha máshonnan változtatom meg az értékét, a change akkor is lefut, míg a másik esetben nem? -
vilag
tag
válasz
sztanozs #2050 üzenetére
Basszus, már össze-vissza beszélek.
A középre rendezéses kérdésem a MsgBox-ra vonatkozott. Csak ezért nem akartam egy új formot csinálni, gondoltam hátha van lehetőség arra, hogy középre rendeztessem a megjelenítendő szöveget, netalán tán még a színét is megváltoztassam.
Azonban ha jól értem akkor ezekre nincs lehetőség.A korábbi kérdéseim pedig azért merültek fel, mert le akartam cserélni egy InputBox-ot saját formra, mert szükség lenne még ezen a beviteli panelen néhány más dolog 'eldöntésére' is.
Ez utóbbi nagyjábból úgy tűnik sikerült, bár most újra gondoltam az egészet és lehet, hogy máshogyan oldom meg. -
vilag
tag
válasz
Bobrooney #2045 üzenetére
Volt nekem egy MsgBox-om amit gondoltam egy öt perces munkával lecserélek egy sajátra (persze némi plusz funkciót is rá akartam tenni)....
... azóta eltelt mondjuk egy hét, meg rászántam már kb. 12-13 órát és most tartok ott, hogy lehet, hogy működőképes lesz a dolog....
...de az is lehet, hogy csak én vagyok ennyire béna
-
vilag
tag
MsgBox-ban lehet valahogyan állítani a szöveg elhelyezkedését (mondjuk szeretném ha középre igazított lenne benne a szöveg).
-
vilag
tag
Van egy másik problémám is, méghozzá az, hogy néhány esetben nem kerül fókuszba olyan vezérlő aminek a fókuszba hozására kiadtam a parancsot.
Itt nagy valószínűség szerinte közrejátszik az, hogy Userformok között vagyok kénytelen ezt a fókuszba hozást végrehajtani, de hiába írom teljes hivatkozással a vezérlő nevét, akkor sem kerül fókuszba.
Más esetekben pedig tökéletesen működik a dolog.Konkrétan az eset az, hogy van egy modal-ként meghívott UserFormom, aminek pl. OK és Mégsem gombbal történő bezárása esetén más-más vezérlőt szeretnék fókuszba hozni.
Az egyik esetben működik a dolog, míg a másik esetben nem.Ötlet?
-
vilag
tag
Sziasztok!
Újabb, eleddig megmagyarázhatatlan jelenséget tapasztaltam.
Van nekem egy UserFormom, ami a korábban javasolt módon modal-ként lett meghívva (bár szerintem jelen esetben irreleváns).Ezen a Formon vagy egy textbox, melynek a Change-ébe egy hosszúság vizsgálat van leírva:
Private Sub TextBox1_Change() 'Irányítószám mező
If Len(TextBox1.Text) > 4 Then
hiba = MsgBox("Magyarországi irányítószámnak ez kicsit hosszú lesz, nemde???", vbCritical + vbOKOnly, "Hibás irányítószám")
TextBox1.Text = Left(TextBox1.Text, 4)
End If
End SubA probléma az, hogy egyik esetben a change lefut a textboxba történő adatbevitelkor, míg a másik esetben pedig nem.
Teljesen tanácstalan vagyok, hogyan lehetséges az, hogy mikor kalapálom a billentyűzeten a gombokat és írok bele az említett TextBox1-be, akkor be sem lép a TextBox1_Change ()-be????
Valakinek valami ötlet?
-
vilag
tag
válasz
sztanozs #2014 üzenetére
Valóban ez lehet a megoldás.
Eleddig úgy tűnik, hogy ha "UserForm3.Show vbModal" paranccsal hívom meg a Formot, akkor beavatkozásra vár.
Szóval elvileg, így megoldható lesz, csak most meg már annyira belebonyolódtam a kódba, hogy nem találok ki belőle...
...na de majd holnap nekifutok újra tiszta fejjel.Addig is köszönöm a segítséget...megint.
Üdv, vilag
-
vilag
tag
válasz
sztanozs #2009 üzenetére
Őszintén lövésem nem volt mi az a Modalis meg nem Modális.
Némi googlizás után ezt találtam a VBA súgójában:
Constant Value Decription
vbModeless 0 UserForm is modeless.
vbModal 1 UserForm is modal (default)Bár példa nincs hozzá, így nem tudom hogyan lehet ezt a tulajdonságot állítani, de ha jól értelemezem, akkor a UserFormok alapesetben Modalis tulajdonságúak. Ezt támasztja alá, hogy kipróbálva nem lehet a felugró UserForm mögötti másik UserFormrot fókuszba hozni kattintással.
-
vilag
tag
válasz
sztanozs #2009 üzenetére
Az első probléma meg is oldódott!!
Eszembe nem jutott, hogy a projectet át is lehet nevezniA rövidített megoldás ennyi lett:
With Application
.SendKeys "%{F11}", True 'VB megnyitása
.SendKeys "^r", True 'Project Explorer ablak aktiválása
.SendKeys "SZTK" 'SZTK projectre ugrás
.SendKeys "~", True 'Enter leütés imitálása
.SendKeys "JELSZÓ" 'Jelszó megadása
.SendKeys "~", True 'Enter leütés imitálása
End WithNagyon köszönöm a segítséget!
A másik dologhoz:
Itt valami turpisság van szerintem.
Van ugyan ebben a programban egy másik form is ami hasonló körülmények között kerül meghívásra.
Nevezetesen a UsefForm1-en van egy gomb, aminek ennyi a kódja:UserForm2.Show
UserForm2 Initialize:
Private Sub UserForm_Initialize()
szoveg1 = "A fejlesztői felületre történő belépéshez jelszó szükséges!" + Chr(13) + Chr(13) + _
"(3 lehetőséged van)" + Chr(13) + Chr(13) + "Kérlek add meg a jelszót:"
szoveg2 = "A megadott jelszó hibás! Kérlek add meg a helyes jelszót!"
szoveg3 = "A megadott jelszó hibás! 1 további lehetőséged maradt!"
fejlec1 = "Kérlek add meg a jelszót! Még 3 további lehetőséged maradt!"
fejlec2 = "Érvénytelen jelszó! Még 2 további lehetősged maradt!"
fejlec3 = "Érvénytelen jelszó! Még 1 további lehetősged maradt!"
UserForm2.Caption = fejlec1
Label1.Caption = szoveg1
TextBox1.SetFocus
n = 1
End SubVégeredmény: a UserForm2 előtűnik és a TextBox1-ben villog a kurzor és bevitelre vár.
A különbség a másik esethez képest (szerintem) csupán annyi, hogy itt nem egy gomb megnyomása adja ki a UserForm3.Show parancsot, hanem az ha a ComboBox9
hange()-ben teljesül a következő feltétel (részlet a kódból):
If ComboBox9.Value = "Budapest" Or ComboBox8.Value = "Miskolc" Or ComboBox8.Value = "Debrecen" Or ComboBox8.Value = "Szeged" Or ComboBox8.Value = "Pécs" Or ComboBox8.Value = "Győr" And gkodkereses = False Then
Label24.Caption = ""
'irszam = Application.InputBox("Kérlek add meg a ""levelezési cím""-hez tartozó irányítószámot:", "Irányítószám megadása", irszam)
nagyvaros = True
UserForm3.Show
nagyvaros = False
(...) -
vilag
tag
A GroupBox (ha jól gondolom) olyasmi lehet mint a VBA-ban a Frame?
VBA-ban minden vezérlőnek van egy top és egy left tulajsonsága, ez határozza meg a 0,0 ponttól viszonyított helyzetét. Ez kódból könnyedén módosítható.
A Te kívánságodnál maradva pl.:
TextBox1.Top=TextBox1.Top + TextBox1.Height
ahol Height a TextBox1 magassága.
Tehát a TextBox1 fölülről viszonyított új helyzetét egy TextBox1 magasságnyival lejjebb határoztuk meg.
Feltételezem a Groupboxnak is lehet ilyen tulajdonsága és így a fenti példából kiindulva könnyedén eltolhatod azt.
-
vilag
tag
Üdv!
Az előzőektől független problémám támadt amire nem találom a megoldást és már az őrületbe kerget.
Fut egy rutin, ahol az egyik sornál ha egy feltétel teljesül akkor Show paranccsal meghív egy UserFormt.
Ezzel még nem is lenne gond, azonban a UserForm megjelenésekor lefut az említett UserForm Initialize rutinja -és ahelyett, hogy megállna és bevitelre várna- fogja magát és visszatér az eredeti rutinba és megy tovább.Mi a frászért nem áll ez meg nekem?
A kód (természetesen sallangok nélkül):
Eredeti rutin:
(...)
nagyvaros=true
UserForm3.Show
(...)UserForm3:
Private Sub UserForm_Initialize()
If nagyvaros = True Then
UserForm3.Caption = "Irányítószám megadása!"
szoveg = "Kérlek, add meg az irányítószámot! Ha Pf.-hoz tartozó irányítószámot" + Chr(13) + Chr(13) + _
"adtál meg, akkor a jelölőnégyzet bepipálásával jelezd azt!"
Else
UserForm3.Caption = "Postafiók irányítószámának megadása"
szoveg = "Kérlek, add meg a postafiók irányítószámát!" + Chr(13) + Chr(13) + _
"(Ha nem postafiókról van szó, nyomd meg a ""Mégsem"" gombot!)" + Chr(13) + Chr(13) + "Postafiók irányítószáma"
End If
Label1.Caption = szoveg
TextBox1.Text = pfirsz
TextBox1.SetFocus
End SubInnen meg fogja magát és megállás nélkül visszatér az eredeti kiugrási pontra.
Mért nem áll ez meg nekem????Biztosan triviális a megoldás, de nem jövök rá...
-
vilag
tag
válasz
sztanozs #1999 üzenetére
Nos, működik a dolog. Már csak egy kicsi szépséghiba van benne:
Hogyan lehet a Project Explorer ablakban egyértelműen azonosítani egy Projectet?
Sajnos a név begépelés csak a szóközig működik, aztán már csak pittyeg, és hát a szóközig mindegyiknek ugyan az a neve ("VBAProject").A hivatkozott oldalon ez a programkód van:
Sub Gomb2_Kattintáskor()
Workbooks.Open "C:\Your\File\Path\YourFileName.xls"
With Application
'Go to the VBE
.SendKeys "%{F11}", True
'Activate Project Explorer window
.SendKeys "^r", True
.SendKeys "VBAProject" + Chr(32) + "(Próba.xls)"
'Tab your way to the workbook project
'Note - - when I tested this, it was in a separate workbook,
'following 6 add-in projects.
'"YourFileName" was the 8th project in my PE window,
'so 9 tab hits were required.
'You could also down-arrow using .SendKeys "{DOWN}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
'Simulate the Enter key
.SendKeys "~", True
'Enter your password - - this example is "Password"
.SendKeys "Blackout"
'Enter again
Password
.SendKeys "~", True
End With
End SubItt TAB-okkal van megoldva a probléma, de nekem ez nem jó, mert nem ismert, hogy a program futtatásakor hány darab project fut és azok milyen sorrendben vannak.
Én jelenleg így alakítottam át a kódot, de a megfelelő project kiválasztása nem működik, erre keresek megoldást.
Sub Gomb2_Kattintáskor()
With Application
.SendKeys "%{F11}", True
.SendKeys "^r", True
.SendKeys "VBAProject" + Chr(32) + "(Próba.xls)" 'Sem így sem "VBAProject (Próba.xls)"-t beíva nem működik
.SendKeys "~", True
.SendKeys "Password"
.SendKeys "~", True
End With
End SubÜdv, vilag
-
vilag
tag
válasz
sztanozs #1999 üzenetére
Valami protect, unprotectet használok már a programban (azt hiszem munkalapok védelmére).
Egyébként ha még így meg is lehet oldani, akkor is ott a másik probléma, hogy a fájl írásvédett.
A 2.-al kapcsolatos válaszodat ki tudnád egy kicsit bővebben fejteni, hogy hogyan lehetne megcsinálni?
Valami ilyesmire gondoltál:
Mondjuk a programom kérdez valamit, amire az adott választ szeretném eltárolni a programon belül.
Erre a program bezárja magát és elindít mondjuk egy batch fájlt ami adatátadással megkapja a kérdésre adott választ, majd ennek függvényében az eredeti programfájl fájlrendszeri jogait megváltoztatja írásvédettről nem írásvédettre, ezt követően pedig eltárolja a programban a választ, ráment, majd bezárja, írásvédetté teszi, és újra elindítja. -
vilag
tag
válasz
martonx #1998 üzenetére
Akkor megpróbálom kicsit részletesebben.
Van egy programom amiben a VBAProject jelszóval van ellátva, azért, hogy ha a program egy le nem kezelt hibára fut, akkor se tudjanak belépni Debug módba, nehogy szétbarmoljanak ott nekem valamit. Úgy sincs senkinek lövése hozzá.
A program jelenleg úgy van megírva, hogy ha elindítja az xls-t, akkor egyből userform jön fel, és a munkafüzet láthatatlanná válik. Ezen a UserFormon van egy gomba, ami arra hivatott, hogy Unloadolja a Formot, és így elérhető lesz a Basic. (Ennek a gombnak a megnyomása jelszót kér, a biztonság kedvéért.
A jelen helyzetben, így kétszer kell jelszót megadnom.
Azt szeretném megoldani, hogy ha már a gomb megnyomásakor jelszót kell megadni, akkor ez oldja fel a VBAProjectet is.
Makrórögzítéssel próbáltam, de semmit sem vette fel.A 2.-al kapcsolatban volt néhány teóriám, hogy hogyan lehetne megoldani.
-egy másik fájl tárolná ezeket a változtatható dolgokat
-personal xls-ben tárolnám ezeket (azonban ebben az esetben ha a felhasználó másik géphez ül, akkor nem megoldás)
-környezeti változó létrehozása (a probléma ugyan az mint az előbb) -
vilag
tag
Üdv!
Több -egymással nem feltétlenül összefüggő- kérdés is felmerült bennem.
1. Programkódból fel lehet-e oldani a VBAProject védelmet?
Erre azért van szükség, mert ha esetleg valahol le nem kezelt hibára fut a program, akkor sem szeretném ha a programkódhoz (ha csak véletlenül is), de hozzáférnének, ezért eredetileg jelszóval van védve a Project. Van azonban egy gomb, amelynek megnyomása után a program jelszót kér, ezzel szeretném majd feloldani a VBAProject kódot ha megoldható.
2. Egy fájl írásvédett tulajdonságát le lehet-e venni, illetve vissza lehet e állítani programkódból (ráadásul azét a fájlét, amely a programot tartalmazza)? Sejtem a választ, de azért hátha...
Erre azért lenne szükség, mert eljutott odáig a program, hogy az eddigiekkel szemben szeretnék néhány a felhasználók által megadott/megválaszolt információt eltárolni a programon belül. Ha ez nem megy, akkor marad a külön fájlban, vagy környezeti változóban (esetleg a personal.xls-ben) való tárolás. Vagy esetleg valami egyéb ötlet?
Előre is köszönöm a közreműködést.
-
vilag
tag
válasz
martonx #1984 üzenetére
Ezzel nem is lenne baj, szívesen áttérek valami másra, de ahhoz kéne valaki aki tud is nekem segíteni és bevezet az új nyelv rejtelmeibe.
Eredetileg is azért lett a VBA, mert én semmilyen programozási nyelvet nem ismertem, a kollégám viszont ebben egész jó volt már akkor is amikor nekem igényem támadt bizonyos folyamatok programozására.Tudsz esetleg valakit aki segítene belemászni egy másik programozási nyelvbe?
Üdv, vilag
-
vilag
tag
válasz
martonx #1981 üzenetére
A másik baj pedig az, hogy csak egyszer fut le én pedig azt szeretném elérni, hogy ugyan úgy működjön mint az a gomb amivel lenyitom. Első kattintásra lenyílik, ha még egyszer kattintok akkor pedig összecsukódik.
A ComboBox1_Click() pedig sajnos nem erre való, mert csak akkor fut le amikor az értéklistából kattintok valamelyik sorra.
-
vilag
tag
válasz
martonx #1981 üzenetére
Először is köszönöm a segítséget!
Most jön a DE (mert ugye mindig van egy de).
Nem működik egészen flottul a dolog.
Úgy tűnik a Framek (mint már oly sokszor) galibát okoznak.Ha egy nem aktív Framen belül lévő vezérlőre kattintok rá, akkor elsőre nem működik a dolog.
Erre valami ötlet?
-
vilag
tag
Üdv!
Egy meglehetősen amatőrnek tűnő kérdésem lenne.
El lehet valahogyan érni, hogy pl. egy Combobox ne csak akkor nyíljon le ha a kis háromszögre mutatok, hanem akkor is ha bárhová a vezérlőre kattintok?Köszönöm!
-
vilag
tag
válasz
sztanozs #1957 üzenetére
Sajnos egyik általad vázolt verzió sem áll fent.
A probléma akkor is szokott jelentkezni, ha ugyan erről a gépről csak A felhasználó nyitja meg a fájlt.
De ha jobban belegondolok, akkor a 2 verzió nagy ritkán előfordul, amikor én egy másik gépről nyitom meg ahol más van bejelentkezve.
Ezt kipróbálom.
-
vilag
tag
válasz
martonx #1952 üzenetére
Üdv!
Azon, hogy nem tudsz követni nem csodálkozom, mert néha már én magamat sem tudom.
Ez azonban nem véletlen, mert több különböző projekten is dolgozom, így a feltett kérdéseim nem feltétlenül egy problémakörben vannak. Gyakran pedig nincs is időm foglalkozni a projektekkel az egyéb más sürgős munkák mellett.A fenti probléma egyébkét azért merült fel, mert megpróbálom az adatbázis minél dinamikusabbá tenni, hogy ha az adatstruktúrán változtatni kell, akkor ez ne okozzon komolyabb fennakadásokat, mert korábbi munkákban ez igen nagy gondot jelent.
-
vilag
tag
válasz
sztanozs #1942 üzenetére
Üdv!
Úgy tűnik nálunk nem ez a hiba. A hivatkozás nem éri el az 1024 karaktert amiről a cikkben írnak.
A hiba pedig nem állandó jelenség, hanem ad-hoc jelleggel fordul elő.
Eddig nem sikerült a szabályosságot felfedezni, ami ezt okozza, így továbbra is homályban tapogatózom.Minden esetre köszönöm a linket, az ott leírtak is tanúlságosak.
Üdv, vilag
-
vilag
tag
Üdv!
VBA-ban szeretnék bizonyos rowsource tulajdonságot állítani változók segítségével.
A probléma az, hogy az oszlopoknak és a soroknak csak a számát ismerem és sehogyan sem sikerült r1c1 típusú hivatkozással megoldani a dolgot.Jelenleg egy ilyen félmegoldásom van:
szektorkod = Application.WorksheetFunction.Match("Szektorkód", ThisWorkbook.Sheets("Napló").Range("1:1"), 0)
szektornev = Application.WorksheetFunction.Match("Szektornév", ThisWorkbook.Sheets("Napló").Range("1:1"), 0)szektorkodvege = ThisWorkbook.Worksheets("Napló").Columns(szektorkod).End(xlDown).Row
x = Cells(2, szektorkod).Address
y = Cells(szektorkodvege, szektornev).Address
ComboBox27.RowSource = "Napló!" + x + ":" + yAz alsó 4 sort szeretném lerövidíteni max 2 sorra a vezérlők nagy száma miatt.
A legjobb megoldás talán az volna, ha sikerülne az oszlopok számát valahogyan visszaalakítani betűre, mert úgy a változókból egyszerűen össze tudnám rakni a rowsource-ot vagy a match eredményét valahogyan úgy megkapni, hogy az ne r1c1 típusú hivatkozás legyen.
Előre is köszönöm a segítséget!
-
vilag
tag
Volna nekem egy más jellegű kérdésem is.
A kollégám írt egy Microsoft Office Excel bővítményt, mely arra hivatott, hogy függvényként használva a hivatkozott cellában lévő számot szöveggé alakítja (pl.: 635 -> hatszázharmincöt).
Ezt a bővítményt a következő módon adtuk hozzá az excelhez:
Eszközök/Bővítménykezelő.../
Saját függvények -> pipa
Tallózás
Betallózom a fájlt és készA bővítmény, így már függvényként használható (pl.: a "b1" cellába beírom a következőt =szamszov(a1)).
A probléma az, hogy időnként ezt a betallózást újra meg kell csinálni, mert egyszerűen nem hajlandó az átalakítást elvégezni. Arra még nem sikerült rájönni, hogy ennek mi az oka.
Azonban ezekben az esetekben a (példát követve) a "b1" cellába beírt "=szabszov(a1)" képlet helyett, az van ott, hogy "='C:\Documents and Settings\[felhasználónév]\Application Data\Microsoft\Bővítmények\sajatfuggvenyek.xla'!szamszov(a1)a "b1" cellában pedig ez jelenik meg a szöveg helyett:#NÉV?
Van valakinek ötlete, hogy ez miért következik be időnként randomnak látszó módon?
Esetleg valami nincs megfelelően definiálva?
Tudna valaki ennek a meglehetősen idegesítő hibának a megszüntetésében? -
vilag
tag
válasz
sztanozs #1939 üzenetére
Elképzelhető, de nem tudom milyen gond okozhatja ezt.
Nekem egyszerűen be sem lép az újonnan megjelenő UserForm Userform_Activate () rutinba.
Nálam CheckBox1_Changeből indul a dolog, majd Userform_Initialize-el folytatódik, ahonnan teszünk egy kis kitérőt a TextBox1_Change-be, amikor is értéket vesz fel a TextBox1, onnan vissza a Userform_Initialize-be, majd vissza a CheckBox1_Change-be, aztán pedig itt a vége fuss el véle.
-
vilag
tag
válasz
sztanozs #1937 üzenetére
Üdv!
Megpróbáltam, de ez a Sub le sem fut
A UserForm_Initialize () után még lefut a TextBox1_Change(), majd visszatér a CheckBox1_Click ()-be és itt véget is ér a történet.
A vicces azonban az (amit eddig nem vettem észre), hogy a UserForm megjelenése után a textboxban van már érték (ez eddig is így volt) és ugyan fókuszba hozni nem tudom a textboxot, de backspace-el mégis ki lehet törölgetni azt ami benne van, írni viszont már nem tudok bele.
Más ötlet esetleg?
-
vilag
tag
Sziasztok!
Kis segítségre lenne szükségem.
Olyan problémába futottam bele VBA használata közben.
Egy UserFormon van egy CheckBox, ami ha true értéket kap, akkor UserFormX.Show paranccsal meghív egy másik UserFormot.
Az a probléma, hogy sehogyan sem tudom elérni, hogy ez utóbb megjelenő UserFormon levő TextBox legyen az aktív és abban villogjon a kurzor.A következőket próbáltam:
-a UserForm initializálás rutinjába írni a TextBoxX.Setfocus parancsot
-a TabOrderrel variálni,
-a másik UserFormon megírni a TextBoxX.SetFocus parancsot oda ahová visszatér
de semmi sem működött.Ötlet?
-
vilag
tag
válasz
martonx #1924 üzenetére
Tudom!
Emlékszem is rá, de (mert ugye mindig van egy "DE"...) jelenleg, hogy úgy mondjam hozott anyagból kell dolgoznom (persze azt is én írtam, nemi segítséggel), mert a meglévőt kell továbbfejlesztenem.
Sajnos az eddig is 8 órát kitevő munkaköröm mellé (amibe eddig azért belefért egy kis programozás is) egy távozó kollégám 8 órás munkakörét is ideadták (mondanom sem kell, hogy ugyan azért a bérért). Ennek következtében most 16 órányi munkát kell elvégeznem 8 órában, így sajnálatos módon örülök, hogy ha a toldozás-foldozásra jut időm.
Így új programozási nyelv megtanulásáról egyelőre nem is álmodhatok, sajnos...
Szerk.: melyik nyelvben is maradtunk, mert most kényszerszabadságra megyek egy időre (értsd: sok szabadság maradt, így most ki kell vegyem) és ha a sok bejgli evés mellett lesz kedvem, akkor lehet, hogy nekiesek.
-
vilag
tag
Félmegoldást már találtam a problémára.
Ha magát a munkalapot másolom, akkor a rajta lévő vezérlők és a hozzájuk tartozó kódok is mennek.
Sheets("Munka1").Copy After:=Sheets(1)
Ezzel viszont az a baj, hogy a 255 karakternél többet tartalmazó cellákat szépen lecsonkolja.
Ezt követően megpróbálkoztam azzal, hogy a munkalapon lévő adatokat másolom és irányított beillesztéssel (értékként) az új munkalapra másolom. Ennek viszont az a baja, hogy az egyesített celláknak azonos méretűnek kell lennie.
A vicc csak az, hogy azonos méretűek.Erre esetleg valami megoldás?
Üdv, vilag
-
vilag
tag
Üdv!
Az lenne a kérdésem, hogy egy teljesen új munkafüzetbe hogyan lehet egy gombot, illetve egy hozzá tartozó kódot átvinni?
Egy jelenlegi kódrészletemnek az a feladata, hogy egy munkalapot (amint elvégeztetem a különböző számításokat ésatöbbi) másoljon, hozzon létre egy új munkafüzetet, oda pedig illessze be irányított beillesztéssel az értékeket.
Innen akarok továbblépni abba az irányba, hogy a létrehozott új munkafüzet adott munkalapján kellene nekem egy gombot létrehozni, ami végrehajtja a hozzá tartozó parancssort.
Előre is köszönöm a segítséget!
Üdv, vilag
-
vilag
tag
Üdv!
Lenne egy olyan kérdésem, hogy valamely vezérlő RowSource-át be lehet e állítani úgy, hogy nem cella neveket adok meg hanem oszlop és sorszámokat?
Pl.: Combobox1.RowSource = "napló!a2:b5" helyett "napló!xy:xy", ahol x=oszlopszám és y=sorszám
Azért lenne szükséges, hogy ha esetleg a forrástáblába be akarok szúrni egy oszlopot vagy bővíteni akarom a sorok számát, akkor ne kelljen az egyes vezérlők tulajdonságait folyton kézzel áligatni.
Az már megvan, hogy a kívánt oszlop fejlécét megkeresve az adott táblában kinyerem az oszlop sorszámát az
Application.Worksheetfunction.Match-el.
Vagy olyan megoldás is érdekel, amelyben a keresés eredményeként nem oszlopszámot hanem oszlonevet kapok vissza.
Ez talán még jobb volna.Lehetséges?
Ha igen, akkor hogyan?Köszönöm!
Üdv, vilag
Új hozzászólás Aktív témák
Hirdetés
- MacBook Air 15 M3 8 / 256GB dobozos 12 hónap garancia
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- Beszámítás! Sony PlayStation 5 825GB SSD lemezeskonzol extra játékokkal garanciával hibátlan működés
- BESZÁMÍTÁS! Gigabyte B450M R5 5600X 16GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Seasonic 520W
- Dymo LabelWriter 400 - Hőpapíros címkenyomtató
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest