- Honor Magic6 Pro - kör közepén számok
- Szakított a OnePlus és a Hasselblad
- Nincs több titok: íme, a Samsung Galaxy TriFold!
- iPhone topik
- Android alkalmazások - szoftver kibeszélő topik
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Giga akkumulátort kínál a OnePlus Ace 6
- Milyen okostelefont vegyek?
- Yettel topik
- Műholdas AI chippel fedné le a bolygót a Samsung
-
Mobilarena
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
-
flash-
veterán
Sziasztok
Excel tablaban be vannak irva telefonszamok nevvel +36201234567 formatumban.
+36 20 123 45 67 formatumba szeretnem atallitani de nem engedi mert képletkent veszi akkor. Mi a megoldás? -
föccer
nagyúr
válasz
latya73
#54296
üzenetére
Keretezésree használj feltételes formázást. Sőt, igazándiból a cella színezésre is. Úgy nem gond neki, ha dinamikusan változnak alatta az adatok, mindig a megfelelő szabályrendszer alapján fogja a formázást beállítani.
Azt is meg lehet csinálni, hogy az üres sorokra ne rakjon keretet se, így ha az adat mennyiség változik, akkor is helyesen fog megjelenni.
üdv, föccer
-
latya73
csendes tag
Üdv!
Office 16 excelt nem tudom rávenni egy pofon egyszerű feladatra!
Formázott táblázatban sorba rendezés után a cellák színét viszi, de a cella keretet nem.
Tanácstalan vagyok. -
Szirtimorc
senior tag
Sziasztok!
Hogyan tudnám a függőleges Áramerősség (Tengelycím) feliratot átrakni balra?
Excel 2016
-
fila
senior tag
Sziasztok!
Ha egy cella tartalmának a 8. karakter utáni részét szeretném megkapni, hogyan tudom ezt megtenni? Milyen függvényt használjak?
Többféle hosszúságú a cella tartalom, de az első 7 karakterre nincs szükségem.Köszi!
-
Troy.
addikt
Sziasztok!
Miért van az hogy a szűrő bekapcsolásánál figyelmen kívül hagy egy sort?
Egész konkrétan az utolsó sort nem veszi bele a szűrésbe. Ilyet még nem láttam.
Próbáltam ki és bekapcsolni a szűrőt, Kijelöltem az egész adathalmazt hátha, de semmi.
-
föccer
nagyúr
válasz
macilaci78
#54281
üzenetére
Google sheet-et nem ismerem ennyire. Az újabb office-ben elkészített számolótábla nem valószínű, hogy menni fog. Régebbi office-ben nincsenek benne azok a tömbfüggvények, amik erre alkalmasak. Nyilván végig lehetne makrózni az egészet, de az szívás.
Ha egy minimálisan is használod az excelt mondjuk az összeadáson kívűl, akkor érdemes upgradelni.

üdv, föccer
-
macilaci78
nagyúr
válasz
föccer
#54280
üzenetére
Office 2016-om van, illetve vettem egy Office 2024-et is, de sikerült áttelepíteni a régi Win10-es gépről az új Win11-es gépre az Office 2016-ot, a 2024-es licenszet nem kellett felhasználnom.
Majd ha lesz időm ezzel foglalkozni, átküldöm.Viszont az újabb office-ban megcsinált dolgot lekezeli a régebbi? Esetleg google sheets?
-
föccer
nagyúr
válasz
macilaci78
#54279
üzenetére
Ez mind nem gond. Office2021-től ezek a natív tömbfüggvényekkel és az indirekt függvénnyel simán megoldhatóak.
Küld át azt, hogy pontosan miből, mit szeretnél látni, milyen szabályok szerint és összerakom, ha szeretnéd. Szoktam ilyesmiket megbízásból is csinálni, ez egy sima formanyomtatvány kezelés.
üdv, föccer
-
föccer
nagyúr
válasz
macilaci78
#54277
üzenetére
Miért nem hívsz fel, ha bajod van?

Csinálj egy nyomtatási képet tartalmazó munkalapot, meg egy számításokat, adatbeviteli mezőket tartalmazó munkalapot. Az utóbbin beviszed az adatokat, meg csinál mindent, a nyomtatási képen meg úgy rendezed el a dolgokat, ahogy akarod, és onnan nyomtatsz.
-
csferke
senior tag
válasz
macilaci78
#54274
üzenetére
-
ny.janos
tag
válasz
macilaci78
#54274
üzenetére
Szia!
Nézd meg ezt a leírást. -
macilaci78
nagyúr
Sziasztok!
Olyan kérdésem lenne, hogyan tudok "nyomtatóbarát formában" megjeleníteni egy keskeny táblázatot?
Például tankolást vezetem excelben: dátum, km-óra állása, a két tankolás közt megtett táv, tankolt liter, tankoláskori átlagfogyasztás. Ez egy A4-es lap felén elfér a nyomtatási nézetben.Azt szeretném, hogy a word-höz hasonlóan két hasábos legyen a nézet, tehát elkezdem a bal hasáb tetején, mennek a sorok, majd a jobb hasáb tetején folytatódik. Mindezt úgy, hogy a Szőrő eszköz működőképes maradjon.
Van erre valami csodaszer?
-
Fferi50
Topikgazda
válasz
Zola007
#54272
üzenetére
Szia!
Próbáld a következő szerint:
A feltételes formázáshoz kiválasztod a név mezőben a Táblázatod. Megadod hozzá a szabályt.
Amikor beszúrsz, akkor kiválasztod az adott sor első celláját, jobb egérgomb beszúrás - táblázatsorok felülre (gondolom nem probléma egy sorral lejjebb menni, ha alá szeretnél sort beszúrni).
Nekem ebben az esetben automatikusan bővítette a szabályokban az érvényességi tartományt és nem tett be új szabályt.
Üdv. -
Zola007
veterán
válasz
Delila_1
#54242
üzenetére
Szia
Átalakítottam táblázattá, átkerül a formázás, de amint beszúrok egy új sort, továbbra is bepakolja az új sorokat a feltételes formázások listájába.
mi lehet a gond?
pl. az egyik táblában A2 : K1000 táblára van beállítva egy formázás, de ha beszúrok egy sort akkor utána:
-
Fferi50
Topikgazda
válasz
Geryson
#54267
üzenetére
Szia!
Például feltételes formázás az adott oszlopra (vagy a mellette levőre). Szabály alkalmazásával, a szabály pedig, ha a C oszlopot figyelnéd, akkor:
=C1=C2
Kijelölsz hozzá és nem piros és nem zöld hátteret a cellához. Az érvényességi tartomány pedig az adott oszlop. Ha a C-t figyeled, de a D-be tennéd a megjelölést, akkor az érvényességi tartományként a D oszlopot add meg. A képlet marad ugyanaz!!!
Üdv. -
Telda
addikt
Sziasztok!
Darabjegyzéket vizsgálok, hogy minden festett alkatrész alatt van-e festék.
Jelenleg ezt úgy csinálom hogy leszűröm a festett cikkeket, azok pirosak (1) lesznek.
Majd leszűrőm a festékeket, azok pedig zöldek (2).
Ez után leszűröm a táblát hogy csak az 1 és 2 vel jelölt sorok látszódjanak és elkezdem görgetni lefelé és figyelem hogy minden piros alatt van-e zöld.
Ha két piros sor (vagy két 1-es) van egymás után az hiba.
Sajnos nem egyszer fordult már elő, hogy egyszerűen nem veszem észre.
Ebben kérnék segítséget vagy tanácsot.
Hogy ahol két 1-es követi egymást azt a cellát megjelölje. -
Silious
tag
Sziasztok!
Egy táblázatba szeretnék egy kis ellenőrzést végig vinni, ehhez lenne szükségem egy kis segítségre
Mellékelek egy mintát, Az E2 cellába szerepel egy képlet, amit szeretnék pár oszloppal arrébb, mondjuk a G2-be kiíratni, hogy pontosan milyen képlet szerepel az E2-be.
Erre van valami gyors mód? Lenne pár ezer sorom és látni szeretném, hogy a képletek jók-e...
-
Delila_1
veterán
válasz
Geryson
#54257
üzenetére
[Itt levezeti] a Mutt által mutatott függvényt.
-
bozsozso
őstag
Sziasztok,
Van egy excel fájlom amit a saját gépemen beállítok nyomtatásra, fekvőbe minden frankón megjelenik rajta. Átküldöm egy másik gépre másik nyomtatóvan nyomtatva már állóban akarja kinyomtatni, de ha átállítom fekvőbe akkor sem úgyanúgy jelenik meg mint nálam. A másik gépen libreoffice-al nyitják meg a táblázatot(ha ez fontos). Tudok én a saját gépemen beállítani az excelben, hogy ugyanúgy lehessen nyomtatni mint nálam?
Vagy ez inkább nyomtató kérdés?
Előre is köszönöm a segítséget.
-
Mutt
senior tag
válasz
Geryson
#54257
üzenetére
Szia,
MS365-ben van neked CSOPORTOSÍTÁS.ALAP.SZERINT (GROUPBY) függvényed is amit kipróbálhatsz.
T1-ben a képletnek próbáld ki ezt:
=CSOPORTOSÍTÁS.ALAP.SZERINT(F:F;K:K;SZUM;3)üdv
-
Geryson
addikt
Ha van egy lapom, amin az egyik oszlop értékeit szeretném összeadni, de megtartva a szeparációt a különféle termékek között (itt az "F"-oszlop), akkor mi ennek az elegáns módja? Ráhúztam egy pivotot, ez működik is, de emlékszem még valami másra is, ahol szépen összeadogatja az egyforma termékeket egy összesítő sorban.

-
Mutt
senior tag
-
-=MrLF=-
senior tag
Sziasztok!
Belefutottam egy olyan excelbe amiben ha kilóg az első sor, az oszlop azonosítók helyére (A B C D), bekerül az első sor szövege (ha egy bizonyos tartományon belül maradok)

Fájlok: [link] (97-2003 xls-be mentve is működik)
Próbálom ezt egy tök új fájlban összehozni, de nem sikerül és idegesít
, hogy nem jövök rá. Pedig jó lenne, mert tetszik hogy felső sor rögzítés nélkül is látszik mi micsoda.
Tudja valaki, mit, hogy nyomjak hogy ezt elérjem?
Köszi
(Nálam 2007 magyar Office van.) -
Pá
addikt
válasz
Geryson
#54250
üzenetére
Irányítószám egyszerű, feltételezve, hogy A1 cellában van a szöveg, amiből ki akarod nyerni
Ez mindig a szöveg első 4 karakterét adja vissza=LEFT(A1,4)A helységnévre most hirtelen két módszert látok, de talán lehetne ennél elegánsabban is?
Itt a 6. karaktertől az első vesszőig adja vissza az értéket:
=MID(A1, 6, FIND(",", A1)-6)Itt pedig az első space és az első vessző közti értéket adja vissza
=MID(A1, FIND(" ", A1) + 1, FIND(",", A1) - FIND(" ", A1) - 1)Ezek a függvények az angol excelben működnek.
Ha magyar exceled van, akkor
LEFT helyett használd, hogy BAL
MID helyett, hogy KÖZÉP
FIND helyett, hogy SZÖVEG.TALÁL -
Geryson
addikt
Sziasztok! Adott egy cella, ezzel a tartalommal:
1012 Budapest, Balogh Ádám út 35.
Segítene nekem valaki azzal, hogy:
- Kiszedi csak az irányítószámot?
- Kiszedi csak a helységnevet?Köszönöm előre is!
-
sajog159
aktív tag
Ha egy nagyobb cellában szeretnék sortördelést (mondjuk a számokat új sorban kezgjen). Hogy is kell?
-
Héraklész
aktív tag
válasz
Delila_1
#54244
üzenetére
Köszönöm!
Szóval a 2. kérdésem arra utal, hogy van-e olyan lehetőség, amivel összepárosítok termékneveket cikkszámokkal úgy, hogy később manipulálom (rendezgetem) a táblázatot, de a párok örökérvényűen együtt maradjanak, nehogy elcsússzanak óvatlan szerkesztéstől, amit csak később vennék észre? -
Delila_1
veterán
válasz
Héraklész
#54243
üzenetére
Állj a cellára, ami fölött, és tőle balra állandóan látni akarod az oszlopokat, ill. sorokat, majd a panelek rögzítése funkciót kapcsold be. Nem tudom, hol találod ezt a LibreOffice-ban, de biztosan megtalálod.
Ha a 3 első oszlopot akarod rögzíteni, és egyúttal a címsort is, akkor a D2-be állva végezd el.
A 2. kérdést nem értem. -
Héraklész
aktív tag
Hogyan lehet azt megcsinálni, hogy a táblázatban mondjuk csak 3 oszlop legyen, a többit ne lehessen görgetni/látni?
Illetve hogy egy terméknévhez egy cikkszám tartozik, a mellette lévő oszlopban/cellában, de bármi is történjen, ezek össze vannak kapcsolva, semmiképpen nem csúszhat el a cikkszám a nevekhez képest?(Igaz, a LibreOffice-ban jobban érdekelne, de ebből ki tudok indulni majd angolul, köszönöm.)
-
Zola007
veterán
Valakinek ötlete van miként lehetne egy feltételes formázást fixálni mint a függvényeknél egy tartományra (pl. A-H oszlopk) hogy dinamikusan bővüljön/szűküljön attól függően hogy illesztek vagy törlök belőle új sorokat.
Mert ez így hogy újabb kondíciós sorokat pakol be a formázás menübe kész agyf*sz
-
föccer
nagyúr
Igazándiból haladjunk a korral jeligére tegnap-tegnapelőtt regisztráltam rá, hamár a csapból is ez folyik. Egy már régebben megoldott feladatomnak egy kis részét írtam le neki próbából. A legelkeserítőbb az volt, hogy a legenerált xlsm fájlja nem volt megnyitható és néhány a végén még mindig maradt benne egy olyan hiba, hogy nem azt adta eredményül, amit kellett volna. Szóval kb ugyan arra a következtetésre jutottam, mint te. Az biztos, hogy a mélyszakmai elemzéseket nem fogom rá bízni.
A mostani feladatot kb sorrol sorra megfoglamaztam neki, a teljes szemantikát leírtam, lépésről lépésre. És így sem jött neki össze elsőre. De mókának jó volt, illetve a lehetőséget felmérni. -
Pá
addikt
válasz
föccer
#54237
üzenetére
Mostanában sokat dolgozom vele, tényleg sokat segít, de érteni is kell hozzá valamennyire.
Standard dolgokat szinte hibátlanul megoldja, de gyakran túlbonyolítva és nem optimalizálva. Pl ha bármit akarok keresni vagy elemeket megszámolni, akkor majdnem mindig végigiterál az egész range-n, ahelyett, hogy find vagy match-et használna, vagy countA vagy ilyesmit. Feleslegesen telepakol változóval mindent és ír 3 sort egymás alá, ahol egyik változóból kifejezi a másodikat, abból a harmadikat. Ezeket simán össze lehet vonni egy sorba meg ilyenek. Szóval végül is működik a kód, csak nem túl elegáns meg kicsit erőforrás pazarló.
De ezzel együtt lehet élni.Ha viszont valami kacifántosabb vagy nagyon nem standard dolgot kérsz tőle, akkor hajlamos nagyon belezavarodni, elkezd haluzni és szar megoldásokkal traktálni, amik nem működnek és ilyenkor nagyon könnyen bele lehet csavarodni és a végén elmegy 2 óra azzal, hogy vitatkozom vele és a szar megoldásait próbálom működésbe hozni.
Ez olyankor idegesítő, amikor amúgy a kódot megírhattam volna magamnak fél-1 óra alatt, csak gondoltam előtte gyorsan megkérdem, hátha összejön 10 perc alatt és a végén ott vitatkozom vele két órával később is.
-
Mutt
senior tag
válasz
föccer
#54237
üzenetére
Szia,
Nem kell két dictionary, hogy tudd melyik receptből mennyi van. A kulcs (key), mellett van az item tulajdonság is. A receptDict teljesen felesleges.
' Receptszámok összegyűjtése és számlálásaSet receptCount = CreateObject("Scripting.Dictionary")osszesMinta = 0For i = 2 To lastRowIf alapadatok.Cells(i, 1).Value = valasztottUzem ThenreceptSzam = alapadatok.Cells(i, 2).ValueosszesMinta = osszesMinta + 1If Not receptCount.Exists(receptSzam) ThenreceptCount.Add receptSzam, 1ElsereceptCount(receptSzam) = receptCount(receptSzam) + 1End IfEnd IfNext i
üdv -
föccer
nagyúr
Hogy ne legyen itt Wall of text
Itt tart a ChatGPT. Kis javítást kellett bele pakolnom, meg egy user formot rendbe raknom és igazitanom az elenvezéseket. Kemény cucc.
-
Mutt
senior tag
Sziasztok,
A Microsoft 1 évvel ezelőtt egy új függvényt mutatott be, amellyel kimutatást (pivot) lehet készíteni. Magyarul KIMUTATÁS.ALAP.SZERINT (angolul PIVOTBY) a függvény neve.
Nálam a kimutatás gyakran van használva (pár éve áttértem Power Pivot-ra a normál helyett), de eddig még nem próbáltam ki az új függvényt.
Tegnap egy kicsit játszottam vele és ezen tapasztalatot akarom megosztani veletek egy 130 ezer és 77 oszlopot tartalmazó adatosoron, ez kicsivel több min 10 millió cella, ez egy 37 MB-os XLSX fájlban van (aki teheti az sok adat esetén használjon inkább XLSB formátumot, mert ugyanez csak 10 MB, hátránya max annyi hogy lehet hogy más programok/rendszerek nem támogatják ezt a formátumot, illetve ha megsérül a fájl, akkor nagyobb az esély adatvesztésre).
Az új függvény (továbbiakban PIVOTBY) előnyei:
1) automatikusan frissül az eredmény ha az adatsoron változás van,
Itt nem vettem észre lassulást, gyorsan megkapjuk az eredményt (5 éves laptop 16 GB ram és i7-9850H CPU, Windows és Office is 64 bites).
2) Több összesítő (aggregátor) függvénye van mint egy standard Pivotnak, vannak olyanok amiket csak Power Pivot-tal lehetett eddig elérni (pl. szöveg összefűzés) és LAMBDA függvényt is tudunk írni.
3) nincs pivot cache (kimutatás forrásadatok/gyorsítótár) ami növeli a fájl méretét.
A 37 MB-os fájl normál Pivottal 46 MB lett, Power Pivottal 47 MB, mig PIVOTBY-al maradt 37 MB.Szerintem ezzel végére is értem az előnyöknek, a hátrány viszont bőven van.
1) A függvénynek 11 paramétere van, ebből 4 kötelező, de a valóságban kb. még 3-at (összegek/részösszegek mutatása, sorbarendezés, szűrő) célszerű használni.
Egy alap pivot is túl bonyolult (a sortörésekkel próbáltam az olvashatóságot segíteni).
2) Őrült képletek kellenek egyes esetekben , amiket a pivotban simán el tudtunk érni.
pl. nem csak összeget, hanem átlagot is akarunk számolni ugyanarra a mezőre.
3) Nincs formázás, így nekünk kell mindent csinálni. Ami azért kihívás, mert ez egy spill/terülő képlet, mindig annyi sort/oszlopot fog elfoglalni amire szükség van. Ha azt akarjuk hogy a totál sor/oszlop értékek máshogy nézzenek ki, akkor feltételes formázásokat kell használnunk. Ez sok idő tud lenni.4) Szűrő/szeletelő használata sem olyan egyszerű. (A mintában a BYROW sor a G1 cellában lévő év szerinti szűrést végzi el.)
Egy kis összegzés:
Egyszerűbb dolgokra lehet használni a PIVOTBY-t, de jelenlegi formájában még távol van egy normál PIVOT-tól. Vállalati környezetben én még kerülném/kerülöm.üdv
-
Derron
aktív tag
válasz
Delila_1
#54229
üzenetére
Zargatnálak még egy kicsit, ha szabad.
Jól működik ez a megoldás, viszont felmerült, hogy mi történik ha félre olvassák a vonalkódot. Szóval nem a megfelelő sort (Adatot sikerül beolvasni róla) hanem egy másik értéket, pl "V0". Van olyan megoldás, hogy ebben az esetben ne lépjen tovább, vagy vissza ugorjon arra a cellára ahova ez lett beolvasva? -
Mutt
senior tag
válasz
Pakliman
#54199
üzenetére
Szia,
Két megoldást tudok javasolni:
1. A Click eseményeket beteszed egy saját subroutinba és azonnal meghívod ahogy a vezérlőt (választó gombot) létrehoztad.Sub RunClick(obj As Object)Dim frm As MSForms.UserFormSet frm = obj.ParentWith frmSelect Case obj.NameCase "opbXYZ1".Label1.Caption = obj.Name & ": " & obj.ValueCase "opbXYZ2"frm.BackColor = 13882323MsgBox "hello world"Case "opbXYZ3"frm.BackColor = 14481663End SelectEnd WithEnd Sub
A Select Case-el csak bemutattam hogy eltérő ágakat tudsz létrehozni.2. Megvárod, hogy a vezérlő létrejöjjön és csak utánna változtatod meg az értékét.
A kódodon csak minimálisan változtattam (tartalmazza az 1-es lehetőséget is), a végén van a 2-es opció. Ott véletlenszerűen megváltoztatom az egyik vezérlő értékét, ekkor már le fog futni a Change esemény-Private Sub CommandButton1_Click()Dim ctl_OpB As MSForms.OptionButtonDim i As LongReDim opbArray(1 To 3)For i = 1 To 3Set ctl_OpB = Me.Controls.Add("Forms.OptionButton.1", "opbXYZ" & i, False)With ctl_OpB.Left = 100.Top = 150 + (i * 20).Width = 100.Caption = "opb_" & CStr(i).Visible = TrueEnd With'egyik megoldás, hogy létrehozáskor elindítod a saját kódodCall RunClick(ctl_OpB)Set opbArray(i).OptionButton = ctl_OpBNext iSet ctl_OpB = Nothing'másik megoldás, hogy létrehozás után változtatod meg az értékétDim r As DoubleRandomizer = Int(Rnd * 3) + 1opbArray(r).OptionButton.Value = Not opbArray(r).OptionButton.ValueEnd SubA class module-ban csak ennyi van:
Public WithEvents OptionButton As MSForms.OptionButtonPrivate Sub OptionButton_Change()Dim frm As MSForms.UserFormSet frm = OptionButton.ParentWith frm.Label1.Caption = .Label1.Caption & vbNewLine & OptionButton.Name & " - " & OptionButton.ValueEnd WithEnd SubPróbáld ki.
üdv
-
Mutt
senior tag
válasz
Fferi50
#54172
üzenetére
Sziasztok,
Én nem szoktam használni, de lehet tartományokat jelszavaztatni.
Mark ebben a videóban bemutatja, kb. 2:40-től kezdődik. Ezzel lehet eltérő "jogosultságokat" létrehozni. A videó végén azért elhangzik, hogy az Excel jelszavas védelmére építkezni nem szabad.üdv
-
Mutt
senior tag
Szia,
Szerintem itt fontos tisztázni azt, hogy amit a Personal.xlsb "Workbook_Open" eseményébe teszel, akkor az csak egyszer fog lefutni, amikor az Excel indulásakor az egyéni makrófüzet a háttérben megnyílik.
Azt akarod, hogy minden Excel fájl megnyitásakor legyen vmi ellenőrzés és azt ahogy tetted egy Class Module-al lehet megtenni.
Próbáld ki:
1. Personal.xlsb-ben legyen egy class module, a neve fontos clsApp legyen (ha más akkor a másik modulban kell módosítani). A tartalma pedig ez:Public WithEvents AppEvents As ApplicationPrivate Sub AppEvents_WorkbookOpen(ByVal wb As Excel.Workbook)Call OpenEvent(wb)End SubPrivate Sub AppEvents_WorkbookBeforeClose(ByVal wb As Workbook, Cancel As Boolean)Call BeforeClose(wb, Cancel)End SubAhogy látható két workbook eventhez (open és a beforeclose) rendeljük a saját kódunkat.
2. A Personal.xlsb-ben legyen egy normál modul amibe az alábbi kódok kellenek:
Dim AppObject As New clsAppSub Init()'ezt az egyéni makrófüzet Open eseményében fogjuk meghívniSet AppObject.AppEvents = ApplicationEnd SubSub OpenEvent(wb As Workbook)'ez az egyéni Workbook_Open eseményünk ahova tesszük a saját kódot'a megnyitott fájl ellenőrzése (a példában ha M-el kezdődik a neve)If wb.Name Like "M*" Then'hozzáadjuk a kedvenc makrónkat az eszköztárhozCall AddNewMenuItemEnd IfEnd Sub3. A Personal.xlsb ThisWorkbook eseményeibe pedig tegyük ezt be:
Private Sub Workbook_Open()Call InitEnd SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean)Call DeleteControls(True)End SubVagyis amikor elindítjuk az Excel-t, akkor az "Init" kódban megadott sor lefut, ami annyit tesz, hogy egy objektumot hoz létre ami tartalmazza az Excelben megnyitott fájlokat.
A másik pedig ha bezártuk az Excel-t teljesen, akkor előtte töröljük a saját menűt.4. Az egyéni parancs eszköztárra (QAT) kihelyezése.
Gyorselérési eszköztárra nem raktam még kóddal ki gombot, de a https://jkp-ads.com/rdb/win/s2/win004.htm oldalon találtam egy hasznos add-int, aminek a kódja szerint ez könnyen megy, de nekem nem jött össze. Az addin ettől még szuper, ha van sok saját makród, akkor ezzel tudod rendszerezni és elérni QAT-ról.Ami ment az egy új menű az eszköztáron. Én régen ezt használtam, MS365-ben most is megy.
Szóval van a normál modulban még 2 program, ami felteszi illetve leveszi a saját makródat.
Ami felteszi az így néz ki:
Private Sub AddNewMenuItem()'töröljük az esetleg létező saját menűtDeleteControlsDim CmdBar As CommandBarDim CmdBarMenuItem As CommandBarControlSet CmdBar = Application.CommandBars("Worksheet Menu Bar")'Add a new menu itemSet CmdBarMenuItem = CmdBar.Controls(CmdBar.Controls.Count - 1).Controls.Add'Set the properties for the new controlWith CmdBarMenuItem.Caption = "Saját Makró1".OnAction = "'" & ThisWorkbook.Name & "'!Kedvencem".Tag = C_TAGEnd WithEnd SubEhhez van egy C_TAG állandó a modul elején definiálva:
Private Const C_TAG = "Makrocska" 'C_TAG legyen egyedi névIlletve fent a kódban az OnAction végén van a makró neve (esetemben "Kedvencem"),
ami ennyit tartalmaz csak:Sub Kedvencem()MsgBox "Palacsinta", vbOKOnlyEnd SubAmi leveszi az pedig ez:
Sub DeleteControls(Optional tuti As Boolean = False)Dim Ctrl As CommandBarControlOn Error Resume NextSet Ctrl = Application.CommandBars.FindControl(Tag:=C_TAG)Do Until Ctrl Is NothingCtrl.DeleteSet Ctrl = Application.CommandBars.FindControl(Tag:=C_TAG)LoopEnd SubA fenti kódokkal el tudtam érni, amit szerettél volna:
1. Akár jelszavas fájlok esetén is (csak a megfelelő jelszó ismeretében) fut le az open esemény...
2. ami a kritériumoknak megfelelően (a példámban csak az nézem hogy a fájl neve M-el kezdődik-e vagy sem) kirak egy makrót az eszköztárra...
3. az Excel bezárásakor pedig leveszi a dolgokat.Próbáld ki, ha még kell.
A kódok alapja a Walkenbach VBA könyve (17-es fejezet). Régi (az újabbak sem hinném hogy rosszabbak), de még mindig nagyon jó. Én csak ajánlani tudom angolul tudóknak.Két fontos dolog:
1) Saját makrók esetén fontos tudni jól használni a Thisworkbook és Activeworkbook-ot.
2) Én inkább fixen kiraknám a makrót a QAT-ra és a makrót készíteném fel arra, hogy ha a fájl nem felel meg a feltételeknek akkor ne csináljon vele semmit.üdv
-
Delila_1
veterán
válasz
Derron
#54216
üzenetére
Tábázatként formázd az A: C tartományt. A C2 képlete:
=HA(BAL(A2;5)=BAL(B2;5);"OK";"NOK")
A Beállítások/Szerkesztés/Az Enter lenyomására a fókusz áthelyezése menüpontban válaszd a Jobbra opciót.
Az A és B oszlopban szüntesd meg a zárolást (Cellaformázás, Védelem lap), a Zárolt cellák kijelölése elől vedd ki a pipát.
Védd le a lapot (jelszóval vagy anélkül).
Minden bepittyegés után A-ból B-be, majd a következő A-ra áll a fókusz. -
Fferi50
Topikgazda
válasz
Derron
#54216
üzenetére
Szia!
Milyen módon olvasod be a vonalkódot és a QR kódot (milyen szoftverrel), hogyan kerül be a cellákba az értékük?
Eseménykezelő makróval lehet figyelni a cellák tartalmának változását.
Ha táblázattá alakítod, akkor a C oszlop képletezése automatikusan megy tovább, amikor beírsz egy új értéket az A-B oszlopba. (Ezt a beállításoknál tudod elérni.)
Az alábbi makró figyeli az A és B oszlop változását: A oszlop esetén továbblép a B oszlopra, B oszlop esetén továbblép az A oszlop következő cellájára.
A makrót a munkalap kódlapjára kell bemásolni:Private Sub Worksheet_Change(ByVal Target As Range)If Target.Column = 1 Then Target.Offset(0, 1).SelectIf Target.Column = 2 ThenIf Target.Offset(0, -1) <> "" ThenApplication.EnableEvents = FalseTarget.Offset(1, -1).SelectApplication.EnableEvents = TrueEnd IfEnd IfEnd Sub
Így nézne ki a táblázat:
Viszont fontos tudni, hogyan kerül az A B oszlopba a beolvasott érték.
Üdv. -
Derron
aktív tag
Sziasztok,
Erre a feladatra van esetleg megoldás?
Egy vonalkód tartalmát és egy QR kód bizonyos részeinek egyezőségét szeretném ellenőrizni.
PL:
Vonalkód: 12345
QR kód: 12345afghkasd
Ha a vonalkód tartalma megegyezik a QR kódból vett első 5 karakterrel akkor OK, ha nem akkor NOK.Ezzel eddig nem is lenne probléma, viszont folyamatosan szeretném ezeket vonalkód/QR kód olvasóval olvastatni kattintások nélkül, viszont az excel folyamatosan lefele léptet.
Az elképzelés:
A2 be beolvasom a vonalkódot, majd B2-be a QR kódot, ha a fenti teljesül, akkor C2 OK
Ha nem, akkor C2 NOK, és ugrik tovább az A3-ba ahova ismét vonalkódot olvasunk, B3-ba QR és így tovább.Ha ez így nem működőképes, az is jó, ha egy adott fix mezőbe kell olvasni mindent, csak a lényeg, hogy ne kelljen egeret billentyűzetet használni, csak a scannerrel olvasni az adatokat.
Tudtok ebben segíteni?
-
Pá
addikt
válasz
Fferi50
#54214
üzenetére
Köszi, ezen átsiklottam, mert nem értek hozzá és emiatt elsőre macerásnak tűnt.
Az a baj, hogy ez a mostani projectemnek ez csak egy kicsi és viszonylag jelentéktelen része, szóval nem éri meg az extra időráfordítást, hatékonyabb egy gyors, ismert megoldás.De hosszú távon hasznos lehet, szóval megpróbálom észben tartani és egy nyugisabb időszakban kicsit utánaolvasni, mert sok lehetőséget megnyithatna, ha része lenne ilyesmi is az eszköztáramnak.
-
Pá
addikt
válasz
Fferi50
#54206
üzenetére
Köszi! Hétvégén nem foglalkoztam a témával, majd holnap újra előveszem.
De ha csak így lehet megoldani, akkor inkább nem eröltetem a validálást, mert akár 100 sornyi is lehet, az meg már 200 textbox.Valszeg akkor az marad, hogy ha rányomnak a userform OK-ra, akkor kiírom egy lapra az értékeket és azt validálom egyben, majd újra feldobálom a userformot, amíg van benne fals adat.
User ebből annyi érzékel, hogy rányom az OK gombra, de nem történik semmi.Esetleg messageboxban ki tudom jelezni neki ilyenkor, hogy melyik sorokkal van probléma.
-
russel87
csendes tag
Sziasztok!
Kép beszúrással lenne problémám!
A cellába beszúrom a képet (beszúrás, képek, cellába helyezés), majd elmentem és bezárom. Újra megnyitom és a cellában már#ISMERETLEN!
hiba van!
Office LTSC Professional Plus 2024 (magyar) -
Fferi50
Topikgazda
válasz
Pakliman
#54208
üzenetére
Szia!
"Esetleg lehetne úgy is, hogy dinamikusan létrehozom a vezérlőt és vele együtt VBE-be a megfelelő kódo(ka)t..."
Valóban ez lehet egy megoldás az "osztályosdi" elkerülésére, a UserForm kódlapjára beírni a létrehozott új vezérlőkhöz kapcsolódó kódokat. Erre megvannak az eszközök (VbProject, VbComponents(x), CodeModule eszközei)
Más kérdés, hogy enged-e kódot írni makróból, futás közben - nem veszi-e víruskísérletnek? Ezt ki kell próbálni.
Üdv. -
Pakliman
tag
válasz
Fferi50
#54207
üzenetére
Legalább 25 éve foglalkozom az Excel-el és nagyon sok (több százezer) sort írtam már meg, de az "osztályosdit" mindig kerültem. Most úgy gondoltam, hogy talán hasznomra válhat, mert eddig úgy csináltam, ahogy írtad is:
esetleg megoldható lenne az esetek számának megfelelő vezérlő létrehozása
.
Ha nem tudok kódból triggerelni egy eseményt, akkor maradok a régi bevált módszernél.
Esetleg lehetne úgy is, hogy dinamikusan létrehozom a vezérlőt és vele együtt VBE-be a megfelelő kódo(ka)t...
Vagy még előtte teszek egy (két, há sok...) próbát a .Value (vagyis a .Change esemény) változtatásával
-
Fferi50
Topikgazda
válasz
Pakliman
#54205
üzenetére
Szia!
Még mindig nem egészen értem. Nem azért teszed ki a választógombot, hogy a user válassza ki a megfelelő opciót?
Azt, hogy a listát megváltoztató parancsgombra ne tudjon kattintani, elérhető azzal, ha az arra vonatkozó Click esemény végén inaktíválod a gombot.
A választógombok eseménykezelését pedig a saját osztályában tudod megoldani.
Én úgy látom eddig, hogy a dinamikusan létrehozott vezérlők eseménykezelőit nem lehet beindítani makróból, viszont az eseménykezelőket megírhatod az osztályhoz tetszésed szerint.
Ahogy Pá fórumtársnak írtam, esetleg megoldható lenne az esetek számának megfelelő vezérlő létrehozása előre és a helyzetnek megfelelő kezelése.
Üdv. -
Fferi50
Topikgazda
Szia!
Épp Pakliman fórumtárs is hasonló problémát vetett fel, dinamikusan létrehozott vezérlőkhöz külön osztállyal lehet eseményeket rendelni. Ez viszont úgy látom, makróból nem indíthatóak valami miatt. (Nem volt időm még, hogy teljesen utánajárjak a természetének.
)
Viszont, amennyiben meghatározható, hány darab textboxod lehet maximálisan, akkor megoldható úgy, hogy a userformon létrehozod az ennek megfelelő számú textboxot, majd csak annyit teszel láthatóvá, ahányra szükséged van. Makróból a userform mérete és a vezérlők elhelyezkedése és láthatósága szabályozható.
A validáláshoz létrehozott szabályokat egy "külön" eljárásba teszed és minden textbox BeforeUpdate eseményét ide irányítod. A validáló makrót pedig csináld paraméteresen, amit úgy hívsz meg, hogy átadod az adott textbox nevét: pl. validal activecontrol.name.
Üdv. -
Pakliman
tag
válasz
Fferi50
#54202
üzenetére
Szia!
A júzer kattintgat ide-oda-amoda, ezek alapján megváltozik (vagy nem!) az opb lista. Az éppen aktuális állapotnak megfelelően az opb listában automatikusan ki kellene választódnia a "legrelevánsabb" opciónak (itt kellene kódból meghívnom a Click eseményt!), amit viszont a júzer bármikor felülírhat. A kiválasztás hatására más dolgok megint csak változnak, amiket a Click-re programoznék.
-
Pá
addikt
Van egy userformom, amin az első sorban van sokféle vezérlő, ezek közül 2 textbox, most csak ezek az érdekesek.
BeforeUpdate eventre beprogramoztam néhány validálási szabályt, hogy a userek ne írjanak be minden hülyeséget. Eddig minden jó.Viszont ez egy dinamikus userform, szóval úgy működik, hogy az első sor vezérlőit a megfelelő számban sokszorosítja. Szóval ha pl a munkafüzetben 18 elem van, akkor a userformomon is 18 sornyi vezérlőm lesz, így már összesen 36 textbox-szal.
Arra nincs ötletem, hogy alkalmazzam a validálási szabályokat a dinamikusan létrehozott textboxokra? Ugye a BeforeUpdate csak az első, eredeti sort fogja figyelni. A többiben szabadon garázdálkodhatnak a userek.
szerk: gondolom ezt a beforeupdate eventtel nem lehet megoldani, szóval valami más approach kell.
Legrosszabb esetben kiírhatom egy lapra az értékeket, ha a user rányom az OK-ra és azon a lapon validálom az értékeket és újra feldobálom nekik a userformot, addig, amíg sikerül normálisan kitölteni. De ez csak olyan végső, favágó megoldás, jó lenne valami elegánsabb, ami nem is engedi a user-t leokézni a formot, amíg nem jó.Ki lehet valahogy írni egy globális változóba esetleg, amit bevisznek értékeket és azt validálni valahogy? Csak az a baj, hogy ezek mind valami eventtel működnének, de nem tudok eventet rendelni a dinamikusan létrehozott vezérlőkhöz.
-
Fferi50
Topikgazda
válasz
Pakliman
#54199
üzenetére
Szia!
Nem egészen értem, hogy miért szeretnél makróval eseményt indítani egy újonnan felvett vezérlőre. Ezeket pont a userrel való kommunikációra használjuk. Pláne úgy, hogy egy aktív userformon van. Ha végig fut a makró, a userform fennmarad, akkor kattintgathat a user, vezérelheti a folyamatokat.
Persze értem én, hogy tanulni szeretnél, csak nem logikus szerintem.
Üdv.
Új hozzászólás Aktív témák
- BESZÁMÍTÁS! Acer KG241QSbiip 24 165Hz TN FHD 1ms monitor garanciával hibátlan működéssel
- Apple iPhone 11 64GB, Kártyafüggetlen, 1 Év Garanciával
- Új Dell 5330 Latitude 13.3 FHD IPS Touch i5-1235U 4.4Ghz 16GB 512GB Intel Iris XE Win11 Pro Garancia
- Lenovo ThinkPad T14s Gen 2 i5-1135G7 16GB 512GB 1 év garancia
- 16 GB-os Quadro RTX5000 HP - garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő








, hogy nem jövök rá. Pedig jó lenne, mert tetszik hogy felső sor rögzítés nélkül is látszik mi micsoda.




