- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Mesterséges intelligencia topik
- HBO Max & OD topic
- ASUS routerek
- Windows 10
- A pápa egyre jobban tart a romlott AI veszélyeitől
- Hálózati / IP kamera
- Milyen NAS-t vegyek?
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Mikrotik routerek
-
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
-
Fferi50
őstag
Szia!
Szerintem a makrót a teljes nevével kell meghivatkozni. Ezt meglesheted, ha megnyitod mindkét munkafüzetet, majd a fejlesztőeszközök - makrók menüpontra kattintva láthatod, hogy az aktív munkafüzet makrói "simán", a másik munkafüzetéi pedig "hosszú névvel" vannak az ablakban.
Ez alapján próbáld.
(Bár én inkább beletenném az y makrót is az első munkafüzetbe (ha lehet), pláne, ha utána már nem csinál semmit egyik munkafüzet sem.)
Üdv.
-
gyu84
tag
Üdv!
Makróval kapcsolatban szeretnék segítséget kérni.
Adott egy 13 oszlopból álló táblázat, az A oszlopban termékek, a B-M oszlopkban pedig havi bontásban szám értékek. Ezt úgy kellene egy másik fülre átmásolni, hogy a hónapok egymás alá mennének, az A oszlopban maradna a terméknév 12x egymás alatt, a B-ben a számérték, a C-ben pedig 1-12-ig a hónapok száma, amit elmentek CSV-ként. Próbáltam keresni olyan makrót ami nem összefüggő tartományokat másol, de nem sikerült használhatót találnom.
Segítséget előre is köszönöm! -
Fferi50
őstag
Szia!
A ciklus(ok) kb. így néznének ki:
sub masolom()
set m1=sheets("Munka1") ' ahonnan másolok
set m2=sheets("Munka2") ' ahova másolok
m2sor=2 'ide jön a másolás első sora
for xx= 2 to m1.usedrange.rows.count
if not isempty(cells(xx,1)) then
for yy=2 to 13
m2.cells(m2sor,1).value=m1.cells(xx,1).value
m2.cells(m2sor,2).value=m1.cells(xx,yy).value
m2.cells(m2sor,3).value=yy-1
m2sor=m2sor+1
next
endif
next
end subElvileg a Munka1 munkalap minden sorát átmásolja a Munka2-be függőlegesen, az első oszlopba beírja mindig a terméknevet, a második oszlopba a hónap adatát, a harmadik oszlopba a hónap számát.
Üdv.
-
Mittu88
senior tag
válasz Mittu88 #23458 üzenetére
Hátha érdekel másokat is:
Ha a cella képletet tartalmaz ( = jellel kezdődik), enterre a sorrend: Calculate -> Change -> Selectionchange.
Ha csak beírunk valamit, NINCS Calculate.
Ha van érvényesítés és rossz értéket írunk be, annyiszor lefut a Change esemény, ahányszor módosítani akartuk a cella értékét. -
pdw_ph
tag
Mivel a topik nagyja VBA-ról szól, érdekelne, hogy mi a véleménye a szakértőknek annak jövőjéről?
Azzal valszeg mindenki egyetért, hogy egyhamar nem fog kihalni, de pl. ha azt nézzük hogy a Power BI dolgok (Power Pivot / Query / View / stb.) talán a legfelkapottabb dolgok manapság és amik már tudtommal abszolút nincsenek VBA-képessé téve én elgondolkodtam rajta, hogy vajon meddig fogja a Microsoft alkalmazni a VBA-t... -
bbTamas77
aktív tag
Van egy problémám, Excel-be importáltam adatokat egyszerű szerkezetű Access táblából.
Importálás sikeresen lefutott, majd automatikusan megjelent a fejléceknél a szűrő gombjai.
A mezők adattípusait beállítottam annak megfelelően.
Amikor egy adatra hivatkoznék, hasonló formátumot ír ki:
=Táblázat_Rendelesek[[#Ez a sor];[Költség]]
Hogyan lehetne megoldani, úgy, hogy A2+D2 formátumú legyen?
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz bbTamas77 #23462 üzenetére
Ráállsz az adott terület egyik cellájára. Tervezés | Eszközök | Átalakítás tartománnyá.
Ekkor a képlet =Munkalapnév!A2 + Munkalapnév!D2 lesz. Így is hagyhatod, vagy a csere funkcióval az összes Munkalapnév! szöveget törlöd a lapról.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Mittu88
senior tag
válasz Delila_1 #23463 üzenetére
Hogy kell úgy változót deklarálni, hogy mindenhol ugyanaz legyen?
ThisWorkbook-on deklaráltam egy 'valtozotte' nevű boolean változót úgy, hogy Public valtozotte as Boolean, de a Worksheet eseményeinél azt írja, hogy nincs deklarálva <Expression not defined in this context>
Ha nem Public-kal kell, akkor hogy?szerk.: Bocsi, véletlenül a válaszol-ra nyomtam.
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz Mittu88 #23464 üzenetére
Próbáld ki Munka1-ről indítva a lentieket.
A change eseményt a Munka1 laphoz vidd be, a másikat modulba.Private Sub Worksheet_Change(ByVal Target As Range)
MásikMakró Target.Row, Target.Column, Target.Value
End Sub
Sub MásikMakró(sor, oszlop, nev)
Munka2.Cells(sor, oszlop) = nev
End SubVáltozók értékét így is átadhatod másik makrónak. Arra ügyelj, hogy a fogadó makróban ugyanaz legyen a változók sorrendje, mint az indítóban. Látod, nem kell azonosaknak lenniük a neveknek, ám a Change makróban felvehetsz 3 változót az átadáshoz – de minek?
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
őstag
válasz Mittu88 #23467 üzenetére
Szia!
A Public deklaráció nem azt jelenti, hogy globálisan van generálva a változó. Az osztálymodulokban (Thisworkbook, Munkalapok kódmoduljai, stb) deklarált Public változók is elérhetőek mindenhonnan, csak az általam korábban már mutatott módon. (Ha elkezded írni bárhol máshol pl. Thisworkbook. a pont után láthatod a többi tulajdonság között a Public módon deklarált változókat is.)
A Global deklaráció csak standard (nem osztály) modulban használható.
A Public deklaráció standard modul esetén szintén nem kér teljes nevet, mert ott megtalálja.Üdv.
-
slashing
senior tag
Mit rontok el?
A következőt kéne ellenőrziznem:
D4-től egy sorban vannak a fejléc adatok(az adatok megnevezése) bármilyen szöveg/szám akármi lehet... alattuk az adatok. Azt akarom megvizsgálatatni hogy a fejléc hány oszlopos illetve az alattuk lévő adatok hány oszlopban vannak ha nem egyenlő akkor exit sub, illetve ha ugyan egyenlőek az oszlopok de pl. foghíjasan vannak az adatok akkor szintén exit... ez utóbbit úgy gondoltam hogy ha a kijelölt tartományban vannak üres cellák akkor az biztos hibás
Tehát a lényeg, ahány fejlécoszlop van annyi oszlopban kell legyen adat és azok nem lehetnek néhány helyen üresek, egyik oszlopban sem lehet több adat mint a többiben az adatok nem nyúlhatnak túl a fejlécoszlopokon
Sub hibaell()
Dim kijeloles As Range
Set kijeloles = Selection
Range("D4").Select
Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(4, ActiveCell.End(xlToRight).Column)).Select
hanyoszlop = Selection.Columns.Count
Range("D5").Select
Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Select
hanyoszlop2 = Selection.Columns.Count
ures = Application.WorksheetFunction.CountBlank(kijeloles)
If hanyoszlop <> hanyoszlop2 Or ures > 0 Then
MsgBox ("Hibás")
Exit Sub
Else
MsgBox ("jó")
End If
End Sub -
Delila_1
Topikgazda
válasz slashing #23472 üzenetére
Sub tele_e()
Dim sorok As Long, oszlopok As Integer
Range("A4").Select
Selection.CurrentRegion.Select
sorok = Selection.Rows.Count: oszlopok = Selection.Columns.Count
If sorok * oszlopok <> Application.CountA(Selection) Then
MsgBox "Hiányos kitöltés"
Else
MsgBox "Rendben"
End If
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.
-
slashing
senior tag
válasz Delila_1 #23473 üzenetére
Nem használhatjuk a Selection.CurrentRegion.Select mivel körbe van bástyázva egyéb adatokkal a vizsgálandó terület :/
illetve mindenképpen külön kell vizsgálni a fejlécet mint az adatokat mivel ha a fejléccel együtt jelöljük ki az adatokat akkor előfordulhat az eset hogy jónak minősíti azt is ha több oszlopban van adat mint ahány fejléccel elátott oszlop van viszont azok nem foghíjasan vannakha meg külön vizsgálom viszont csak egy sorban vannak adataim akkor meg valamiért kijelöli lefele az összes üres sort is az ActiveCell.End(xlDown).Row így meg értelmét veszti a countA mivel tuti talál üres cellát a kijelölésben
ez az alap felépítés, a sárga területen jobbra nem nyúlhatnak túl az adatok lefele meg bármennyi lehet. Ez nem fix szélességű 20 különböző variáció van a fejlécekre
-
Delila_1
Topikgazda
válasz slashing #23474 üzenetére
Sub tele_e()
Dim usor As Long, uoszlop As Integer, oszlop As Integer, maxx As Long, f As Boolean
uoszlop = Range("D4").End(xlToRight).Column
For oszlop = 4 To uoszlop
usor = Cells(Rows.Count, oszlop).End(xlUp).Row
If usor > maxx Then maxx = usor
Next
For oszlop = 4 To uoszlop
If Application.CountA(Range(Cells(4, oszlop), Cells(maxx, oszlop))) <> maxx - 4 + 1 Then
f = True
End If
Next
If f Then MsgBox "Hiányos" Else MsgBox "Rendben"
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.
-
-PLevi-
senior tag
Sziasztok!
Szerintetek ezt hogy lehetne megoldani?
Adott egy munkalap pár tucat sorral amiben különböző adatok vannak. Az "A" oszlopban sorszámok találhatóak. Hogy lehet úgy elrejteni tetszőleges számú sort, hogy a sorszámozás ne szakadjon meg? Értem ezalatt: Csak a látható sorok legyenek sorszámozva, az elrejtettek ne. Ráadásul ennek dinamikusan kellene működnie.Például:
1. aaa
2. bbb
3. ccc
4. ddd
5. eeeElrejtem a 2. és 3. sort. Ez esetben a sorszámozás így néz ki:
1. aaa
4. ddd
5. eeeDe én azt szeretném így nézzen ki:
1. aaa
2. ddd
3. eeeMajd miután visszaállítom az elrejtett sorokat ismét a kiindulási állapotnak kellene fogadni. Ha legközelebb a 3. és 5. sort szeretném elrejteni akkor hasonlóképpen...
Remélem érthető a felvázolt helyzet.
Köszönöm! -
Delila_1
Topikgazda
-
m.zmrzlina
senior tag
válasz -PLevi- #23477 üzenetére
Azt nem tudom, hogy makró nélkül megoldható-e de itt egy példa egy makrós megoldásra:
Sub atszamoz()
Cells(1, 1).Select
i = 1
Do While ActiveCell.Value <> ""
If ActiveCell.EntireRow.Hidden = False Then
ActiveCell.Value = i
i = i + 1
Else
ActiveCell.Value = 0
End If
ActiveCell.Offset(1, 0).Select
Loop
End SubA tartomány kijelölése másképp is megoldható mint itt. A lényeg: végigmész az egész tartományon leellenőrzöd, hogy rejtett-e az aktuális sor és ha nem rejtett adsz neki egy sorszámot. Ezt a makrót minden új szűrés után le kell futtatni.
-
m.zmrzlina
senior tag
válasz -PLevi- #23477 üzenetére
Egy kicsit kecsesebb ez a megoldás de a lényeg ugyanaz mint az előbbinél.
Sub atszamoz()
holavege = Range("A" & Rows.Count).End(xlUp).Row
Cells(1, 1).Select
i = 1
Do While Not ActiveCell.Row > holavege
If ActiveCell.EntireRow.Hidden = False Then
ActiveCell.Value = i
i = i + 1
Else
ActiveCell = Empty
End If
ActiveCell.Offset(1, 0).Select
Loop
End SubEz nem kíván folyamatos tartományt az A oszlopban és nem ír semmit a rejtett sorokba.
[ Szerkesztve ]
-
-PLevi-
senior tag
válasz m.zmrzlina #23480 üzenetére
Köszönöm szépen, ki lesz próbálva!
-
morgusz
csendes tag
Sziasztok!
Régóta nem jövök rá, hogy miért van az, hogy ha egy xls. fájlt csv.-ként (pontosvesszővel tagolt) mentek kézzel, akkor az (jegyzettőmbbel megnyitva) " ;"-vel tagolt lesz, ha makróval csinálom úgy csak ","-vel tagolt. Így viszont egy másik program nem eszi.
Min csúszik el dolog? Kérem segítsetek, mert egyre több a kézimunka!Köszi!
-
bteebi
veterán
Sziasztok! Azt meg lehet adni, hogy a "For Each" egy tartományban soronként vagy oszloponként haladva fusson le?
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz m.zmrzlina #23486 üzenetére
Akkor nem véletlenül nem találtam . Köszönöm, ki fogom próbálni.
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
m.zmrzlina
senior tag
válasz bteebi #23487 üzenetére
Négy irány:
Sub fornext_bjfl() 'balról jobbra fentről le
For i = 1 To 10
For j = 1 To 5
Cells(i, j).Select
Next
Next
End Sub
Sub fornext_jblf() 'jobbról balra lentről fel
For i = 10 To 1 Step -1
For j = 5 To 1 Step -1
Cells(i, j).Select
Next
Next
End Sub
Sub fornext_jbfl_() 'jobbról balra fentről le
For i = 1 To 10
For j = 5 To 1 Step -1
Cells(i, j).Select
Next
Next
End Sub
Sub fornext_bjlf() 'balról jobbra lentről fel
For i = 10 To 1 Step -1
For j = 1 To 5
Cells(i, j).Select
Next
Next
End SubRemélem nem írtam el.
-
Delila_1
Topikgazda
válasz m.zmrzlina #23488 üzenetére
Jobban látszik a haladás sorrendje, ha a Cells(i, j).Select sor helyett
MsgBox Cells(i, j).Address szerepel a makrókban.[ 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
Topikgazda
válasz m.zmrzlina #23490 üzenetére
Ezért alkalmazok szívesebben a tartalmukra utaló nevű változókat, mint pl. sor, és oszlop.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
bteebi
veterán
válasz m.zmrzlina #23488 üzenetére
Köszönöm mindkettőtöknek!
#23491: Van benne valami .[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
szőröscica
addikt
Sziasztok!
Excelben szeretnék egy névsort véletlenszerűen csoportokba sorolni. Függvényt nem lehet használni, és nem húzható kézzel az egyes csoportok alá a név.
van valami rendezési lehetőség erre?
Van 44 név, 6-7 fős csoportba kell tenni őket véletlenszerűen, fv hasznalata nélkül.
[ Szerkesztve ]
-
tgumis
tag
Sziasztok!
Problèma a következő:
Van egy munkafüzet amibe màs munkafüzetekből hivatkozzunk az adatokat.
Ha átrakom pendrivròl gépre a tovàbra is a pendriveròl hivatkozik hogy tudom megoldani,hogy onnan hivatkozzon -
Attas
aktív tag
Sziasztok!
Van rá mód, hogy egy olvasásra megnyitott dokumentum, bezárás és újra megnyitás nélkül, bizonyos időközönként automatikusan frissüljön?
Köszönet előre is a válaszokért.
"Az élet olyan mint az ásás. Néha pár gyökér feltart, de annak jól odacsapsz és mehetsz tovább!"
-
bteebi
veterán
válasz tgumis #23494 üzenetére
Át kell írnod a file elérési útvonalát. Ctrl+H → Egyebek → Hatókör: Munkafüzet (esetleg a "Listába mind" is legyen bepipálva, és akkor láthatod, hogy hol vannak ilyen hivatkozások), és a megfelelő részt (a file elérési útvonalát) kicseréled. Keress szögletes zárójelre vagy \-re, az biztosan lesz benne.
Cancel all my meetings. Someone is wrong on the Internet.
-
Retekegér
HARDVERAPRÓD
Hali!
Azt hogy tudom megcsinálni, hogy egy oszlopdiagram második oszlopa az első oszlop tetejénél kezdődjön? (Office 2007)
<< Heimdal >>
-
morgusz
csendes tag
Sziasztok!
Egy fájlban,több munkalapról, naponta változó számú sort kellene egy összesítő lapra, egymás alá másolni, valami makróval. Makró rögzítéssel csinálnám, de a változó sorszám miatt kellene még valami, hogy ne kelljen akkora területek másolását beállítani, amibe biztosan be fognak férni a várható változó nagyságú másolandók. Aztán még törölni is kell az üreseket.
Valahol láttam már ilyet de most nem találom.
Tudnátok segíteni?Előre is köszi!
Új hozzászólás Aktív témák
- TCL LCD és LED TV-k
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Yettel topik
- Huawei P30 Pro - teletalálat
- Azonnali fotós kérdések órája
- Mesterséges intelligencia topik
- Android alkalmazások - szoftver kibeszélő topik
- HBO Max & OD topic
- bitpork: Balatoni autós tali 2024
- gban: Ingyen kellene, de tegnapra
- További aktív témák...