- Felháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasni
- A luxusmárkáknak kell a bitcoin, az USA jegybankjának nem
- Letiltja az USA a politikusokat a telefonhívásokról és szöveges üzenetekről
- Nagy áttörés jön a napelemek piacán, nem kell annyi hely a paneleknek
- Belenyúlt az USA az Epic Games igazgatótanácsába, nyomoz az NVIDIA
-
IT café
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Mutt
senior tag
válasz alfa20 #53339 üzenetére
Szia,
Ha még aktuális, akkor itt vannak az én tippeim (KOCKA függvényben kezdő vagyok).
1. Power Query-ben amikor a kapcsolati betöltést választod, akkor legyen bepipálva az adatmodellhez hozzáadás.
2. Power Pivot fülön hozz létre egy mértéket (measure-t).
3. A képleted:=KOCKA.ÉRTÉK("ThisWorkbookDataModel";"[Measures].[result]";"[tbGfk].[GFK].&["&A2&"]")
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
félisten
válasz alfa20 #53342 üzenetére
Sajnos vannak alapvető dolgok, amikkel nem vagy tisztában, először azokat kellene rendbe rakni. Tényleg ne vedd ezt rosszindulatú kritikának, csak sok dologról kellene írni, pl:
"Majd a KOCKA.TAG függvényel a fejrészt be akartam tallózni, de már itt #HIÁNYZIK-ot dob."
Igen, mert a Measures-t olyan mezőknél használatos, amik származtatott/számolt mezők, tehát maga táblázat fizikailag nem tartalmazza.Adok pár linket, azokat nézd meg.
CUBEMEMBER (KOCKA.TAG) Function
CUBEVALUE (KOCKA.ÉRTÉK) – get directly values from Power Pivot data model - itt van egy kész letölthető táblázat is (Comment szekció előtt közvetlenül), töltsd le, sasold meg, pont olyan feladat van megoldva benne, amiről először kérdeztél.Ebben a topikban jó- és segítőkész koponyák vannak, természetesen ha így sem jön össze a dolog (vagy bármi egyéb kérdésed adódik stb stb), akkor várunk vissza és ha tudunk, akkor segítünk.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz alfa20 #53339 üzenetére
A #HIÁNYZIK hiba sok mindentől jöhet, de így ránézésre a képlet végén lesz a gond
"[tbGfk].[GFK].&["&A2&"]"
helyette próbáld ezt (nem kell az &-jel)
"[tbGfk].[GFK].["&A2&"]"
Természetesen az A2 cella olyan értéket kell, hogy tartalmazzon, ami szerepel a GFK oszlopban, ellenkező esetben szintén #HIÁNYZIK hibát kapsz.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Mutt
senior tag
válasz alfa20 #44251 üzenetére
Szia,
PowerPivot-tal megy, az kinézettel csak annyi a gond, hogy a lenti képen az I-J oszlopot el kell rejteni ha zavaró.
Lépések:
1. Pivot létrehozásakor az adatmodelt is be kell pipálnod ahhoz hogy elérd a DAX függvényeket.
2. Megtervezed a Pivot-odat.
3. A mezőválasztónál a fejlécen jobb klikk, majd új mező létrehozása, aminek a képlete esetemben:=CALCULATE(SUM(Range[Value]);FILTER(Range;Range[Date (Year)]=MAX(Range[Date (Year)])))-CALCULATE(SUM(Range[Value]);FILTER(Range;Range[Date (Year)]=MIN(Range[Date (Year)])))
A mezőneveket a sajátod szerint add meg. A képlet feltételezi hogy csak 2 éved van, MIN/MAX.
4. Behúzód a helyére az új mezőt.
5. Csinosítgatsz.Alternatív megoldás:
Pivot melletti oszlopban képletekkel kiszámolod a különbséget. Itt figyelned kell arra, hogy a Pivot tud bővülni vagyis a fix hivatkozások miatt érdemes INDEX/MATCH és IFERROR-okat használni.Egy másik lapra kiteszed a Slicer-t és ott megint INDEX/MATCH párossal megjeleníted a végeredményt. Az eredeti lapot pedig elrejted.
Ezt hívják dashboard-nak. A lényeg a vizualizáció, a háttérszámítások egy "rejtett" helyen vannak, a fő lapon mindig csak a kívánt tartalom jelenik meg dinamikusan.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
lappy
őstag
-
Fferi50
Topikgazda
válasz alfa20 #35979 üzenetére
Szia!
Ilyen esetben a "háromdimenziós" változó megadásra van szükség, meg kell mondani a makróban, melyik modulban van a változó.
A megoldás:Private Sub start()
ThisWorkbook.makroFileWB.Sheets(1).Range("A1") = "1000"
End SubIgen, kicsit bizarrnak hat, hiszen a makroFileWB változó tartalma a ThisWorkbook objektum, viszont magát a változót a ThisWorkbook. modulban deklaráltad.
Másrészt ne felejtsük el azt sem, hogy a ThisWorkbook objektum és az ActiveWorkbook objektum nem feltétlenül ugyanarra a munkafüzetre hivatkozik...bár alapból gondolhatnánk akár ezt is.
A ThisWorkbook mindig a makrót elindító munkafüzet lesz, az ActiveWorkbook pedig, mint a neve is mutatja, az éppen aktív munkafüzet.
Azt javaslom, hogy globál/publikus változókat mindig általános modulban deklarálj és a modulnévvel így könnyen tudsz rá hivatkozni: modulnév.változónévJavaslom, nézd át a változók élettartama és hatóköre részt a VBA helpben.
Üdv.
-
lappy
őstag
válasz alfa20 #33681 üzenetére
ezen az oldalon a nagyobb kódot próbáld ki
Bámulatos hol tart már a tudomány!
-
b3n1t0
csendes tag
válasz alfa20 #32820 üzenetére
Szia,
ezt a TextBox vezérlőt használva, nálam a kód működik, az első megoldás UserForm-on elhelyezett TextBox-okra vonatkozott
Private Sub CommandButton1_Click()
For i = 1 To 13
Munka1.OLEObjects("Textbox" & i).Object.Value = ""
Next
End Sub[ Szerkesztve ]
Poco X5 Pro 5G *** "Néha nulla vagyok / Néha meg egy / Nem osztok, nem szorzok / Nekem egyre megy" - (ETA - Nulladal)
-
bsasa1
csendes tag
válasz alfa20 #32305 üzenetére
Szia, persze simán.
Sub szamol()
Dim FolderPath As String, path As String, count As Integer
FolderPath = "mappa teljes elérési útja"
path = FolderPath & "\*.xls"
Filename = Dir(path)
Do While Filename <> ""
count = count + 1
Filename = Dir()
Loop
'count tartalmazza a .xls fájlok számát a mappában, ha xlsx, akkor fent is .xlsx
End Sub -
Delila_1
veterán
válasz alfa20 #32061 üzenetére
1 alkalommal elrejted az összes lapot úgy, hogy a lapfülön jobb klikk se mutassa azokat.
Sub Rejtes()
Dim lap As Integer
For lap = 2 To Sheets.Count
Sheets(lap).Visible = xlSheetVeryHidden
Next
End SubItt az első lap az, amit belépéskor mindenki láthat.
Belépéskor felfeded a felhasználó lapját (Sheets("Józs1").Visible = xlSheetVisible, a füzet bezárásakor ismét elrejted.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Fferi50
Topikgazda
válasz alfa20 #32061 üzenetére
Szia!
Ha a munkalap visible tulajdonságát xlVeryHidden-re állítod, akkor semmilyen felhasználói listában, sem jobb egérgombos listában nem látszik.
Felfedni is csak makróból/VBA-ból lehet. Mivel a projekt közös használat esetén nem nyitható ki a VBA nézetben sem, ezért gyakorlott felhasználó is csak akkor tudja megnézni, ha a közös használatot feloldja - az pedig jelszóval (bár nem túl erősen, de) védhető.A közös használatnak - főleg a mentésekkor - lehetnek problémás helyzetei, erre figyelj oda nagyon.
Üdv.
-
Fferi50
Topikgazda
válasz alfa20 #31954 üzenetére
Szia!
Amint az előző példából láthatod, a munkalap változó maga "tudja", hogy melyik munkafüzethez tartozik, tehát a hozzá tartozó tartományok is tudják a teljes címet. Ebből következik, hogy nem szükséges külön definiálni munkafüzet változót is.
A példád szerintem a következőképpen "fordítható le":
"=VLOOKUP(RC[-1],'[" & makroWB & "]" & makroWB_netto & "'!C1:C2,2,0)""=VLOOKUP(RC[-1],"& lapSH.Range("C1:C2").Address(External:=True) & ",2,0)"
Azt pedig Te döntöd el, hogy ez egyszerűbb, vagy bonyolultabb, mint amit eddig használtál.
Üdv.
-
Fferi50
Topikgazda
válasz alfa20 #31951 üzenetére
Szia!
Nekem úgy tűnik, kevered a makrót (VBA-t) a képletekkel. Változókat csak VBA-ban tudsz használni, a Range.Formula és annak különböző változataiban tudod a képleteket megadni a definiált változókkal, de az bonyolultabb egy kicsit.
Pl. Range("A1").Formula="=" & lapSH.Range("C1").Address(External:=True) makró sor beírja az aktuális munkalap A1 cellájába az =[Munkafüzet1.xlsx]Munka1!$C$1 képletet.A változók használatának és érvényességi körének is megvannak a maga szabályai, ezt javaslom olvasd el a Help-ben.
Szerintem egyszerűbb, ha neveket használsz a munkafüzet1-ben és azt használod a munkafüzet2-ben.
De a példádban egyszerűen egy másik munkafüzet adott tartományára hivatkozol és ez működik akkor is, ha a hivatkozott munkafüzet éppen nincs nyitva(!).Üdv.
-
-
Fferi50
Topikgazda
válasz alfa20 #30535 üzenetére
Szia!
1. "Dim WBmunka1 as Workbook
set WBmunka1 = Workbooks("vmi.xlsx').Sheets("zöld")"
Ez így azonnali hibát eredményez, mert a munkafüzetnek definiált változóba munkalapot szeretnél tenni!2.Range("P2") = _
"=IFERROR(VLOOKUP(RC[-11],'[" & vmi_mf & "]" & vmi_ml & "'!C1:C21,2,0),"""")"
helyett Range("P2").formula=
vmi_mf helyett pedig WBmunka1.name a helyes a képletben (ámbár az 1. pontban írtak szerint ez így nem működik).
Üdv.[ Szerkesztve ]
-
Delila_1
veterán
válasz alfa20 #30527 üzenetére
A megnyitáshoz kell tudnia a következő fájl nevét. Azt honnan veszi?
Ha a WSIde állandó, akkor az újabb WSInnen-ből másolás felülírja az előbb bemásolt adatokat.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
veterán
válasz alfa20 #30525 üzenetére
Sub Masolas()
Dim WSInnen As Worksheet, WSIde As Worksheet, usor As Long
Set WSInnen = Workbooks("Innen.xlsm").Sheets("Munka1")
Set WSIde = Workbooks("Ide.xlsx").Sheets("Munka1")
usor = WSInnen.Range("A" & Rows.Count).End(xlUp).Row
WSInnen.Range("A2:B" & usor).Copy WSIde.Range("A2")
End SubLátod, véletlenül sem találsz Active... hivatkozást. Bármelyik füzeten állva indíthatod a makrót.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
m.zmrzlina
senior tag
válasz alfa20 #30521 üzenetére
Próbáld így:
Worksheets("keres").Range(Cells(2, 1), Cells(usor, 2)).Copy Destination:=Worksheets(1).Range("A2")
Kicsit szebb lenne, ha a cél munkalapnak is megadnád a nevét "idézőjelek közt" és nem index-szel kellene hivatkozni rá. Meg hasznosabb is mert ha valaki elmozdítja az első helyről ezt a lapot akkor is a megfelelő helyre kerül a másolt adat.
-
Grodd
tag
válasz alfa20 #30255 üzenetére
Szia, sokkal egyszerűbben nem lehet megcsinálni, két sor mindképpen kelleni fog hozzá
Csak a felesleges ide-oda aktiválgatásokat tudod megspórolni: az elején nevezd el a fő (induló) worksheetet mondjuk MasterWorksheetnek (Ezt rakhatod akár Workbook_Open()-be) :Set MasterWorkbook = ActiveWorkbook
Aztán akárhol vagy éppen, akármelyik arra hivatkozhatsz ezen a néven akármilyen modulból, és pl bezárhatod így:
MasterWorkbook.Close SaveChanges:=True
Persze ennek feltétele, hogy publikusra deklaráld a változót:
Public MasterWorkbook As Workbook
[ Szerkesztve ]
-
Delila_1
veterán
válasz alfa20 #29032 üzenetére
Másik módszer
Dim fent As Double, bal As Double, usor
fent = Range("F" & Range("F" & Rows.Count).End(xlUp).Row).Offset(3).Top
bal = Range("F1").Left
ActiveSheet.Buttons.Add(bal, fent, 72, 26).Name = "Gomb"A gomb kívánt szélességét és magasságát add meg a 72 és a 26 helyett.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
veterán
válasz alfa20 #29032 üzenetére
Létrehozod a gombot tetszőleges helyzettel, nevet adsz neki, majd
usor = Range("F" & Rows.Count).End(xlUp).Row + 3
With ActiveSheet.Shapes("Gomb")
.Top = Range("F" & usor).Top
.Left = Range("F" & usor).Left
End WithProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
alfa20
senior tag
válasz alfa20 #29032 üzenetére
jobb ötletem nem volt így azt találtam ki, hogy formázom a táblát Arial 8-ra, majd:
ActiveSheet.Buttons.Add(267, usor * 11.25 + 11, 72, 26).Select
így pont 2 cellával van lejjebb mint az utolsó sor
"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)
-
earthy
újonc
válasz alfa20 #28205 üzenetére
Szia Alfa20! Nagy vagy, működik! Kipróbáltam, minden sorra érvényesül, és működik rendben!
Ha van még rám pár perced megkérhetlek hogy a miértjét is leírd majd, mert bár ezt várhatóan át tudom majd ültetni a végső táblába, szeretném megérteni a miértjét is...
=HAHIBA(INDIREKT(CÍM(SOR(B2);HOL.VAN("";B2:J2;-1)+1));"üres")
Köszönet mégegyszer!!!!
-
spe88
senior tag
válasz alfa20 #28028 üzenetére
ezzel a függvénnyel az a gond, hogy minden olyan elemet kivesz, ami többször szerepel az adott listában!
Nekem konkrétan ugyanaz a funkció kellene, mint az ismétlődések eltávolítása!
pl, 1,1,1,1,2,2,3,1,5,5,5,6,5,5,1,2
és akkor csak ezeket jelenítené meg: 1,2,3,5,6
tudom, hogy az Excel nem igazán egy adatbáziskezelő program, de azért ilyen opció csak van benne és mindenképpen függvény kellene, mert ebből megy tovább a többi függvény!
[ Szerkesztve ]
Spóroljunk! Kerül, amibe kerül!
-
Fferi50
Topikgazda
válasz alfa20 #28019 üzenetére
Szia!
Egy kis probléma: az ecell és ucell változókat Range típusú objektum változónak kell definiálnod.
dim ecell as Range, ucell as Range
set ecell=Sheets("Munka3").Range("A1")
set ucell=Sheets("Munka3").Range("E1664")
sourcedata:=Range(ecell,ucell).addressAz objektum változóknak set változónév= valami formában kell értéket adni.
Az ecell=Range("A1") értékadásban az A1 cella értékét kapja az ecell változó (vagy hibát kapsz, ha nem variant típusú).
Üdv.
[ Szerkesztve ]
-
bakabaka
csendes tag
válasz alfa20 #26625 üzenetére
Igen, kössz a segítséget, eddig én is nagyjából így gondoltam, viszont igazán biztos akkor lennék, ha megértettem, ha mind a négyféle hivatkozást rutinból tudnám kezelni. Mivel nem akarok visszaélni az időddel és a segítőkészségeddel, úgy érzem, az lenne igazán hatékony, ha két kérdésre teljesen rövid, konkrét választ kaphatnék:
1. Mi az alábbi két parancs közötti lényeges különbség, mikor melyiket használhatjuk/használjuk:
Range("D4").Formula =
Range("D4").FormulaR1C1 =2. Maradva az eredeti felállásnál, tehát D4-ben állunk, és a B3-as cellára hivatkoznánk, konkréltan milyen makróparancs hatására kerülnek bele D4-be az alábbi képletek:
=$B$3 (amennyire megértettem, ez "=R3C2)
=B3 (amennyire megértettem, ez "=R[-1]C[-2])
=B$3 (amennyire megértettem, ez "=R[-1]C2)
=$B3 (amennyire megértettem, ez "=R3C[-2])Bocsi, de azt hiszem, hogy nekem ez a dedós módszer kell ahhoz, hogy biztonsággal tudjam használni
Kálmán
-
Fferi50
Topikgazda
válasz alfa20 #26598 üzenetére
Szia!
Nem tudom, hogy a tömb-e az optimális megoldás ebben az esetben. Én valószínűleg másképp valósítanám meg.
Pl a betűket és a számokat egymás mellé írnám egy szöveges változóban szép sorban, valamivel elválasztva.
Ezután instr függvénnyel megkeresném a szövegben az A1 cella értékét, és a hozzá tartozó számértéket kinyerhetem a következő elválasztójel után.Vagy: használnám a Collection objektumot. Létrehoznék egy Collection típusú változót. A collection tartalmazhat egy kulcsot, ami jelen esetben a betű lenne, valamint egy, a kulcshoz tartozó értéket, ami a betűhöz tartozó szám. A számot úgy lehet elérni, hogy a Collection-ban a betű elemre hivatkozol.
Pl.
sub szamos
dim betuszam as new collection
betuszam.add key:="aa",item:=11
betuszam.add key:="bb",item:=22
msgbox betuszam("aa")
msgbox betuszam("bb")
end subÜdv.
[ Szerkesztve ]
-
Delila_1
veterán
-
m.zmrzlina
senior tag
válasz alfa20 #25354 üzenetére
Ez a megoldás nem foglalkozik azzal, hogy milyen nevet kapott a "keresztségben" az új munkalap egyszerűen a sorban a második munkalappal végzi a műveletet:
Sub ful_torol()
regi = ActiveSheet.Name
Sheets(regi).Copy After:=Sheets(1)
Sheets(2).Name = "leotom"
'makró... blabla
Sheets("leotom").Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End Sub -
Fferi50
Topikgazda
válasz alfa20 #25315 üzenetére
Szia!
Még mindig nem egyértelmű - az rendben, hogy -80/-100= +20 %
De a -100 és -150 az nem -150% hanem - 50% lenne. (-150 - (-100))=-50 -50/-100 =+50 %, de mivel -150 kevesebb, mint -100, ezért -50 %.Tehát (tény-terv)/terv az szerintem a kívánt eredményt adja.
Az előjelet pedig annak függvényében kell megállapítani, ha a tény < mint a terv, akkor negatív az előjele, ha nagyobb mint a terv, akkor pozitív. Ezt a viszonyítást a valós értékre értem (tehát -150 az kisebb, mint -100).
Remélem, érthető.
Üdv.
-
Fferi50
Topikgazda
válasz alfa20 #25308 üzenetére
Szia!
Bevallom nem egészen értem a számolási logikát:
Mitől lesz a terv -100 tény +200 százalék értéke +200%? Ha én jól gondolom, akkor ez vagy +300 % (hiszen a -100 és a +200 között éppen 300 van!), vagy ha fordítva gondolkodom, akkor - 300 %, hiszen nem csökkent 100 egységgel, hanem nőtt 200 egységgel - ami pl. költségnél egyáltalán nem kívánatos és dícséretes.
Aztán roppant érdekes ez a terv valamennyi, tény 0. Ez nálam kb. azt jelenti, hogy semmit nem sikerült megvalósítani, tehát a tervteljesítés 0 %!
A %-os változást pedig úgy számolhatod, hogy a tényből levonod az alapot és ezt viszonyítod az alaphoz.
Pld. 200- (-100)=300 osztva -100 = -300 %
Előjeles értékeknél bizony csínján kell bánni a százalékszámítás eredményeivel.
Üdv.
-
lumpy92
aktív tag
válasz alfa20 #25062 üzenetére
Köszönöm,igen erre gondoltam,igazából én is így pórbáltam megcsinálni, valamiért azonban az utolsó előtti tagot igaz-hoz akarja rendelni.
=HA(ABS(T14)>ABS(T13);(HA(ABS(T14)>ABS(T15);(HA(ABS(T14)>ABS(T19);T103;T14);T14);T14)))
"never send to know for whom the bells tolls; it tolls for thee"
-
Delila_1
veterán
válasz alfa20 #25031 üzenetére
Nem tudom, mit akarsz megjeleníteni (óra.perc, perc.másodperc) formában.
A lenti makró ó:pp:mm formában írja ki a futási időt.
A cellába való beírást megjegyzésbe tettem. Próbáld meg írással, és anélkül.Sub valami()
Dim t, b As Double
t = Now
For b = 1 To 300000000
' Cells(1, 1) = b
Next
MsgBox Format(Now - t, "h:mm:ss"), , "Futási idő"
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
alfa20
senior tag
válasz alfa20 #25013 üzenetére
hát azt hiszem sikerült:
Sub teszt2()
a = 2
While Cells(a, 1) <> ""
Cells(a, 5) = "=VLOOKUP(RC[-1],R2C2:R11C1,2,0)"
Cells(a, 5).Hyperlinks.Add Anchor:=Cells(a, 5), Address:=Cells(a, 5)
a = a + 1
Wend
End Sub"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)
-
szacsee
nagyúr
válasz alfa20 #25003 üzenetére
Köszi!
Ezzel a módszerrel működik, csak nem tudtam hogy keressem. MS Office-ban elsőre meglett a céges gépen, itthon is megtaláltam Open Officon, csak formázott szöveg-ként.
Mindkét Office szerencsére más munkalapra is bemásolja így, ezzel pofon egyszerű lesz nyomtatni így.
Köszi még egyszer! -
Delila_1
veterán
válasz alfa20 #24938 üzenetére
Nagyon klassz! Most már csak azt nem értem, ha az ikonját kitetted a gyorselérési eszköztárra, miért nem magát a kalkulátort tetted ki?
Ujjgyakorlat a makrózáshoz?
Akkor egy kis formázási módosítás:
A Display label SpecialEffect tulajdonságánál a 2-es jobban mutat.
A Label2 lehet nagyobb, de a Visible tulajdonsága legyen False
A Label1 BackStyle legyen 0, átlátszó, hogy a Display labelt ne takarja.Persze ízlések és pofonok...
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
veterán
válasz alfa20 #24922 üzenetére
Feltettem egy félkész fájlt. Hiányzik a 4-9 gombok makrója, és meg kell oldani, hogy több műveletet is végre lehessen hajtani egymás után.
Nézd meg az F1 cella képletét a névadásban.
Jó szórakozást!
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
veterán
-
Delila_1
veterán
válasz alfa20 #24917 üzenetére
Label-ben nem tudsz értékeket megadni, erre a Textbox való. Mivel a textboxok szöveges értéket adnak (a nevükben is ez szerepel), meg kell szoroznod azokat 1-gyel, hogy számolni lehessen velük.
A képen a lévő ComboBox RowSource tulajdonságába ezt írtam: Munka1!A1:A2, mert ebbe a két cellába írtam a + és - jelet, előttük aposztróffal.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
lappy
őstag
-
TomTeke2
csendes tag
válasz alfa20 #22475 üzenetére
Szerintem így csináltam, de azért leírom a biztonság kedvéért :
LinkedCell: Az adott lap cellája ahova az adatot szeretném bevinni, jelen esetben $A$9 (ez egy összevont cella, nem tudom van-e jelentősége)
ListFillRange: Az a tartomány, ahonnan neki az egyezéseket kellene kidobni, jelen esetben Daten! $E$3:$E$246.
Ezután ez jelenik meg a szerkesztőlécen:
=BEÁGYAZ("Forms.ComboBox.1";"")
Ha nem kattintok bele és rákattintok az A9-re, hiába írok bármit ami a listában tuti szerepel, nem dob egyezést, ha meg belekattintok, akkor utána már nem tudok belőle kilépni, folyamatosan hibás képletet jelez.Bocs hogy itt értetlenkedem, de ActiveX vezérlőt még soha sem használtam.
-
Fferi50
Topikgazda
válasz alfa20 #22467 üzenetére
Szia!
A global változót a modul elején kell definiálni nem pedig az eljárásban!
Modul elején (declarations részben) Global fajl1 as string
Így a Sub -ban már nem kell újra deklarálni.A második sub-ban is teljesen félreértettél. Ha Global a definíció, akkor nem kell a zárójeles paraméter, a global hivatkozás pedig pláne nem.
(Nem nézted meg a példám....)Összekeverted a két verziót....
Tehát
vagy:
Global fajl1 as string
sub egyik()
fajl1=activeworkbook.name
end subsub masik()
msgbox fajl1
kódok
end subvagy:
sub egyik()
dim fajl1 as string
fajl1=activeworkbook.name
masik fajl1
end subsub masik(byval fajlnev as string)
msgbox fajlnev
kódok
end subÜdv.
[ Szerkesztve ]
-
Delila_1
veterán
válasz alfa20 #22467 üzenetére
Így is átadhatod a változó értékét:
Sub indit()
Dim fajl1 As String
fajl1 = ActiveWorkbook.Name
vizsgal fajl1 'itt adod át a változót
End Sub
Sub vizsgal(fajl1) 'itt fogadod a változót
MsgBox fajl1
End SubA beírt példádban mindkét makrót End Sub() módon zártad le, hibásan. Ott már nem lehet zárójelpár.
A 2. makród végéről kivettem az indit makró meghívását, hiszen az egy végtelen ciklust hozott létre.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Fferi50
Topikgazda
válasz alfa20 #22464 üzenetére
Szia!
Két verzió lehet
az egyik, hogy Global változónak declarálod a fajl1 változót a modul elején (Global fajl1 as string), de lehet Public fajl1 as string és akkor a másik modulban a modulnév.fajl1 módon hivatkozhatsz rá.
a másik, a vizsgal makrót így alkotod meg:
sub vizsgal (byval fajlnev as string)
msgbox fajlnev ' szándékosan nem fajl1, hogy lásd a különbséget
end sub
A meghívása pedig vizsgal fajl1Üdv.
-
Delila_1
veterán
válasz alfa20 #21675 üzenetére
A Page2 azonos a beillesztett képpel, csak az objektumok neve más.
Private Sub CommandButton1_Click()
If OptionButton1_1 Then
OB1_1
ElseIf OptionButton1_2 Then OB1_2
Else: MsgBox "Mi lesz?"
End If
End Sub
Private Sub CommandButton2_Click()
If OptionButton2_1 Then
OB2_1
ElseIf OptionButton2_2 Then OB2_2
Else: MsgBox "Mi lesz?"
End If
End Sub
Sub OB1_1()
MsgBox "OB1_1"
End Sub
Sub OB1_2()
MsgBox "OB1_2"
End Sub
Sub OB2_1()
MsgBox "OB2_1"
End Sub
Sub OB2_2()
MsgBox "OB2_2"
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
veterán
Új hozzászólás Aktív témák
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - 1190 Ft-tól!
- Új, bontatlan World of Warcraft gyűjtői kiadások
- Game Pass Ultimate előfizetések 1 - 19 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN! AKCIÓ!
- Adobe Creative Cloud - 2024. 04. 05 - 2025. 04. 05-ig
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest