Hirdetés
-
PROHARDVER!
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
Topikgazda
válasz
andreas49 #54336 üzenetére
Privátban megoldódott!
Ha valaki kíváncsi lenne rá:
Nem megjegyzés/jegyzet volt a cellában, hanem hivatkozás (hyperlink).
Az egérmutató rávitele pedig a HIVATKOZÁS munkalapfüggvény megjelenő szöveg paraméterbe kerülő szöveget mutatja meg.
Ezt VBA-val a Range.Hyperlink ScreenTip paraméterével lehet kinyerni. Mivel egy cellához több hyperlink is csatolható, ezért az egyikek (akár az egyetlent is!) a Hyperlinks(index) formában lehet kinyerni. Vagyis a B2 cellához kapcsolódó érték kinyerése:Range("B2").Hyperlinks(1).ScreenTip
Üdv. -
andreas49
senior tag
Küldtem e-mail-t
-
Fferi50
Topikgazda
válasz
andreas49 #54336 üzenetére
Szia!
Az egérmutató rávitele a cellára sajnos nem kezelhető eseményként, így nem lehet hozzá eseménykezelőt sem írni.
Két egéresemény van, a BeforeDoubleClick és a BeforeRightClick. Kényelmi szempontból a jobb egérkattintást látom használhatónak, erre írtam is egy makrót, amit a munkalap kódlapjára kell beírni:Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim cmts As CommentsThreaded, cmt As CommentThreaded, cmtas As Comments, cmta As Comment, cmtjel As Boolean
If Me.CommentsThreaded.Count > 0 Then
Set cmts = Munka1.CommentsThreaded
For Each cmt In cmts
If Target.Address = cmt.Parent.Address Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = cmt.Text
cmtjel = True
Exit For
End If
Next
End If
If Not cmtjel Then
If Me.Comments.Count = 0 Then
Cancel = False
Exit Sub
Else
Set cmtas = Me.Comments
For Each cmta In cmtas
If Target.Address = cmta.Parent.Address Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = cmta.Text
cmtjel = True
Exit For
End If
Next
End If
End If
Application.EnableEvents = True
End Sub
A makró jobb egérkattintásra indul, mind a megjegyzést, mind a jegyzetet figyeli és amennyiben a cellához kapcsolódik, akkor a mellette levő cellába kiírja az értékét.
Ezután láthatóvá válik a jobb egérkattintás menüje. (Erre azért van szüksége, mert másként nem tudnád törölni a cella megjegyzését/jegyzetét.)
Ha nincs sem megjegyzés, sem jegyzet, akkor csak a menü jelenik meg.
Amire figyelned kell: Az adott cellára akárhányszor megcsinálhatod a jobb egérkattintást, mindannyiszor újra felülírja a megjegyzés/jegyzet értékét. Ha közben változtattál a szövegen, akkor egy plusz jobb egérkatt kell ahhoz, hogy a mellett levő cellában megjelenjen az új szöveg.
Ha bármilyen más értékek lennének az adott cella mellett, azok is felülíródnak a megjegyzés/jegyzet szövegével!!!
Mindig csak azt a cellát vizsgálja, amin kattintottál - egyértemű működés érdekében csak egy db cellát jelölj ki a kattintásra!
A munkafüzetet makróbarátként kell elmentened!
Üdv. -
andreas49
senior tag
-
andreas49
senior tag
Sziasztok, létezik valamilyen VBA-s megoldás arra, ha pl. 'B' oszlop mezőiben olyan szöveg szerepel, amire mutatva az egérrel, megjelenik egy megjegyzés. Ezeket a megjegyzéseket szeretném kiíratni a 'C' oszlop megfelelő mezőjébe.
Köszönöm a segítséget előre is. -
Mutt
senior tag
válasz
Dr. Mózes #54329 üzenetére
Szia,
Szokni kell a Power Pivot-ot. Ezek szerint csak az volt a gond, hogy a képlet nem volt teljes. Én többnyire el kezdem gépelni a függvény vagy tábla/mező nevet és kiválasztom a listából egy TAB-ot nyomva.
Amire figyelni kell, hogy Power Pivot-ban a függvények csak angol nyelven vannak.
Sok munkalap függvénynek megvan a DAX-os változata, de eltérően műkődnek.Nem tudom, hogy az UDEMY-s oktatás csak Power Pivotról (és DAX-ról) szól-e vagy más Power tool is említve van (főleg Power Query, esetleg Power Automate), de a DAX nehéz.
üdv
-
Dr. Mózes
aktív tag
válasz
Dr. Mózes #54328 üzenetére
Szerk.:
MOST MEG JÓ! A függvényválasztóból elindítottam az IF függvényt, ott már ki tudtam választani az oszlopot. Próba képen visszavontam az egészet és kézzel beírva is simán működött a képletezés...Szerk2.:
Helyes metódus: Beírom a képletet majd zárójel. Ha botor módon egyből az oszlopra kattintok, akkor hiba, viszont ha előtte az egérrel oda kattintok a zárójel utáni részre, akkor minden rendben. -
Dr. Mózes
aktív tag
Újra belefutottam ugyanebbe a hibába, viszont most nincs benne dátum.
A videó anyaga szerint =IF(OR('Customer-Lookup'[education]...... DAX képletezést akartam használni, viszont ugyanazt a hibaüzenetet doba, pedig ez sima szöveges oszlop.
A lehetséges függvényeket előhívva listázza az IF és az OR képletet is, úgyhogy jó helyen kellene lennem. -
Mutt
senior tag
válasz
Dr. Mózes #54320 üzenetére
Szia,
Power Query-ben nincs DATEDIFF, ott a Duration függvények használhatóak. Ezekben DateTime és Date adattípusok használhatóak. pl.
=Duration.Days([End]-[Start])
A dátumok számként vannak tárolva, a regionális beállítás csak az év/hó/nap/óra/perc/másodperc helyes sorrendjének megadására szolgál. Ha sikeresen feldolgozta az értéket, akkor onnantól már számként műkődik.
Azt írtad, hogy amerikai dátumokat dolgoztatsz fel magyar Excelben ott meg kellene adnod az USA beállítást, hogy helyes értékek legyenek.
DATEDIFF (magyar Excelben DÁTUMTÓLIG) egy rejtett munkafüzet képlet, amelynél az első paraméter a kezdő, a második a végdátum. A harmadik pedig hogy milyen egységben (eltelt napok, hónapok, évek stb) jelenítse meg a két dátum különbségét. Itt annyi kavarás van, hogy magyar Excelben is az angol rövidítéseket ("d", "m", "y") kell használni.Power Pivot-ban a DATEDIFF már a DAX-ot használja. Ott a hibaüzeneted más hibára utal.
Tippre az lehet a gond, hogy van olyan dátumod ami 1900 előtti.Excel munkalapon az ilyen dátumok szövegek. Ha ezt közvetlenül töltöd be Power Pivotba, akkor nem minden sorod lesz dátum típus amire kiakad a DATEDIFF.
Egy ISNUMBER([dátum oszlopod]) megadja hol van hiba.Power Pivotba Power Query-vel célszerű adatokat betölteni, ilyenkor már nem él az 1 millió soros limit (ami egy munkalapon lehet). Dátumoknál több évszázadot is vissza lehet ott már menni gond nélkül. Power Pivot/Power Query Krisztus utáni 100. évtől felfelé műkődik (persze 1582 előtt sok értelme nincs).
A másik tippem az lehet, hogy a [YEAR] és a [Mai nap] közötti éveket akarod, csakhogy a YEAR nekem szövegnek tűnik (balra van rendezve) és mégha szám lenne akkor se lenne jó, több dolog miatt. Ha ez kell akkor a számított oszlop, csak ennyi
=YEAR([Mai nap])-[YEAR]
üdv
-
Fferi50
Topikgazda
válasz
Dr. Mózes #54324 üzenetére
Szia!
Bocsi, úgy látom 2 malomban őrölünk. A Power Qery nem azonos a Power Pivottal. Te a hibaüzenet szerint ez utóbbival dolgozol. Ebben valószínűleg nincs DateDiff függvény. Nem igazán ismerem, gondolom más szintaktikát használ ez is.
Egyébként mit szerettél volna a DateDiff függvénnyel kiszámítani?
Üdv. -
Dr. Mózes
aktív tag
Sziasztok!
Van egy amerikai dátumokat tartalmazó CSV fájlom, amit beolvastam a Querybe és azt automatikusan átalakította a magyar dátumformátumokra.
Használni akartam a DATEDIFF képletet, viszont hibát dob ahogy ki akarom választani az oszlopot.
Próbáltam átállítani a regionális beállításokat, hogy angol legyen a dátum kiosztás, de maradt a magyar, megpróbáltam az oszlopformátumot módosítani a regionális dátum módosításával, az sem segített.
Nem is nagyon szeretném ha át kellene állítani mindenhol a régiót, maradnék inkább a magyar formátumnál ha lehetséges.
Szerintetek mi okozza a hibát, és hogyan lehetne javítani? -
Fferi50
Topikgazda
válasz
csferke #54317 üzenetére
Szia!
Akkor próbáld ki légy szíves ezt:
Nézet - Új ablak majd az egyik ablakban Nézet - Ablak - Mozaik - a megjelenő párbeszéd ablakban bejelölöd Egymás mellett.
Így a két ablakod egymástól függetlenül fog mozogni, viszont a változtatás mindkét ablakban megjelenik. Amikor elhagyod az excelt, majd ismét visszatérsz, akkor a Nézet menüben a Ablakváltással tudod mindkét ablakot ismét megjeleníteni.
Üdv. -
csferke
senior tag
válasz
Fferi50 #54316 üzenetére
Szia, köszi de úgy látom nem tudtam elég pontosan megfogalmazni, hogy mit is szeretnék.
Pl. A-F oszlopok egyik "ablakban" G és a tőle jobbra a többi. Amikor az egérrel görgetek az A-F oszlopokon, bárhol, akkor csak azok mozogjanak le-fel. A G és a tőle jobbra lévők ne mozogjanak. Ez persze fordítva is így működjön. -
jjohn
aktív tag
válasz
szbjns #54310 üzenetére
Megpróbálok egy példán keresztül segíteni, talán hasznos lesz!
-Először behívjuk a adatokat a két táblából, a példában több van de na zavarjon.
A képeken próbáltam levezetni. De látom elég kicsi lett, de olvasható azért.
-A PQ-ban kiválaszthatod ami nem kell, illetve variálhatod.
-Bezárás betöltés után egy excel táblát kapsz.
-Ebből lehet kimutatást készíteni ezt testre szabhatod. -
Fferi50
Topikgazda
válasz
szbjns #54311 üzenetére
Szia!
A PQ szerkesztés lépései (az előző leírásnak megfelelően):
3. Pont: Kijelölöd a Tervezett oszlopot majd Ctrl nyomva a Bevétel oszlopot. Ezután Átalakítás fülön Oszlopok egyesítése - a párbeszéd panelen elválasztó nincs és beírod az új oszlop nevét (nálam Adatok).
Ezután: Az új oszlop kijelölve - Kezdőlapon - Adattípus - egész szám
4. pont
Nem a Rendelés mezőbe, hanem a Típus_terv oszlopba fogunk helyettesítőt írni:
Kijelöljük a Típus_terv oszlopot. Ezután Átalakítás fülön Értékek lecserélése:
Null helyett Bevétel lesz az oszlopban.
Ezután Kezdőlapon Bezárás és betöltés.
Innen már jöhet a kimutatás.
Még annyi turpisság, hogy a Típus_terv mezőnél a részletezést kikapcsoljuk, de az összesítést meghagyjuk Automatikus opción.
A Típus mezőnél kikapcsoljuk az összesítést, a Rendelés mezőné pedig meghagyjuk az Automatikus opciót.
A kimutás akkor változik meg, ha rajta állva a Kimutatás_tervezés menüben a Frissítésre kattintunk.
Üdv. -
szbjns
újonc
válasz
Fferi50 #54309 üzenetére
Szia, neked is köszönöm a segítséget!
Ez már olyan, amit keresek, meg is próbáltam a leírásod alapján elkészíteni, de az összefűzés után nekem nem sikerül szerkeszteni a power query (mergelt) táblázatot.
Ha pedig csak simán a létrehozott munkafüzetben szerkesztem, az nem működik (ha ráeresztem a pivotot, amit beírtam, eltűnik).A te megoldásodba még az kellene nekem, hogy a bevételeket is lássam havi szinten összeadva. És akkor rögtön látni, hogy a bevétel és a terv hogy áll egymáshoz képest. A te megoldásodban azokat még össze kell adni nekem, hogy lássam - ami 20-30 tételnél nehézkes.
-
Fferi50
Topikgazda
válasz
szbjns #54305 üzenetére
Szia!
Power Queryvel (PQ) egy kis munkával össze lehet fésülni a két fájlt úgy, hogy utána a kívánt formában jelenjen meg a kimutatásod.
1. Először a két fájlt olvastam be PQ-ba. Adatok – Adatok beolvasás – Más forrásokból – Táblázatból vagy tartományból menüpontban. (Van erre egy külön kis ikon is a menücsoportban.)
2. Az Adatok – Adatok beolvasása – Lekérdezések kombinálása – Összefűzés menüpontban kiválasztottam a két előző táblázatot és beolvastam.
3. Ezután egy új oszlopba egyesítettem a Tervezett és a Bevétel oszlop adatait – határoló jel nélkül, majd megváltoztattam a típusát egész számra.
4. A következő lépésben a Rendelés oszlop üres (null értékű) celláiba beírtam a Terv szót.
5. Mentettem az egészet, a továbbiakban nincs szükség a PQ használatára.
6. Az így kapott táblázatra elkészítettem a kimutatást a képen látható mező elrendezésekkel. A terv sorokat felvittem a Típus alá elsőnek és félkövér betűket adtam neki. (Kijelölöd a cellát és addig mozgatod az egeret, amíg a szálkereszt meg nem jelenik, amivel mozgatható.)
7. Így változáskor csak frissíteni kell a lekérdezéseket és a kimutatást.
(A PQ „makrója” az alábbi --- a szerkesztés, kezdőlap – speciális szerkesztő menüpontjában érhető el:let
Forrás = Table.Combine({Táblázat1, Táblázat3}),
#"Oszlopok eltávolítva" = Table.RemoveColumns(Forrás,{"Dátum"}),
#"Egyesített oszlop beszúrva" = Table.AddColumn(#"Oszlopok eltávolítva", "Adatok", each Text.Combine({Text.From([Tervezett], "hu-HU"), Text.From([Bevétel], "hu-HU")}, ""), type text),
#"Típus módosítva" = Table.TransformColumnTypes(#"Egyesített oszlop beszúrva",{{"Adatok", Int64.Type}}),
#"Érték felülírva" = Table.ReplaceValue(#"Típus módosítva",null,"Terv",Replacer.ReplaceValue,{"Rendelés"})
in
#"Érték felülírva")
A képek:
1.Részle az összefűzött fájlból:
2.
A kimutatás mező elrendezése:
3. A kimutatás maga:
Ha bármilyen kérdésed lenne, keress bátran.
Üdv. -
szbjns
újonc
Szia,
ha csak behúzom őket egybe, akkor jobbra elkezd szélesedni a pivot táblám, veszi pl. ott az első hónapot és alá berakja a másik tábla 1-12. hónapját. 2. hónap alatt ugyancsak berakja a másik tábla 1-12. hónapját, és így tovább.
Próbáltam kapcsolatot létesíteni a kettő között, de nem sikerült még rájönnöm, mi a jó megoldás. -
szbjns
újonc
Sziasztok.
Egy kimutatást kell készítenem, ahol a tervezett költségekhez kellene kimutatnom, jelenleg hogy állnak a kiadások. Havi bontás, éves szinten.
Ebben kérném a segítségeteket.Két külön táblázatom van.
Az egyik - Terv:
- Típus oszlop, pl. édesség, tertermék, pékáru, hentesáru, ital .. tervezett ktg-ei
- Hónap oszlop, amire az előrejeltés vonatkozik
- Tervezet oszlop, adott hónapra az előrejelzett keretMásik - Bevétel:
- Rendelésazonosító
- Dátum, Hónap oszlopok
- Típus oszlop (ugyan azok a típusok)
- Bevétel oszlop - adott rendelés költsége
A cél egy olyan Pivot kimutatás készítése, ami a két külön munkafüzeten lévő táblázatot összehúzza a következők szerint.Az egyes sorok a típusok, de egymás alatt kellene látnom a tervet és a valós költést.
Viszont az egyes kategóriák alatt listázva a rendelésazonosító.
- édesség (terv)
- édesség
-- rendelésazonosítók édesség típusban
- hentesáru (terv)
- hentesáru
-- rendelésazonosítók hentesáru típusban
- ital (terv)
- ital ... stbOszlopok soronként: a hónapok (1-től 12-ig)
Két külön kimutatásként meg tudom csinálni egymás
felett,de úgy szeretném, hogy egy kimutatásban szerepeljenek.
Tehát a felső kimutatásból a terv sorok pont az adott kategória felett jelennének meg.
Remélem érthetően írtam le.Van valami ötletetek?
A két forrás táblázat viszonylag szabad szerkeszthető még.
Azt nem szeretném, hogy a kettő táblázatból egyet csináljak, úgy meg tudnám oldani. De a Bevétel táblázatot többen kezelik. A Terv csak a vezetőségé.köszönöm előre is.
-
blountex
senior tag
Közben megoldódott. ...
-
Fferi50
Topikgazda
válasz
flash- #54298 üzenetére
Szia!
Egyéni ormázással megoldható, hogy a számok az általad kívánt formátumban jelenjenek meg. A formátum az alábbi:[<=3619999999]"+"##_ #_ ###_ ####;[<=3699999999]"+"##_ ##_ ###_ ###;"+"##_ ##_ ###_ ##_ ##
Ezt kell bemásolnod a formátumkód mezőbe.
Ráállsz egy cellára, azon jobb egérgomb, cellaformázás - egyéni majd a formátumkód mezőbe bemásolod a fentieket nagyon pontosan.
Ha egy cellát megformáztál, utána a formátum másolható.
Ez a kód csak a magyarországi telefonszámokat formázza az általad kívánt formába (nem csak a mobil számokat).
A telefonszámot + nélkül, mindig 36-tal kezdve számként! kell a cellába beírni, akkor hatásos a formázás. Ha a celláidban benne van a + is a számok előtt, azt le kell vágni. ha szöveg maradna azt számmá kell alakítanod formázás előtt.
Üdv. -
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
-
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
-
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
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
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ása
Set receptCount = CreateObject("Scripting.Dictionary")
osszesMinta = 0
For i = 2 To lastRow
If alapadatok.Cells(i, 1).Value = valasztottUzem Then
receptSzam = alapadatok.Cells(i, 2).Value
osszesMinta = osszesMinta + 1
If Not receptCount.Exists(receptSzam) Then
receptCount.Add receptSzam, 1
Else
receptCount(receptSzam) = receptCount(receptSzam) + 1
End If
End If
Next 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.UserForm
Set frm = obj.Parent
With frm
Select Case obj.Name
Case "opbXYZ1"
.Label1.Caption = obj.Name & ": " & obj.Value
Case "opbXYZ2"
frm.BackColor = 13882323
MsgBox "hello world"
Case "opbXYZ3"
frm.BackColor = 14481663
End Select
End With
End 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.OptionButton
Dim i As Long
ReDim opbArray(1 To 3)
For i = 1 To 3
Set 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 = True
End With
'egyik megoldás, hogy létrehozáskor elindítod a saját kódod
Call RunClick(ctl_OpB)
Set opbArray(i).OptionButton = ctl_OpB
Next i
Set ctl_OpB = Nothing
'másik megoldás, hogy létrehozás után változtatod meg az értékét
Dim r As Double
Randomize
r = Int(Rnd * 3) + 1
opbArray(r).OptionButton.Value = Not opbArray(r).OptionButton.Value
End Sub
A class module-ban csak ennyi van:
Public WithEvents OptionButton As MSForms.OptionButton
Private Sub OptionButton_Change()
Dim frm As MSForms.UserForm
Set frm = OptionButton.Parent
With frm
.Label1.Caption = .Label1.Caption & vbNewLine & OptionButton.Name & " - " & OptionButton.Value
End With
End Sub
Pró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 Application
Private Sub AppEvents_WorkbookOpen(ByVal wb As Excel.Workbook)
Call OpenEvent(wb)
End Sub
Private Sub AppEvents_WorkbookBeforeClose(ByVal wb As Workbook, Cancel As Boolean)
Call BeforeClose(wb, Cancel)
End Sub
Ahogy 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 clsApp
Sub Init()
'ezt az egyéni makrófüzet Open eseményében fogjuk meghívni
Set AppObject.AppEvents = Application
End Sub
Sub 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árhoz
Call AddNewMenuItem
End If
End Sub
3. A Personal.xlsb ThisWorkbook eseményeibe pedig tegyük ezt be:
Private Sub Workbook_Open()
Call Init
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteControls(True)
End Sub
Vagyis 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űt
DeleteControls
Dim CmdBar As CommandBar
Dim CmdBarMenuItem As CommandBarControl
Set CmdBar = Application.CommandBars("Worksheet Menu Bar")
'Add a new menu item
Set CmdBarMenuItem = CmdBar.Controls(CmdBar.Controls.Count - 1).Controls.Add
'Set the properties for the new control
With CmdBarMenuItem
.Caption = "Saját Makró1"
.OnAction = "'" & ThisWorkbook.Name & "'!Kedvencem"
.Tag = C_TAG
End With
End Sub
Ehhez van egy C_TAG állandó a modul elején definiálva:
Private Const C_TAG = "Makrocska" 'C_TAG legyen egyedi név
Illetve fent a kódban az OnAction végén van a makró neve (esetemben "Kedvencem"),
ami ennyit tartalmaz csak:Sub Kedvencem()
MsgBox "Palacsinta", vbOKOnly
End Sub
Ami leveszi az pedig ez:
Sub DeleteControls(Optional tuti As Boolean = False)
Dim Ctrl As CommandBarControl
On Error Resume Next
Set Ctrl = Application.CommandBars.FindControl(Tag:=C_TAG)
Do Until Ctrl Is Nothing
Ctrl.Delete
Set Ctrl = Application.CommandBars.FindControl(Tag:=C_TAG)
Loop
End Sub
A 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).Select
If Target.Column = 2 Then
If Target.Offset(0, -1) <> "" Then
Application.EnableEvents = False
Target.Offset(1, -1).Select
Application.EnableEvents = True
End If
End If
End 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
Hirdetés
- Garmin Instinct – küldetés teljesítve
- Honor Magic6 Pro - kör közepén számok
- Jogász topic
- Wise (ex-TransferWise)
- Futás, futópályák
- Yettel topik
- Mobil flották
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- One mobilszolgáltatások
- További aktív témák...
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Vírusirtó, Antivirus, VPN kulcsok
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- BESZÁMÍTÁS! Gigabyte H510M i5 10400F 16GB DDR4 512GB SSD RTX 4060Ti 8GB Rampage SHIVA Seasonic 520W
- Csere-Beszámítás! Sapphire Pulse RX 7900XTX 24GB Videokártya!
- AKCIÓ! Gigabyte AORUS 16X (2024) Gamer notebook - i7 14650HX 16GB RAM 1TB SSD RTX 4070 8GBWin11
- Xiaomi Redmi Note 12 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Xiaomi Redmi Note 10 Pro 128GB Kártyafüggetlen, 1Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest