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.
Gyorskeresés
Legfrissebb anyagok
- Bemutató Spyra: akkus, nagynyomású, automata vízipuska
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
Általános témák
LOGOUT.hu témák
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] Spyra: akkus, nagynyomású, automata vízipuska
- [Re:] Viber: ingyen telefonálás a mobilodon
- [Re:] [bitpork:] 2024 phautós tali ?
- [Re:] [antikomcsi:] Való Világ: A piszkos 12 - VV12 - Való Világ 12
- [Re:] [attilasd:] A laposföld elmebaj: Vissza a jövőbe!
- [Re:] [Szevam:] Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [ubyegon2:] Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- [Re:] [bb0t:] Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
GAMEPOD.hu témák
Téma összefoglaló
- Utoljára frissítve: 2023-11-13 08:31:56
LOGOUT.hu
Hozzászólások
Fferi50
őstag
Szia!
Képletet összefüggő tartományra meg lehet adni egy lépésben:
Pl. Range("O1:O" & usor).FormulaLocal="=HAHIBA(INDEX(C$1:C$20000;$N1);"""")
Érték másolás önmagára akkor kell, ha nem szeretnéd a képletet megtartani.
Üdv.
the radish
senior tag
Köszönöm!
andreas49
senior tag
Sziasztok,
Dátum sorba tételével van gondom:
Több dátumom 1900 előtti, így nem tudja rendezni ezeket. Próbáltam szétválasztani év-hó-nap formába, így már sorba lehetett tenni, de az összefűzésnél az 1900 előtti dátumok 'vad' értékeket adnak. Lehet, hogy az a legegyszerűbb, ha meghagyom az eredeti oszlopot is, majd az összefűzés után törlöm a szétválasztott oszlopokat?
HONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
istvankeresz
aktív tag
Üdv!
A megegyező nevű emberek textboxból berögzítésének problémájánál akadtam el.
Az működik, hogy berögzítek egy embert, aminek a neve lesz a worksheet neve, ilyenkor ugye ha még egy ugyanolyan nevű embert rögzittek, akkor az sikertelen.
Ha úgy oldom meg, hogy tegyen mellé egy valamilyen karaktert (Pl.: 2), akkor az is működik(egyszer). Harmadik ugyanilyen nevű embernél már ez is hibázik. Ez már nagyon kis eséllyel fordul elő, de hibás rögzítésnél könnyen előfordulhat.
Erre van kiforrott megoldás, vagy olyasmire gondoltam , hogy egy 2-től növekvő számot tegyen az ilyen esetekben a nevek mögé, és úgy hozzon létre egy új worksheet-t.
Másik problémám pedig ennek a problémának a figyelése. Próbáltam elágazásokkal, Case Select-el, de mindig valami félre ment. A koncepcióm az, hogy a rögzítő gomb megyomásakor egy ciklus végigfut a worksheeteken, ha nem talál egyező worksheetet, akkor létrehozza azzal nével, ami a textboxban van. Ha talál egyezőt, akkor megkérdi, hogy biztos rögzíted? Ez lenne a két megegyező nevű ember esete. Itt ha Igen.t nyom, akkor létrehozza a fent említett módon. Pl. Kovács Béla2. Viszont a ciklusokból nem sikerül jó helyen kilépnem. Mert a feltételek nem úgy teljesűlnek, ahogy én terveztem.
Most ezt faragom, de ez sem működik jól:
Dim answer As Integer
Dim wbSearch As Workbook, wsSearch As Worksheet
For Each wsSearch In ActiveWorkbook.Sheets
Select Case wsSearch.Name
Case Is <> TextBox11.Value
Case Is = TextBox11.Value
answer = MsgBox("Ilyen nevű munkatárs már rögzítve! Biztos, hogy folytatod a rögzítést?", vbQuestion + vbYesNo + vbDefaultButton2, "Munkatárs rögzítése")
If answer = vbYes Then
Sheets("Szemely_TEMPLATE").Copy After:=Sheets("Havi_TEMPLATE")
ActiveSheet.Name = TextBox11.Value & 2
Sheets(TextBox11.Value).Range("A2") = TextBox11.Value & " " & ComboBox7.Value
Sheets(TextBox11.Value).Range("B2") = TextBox12.Value
Sheets(TextBox11.Value).Range("C2") = TextBox13.Value
Sheets(TextBox11.Value).Range("D2") = TextBox14.Value
MsgBox "Munkatárs sikeresen rögzitve! Kérlek zárd be és nyisd meg újra a programot!"
TextBox11.Value = ""
ComboBox7.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
TextBox14.Value = ""
End If
If answer = vbNo Then
TextBox11.Value = ""
ComboBox7.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
TextBox14.Value = ""
End If
End Select
Next wsSearch
Szóval ezen az úton indultam el. Ötlet?
[ Szerkesztve ]
XBOX ONE GT: istvankereszt79
andreas49
senior tag
Ezt valószínűleg nem nekem akartad címezni, hanem Ferinek
[ Szerkesztve ]
HONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
istvankeresz
aktív tag
Ohh, sorry. Igazából új bejegyzésként akartam! 😁
XBOX ONE GT: istvankereszt79
Fferi50
őstag
Szia!
Miért kell bezárni a fájlt egy új munkalap hozzáadása után?
Üdv.
istvankeresz
aktív tag
Szia!
Azért, mert a bezárás nélkül nem látszik az új berögzített személy, azaz a új worksheet egy másik comboboxban, ahol ezt az új worksheet-t ki lehet választani. Ezt még nem sikerült megoldanom. De rajta vagyok ezen is.
Esetleg valami GoTo megoldás nem lehet jó nekem? Talán ha az egyik feltétel teljesül, akkor ugorjon ide, ha a másik, akkor ugorjon oda.
[ Szerkesztve ]
XBOX ONE GT: istvankereszt79
Fferi50
őstag
Szia!
Én az ugrálást egyáltalán nem támogatom.
A Combobox forrását (List tulajdonság) lehet frissíteni vba-ból is, nem kell azért bezárni a munkalapot.
Én bevezetnék egy változót, amivel jelölném a találatot.
A ciklus elején True-ra állítom. Ha van már olyan munkalap, akkor jön a kérdés, ha létre kell hozni az új munkalapot, akkor marad True, ha nem, akkor False-ra állítom. A vizsgálat után kilépek a ciklusból. A ciklus után ha True a jelölő, akkor létrehozzuk a munkalapot, ha False, akkor nem kell létrehozni.
Üdv.
Msony
tag
Sziasztok!
Tudom, hogy nincs ilyen formázási lehetőség, de azért felteszem kérdésnek.
Szöveget fűzök össze és szeretném, ha valamilyen módon egy-egy szövegszakasz vastagon lenne kiemelve.
Tehát függvénnyel kiírt szöveg formázásánál meg lehet adni szövegformázást stílussal? Vagy esetleg másik betűtípussal?
Nem akarok makrót írni erre.
Üdv.
Fferi50
őstag
Szia!
Kijelölöd a cellában az adott szövegrészt és kézzel megformázod. Függvénnyel nem lehet formázni - illetve feltételes formázás lehet úgy, hogy a feltételben függvényt adsz meg, de csak egész cellát lehet így formázni.
Üdv.
Fferi50
őstag
Szia!
Egy minta makrórész:Sub akarmi()
Dim answer As Integer, wsFound As Boolean
Dim wbSearch As Workbook, wsSearch As Worksheet
wsFound = True
For Each wsSearch In ActiveWorkbook.Sheets
If wsSearch.Name = TextBox11.Value Then
answer = MsgBox("Ilyen nevű munkatárs már rögzítve! Biztos, hogy folytatod a rögzítést?", vbQuestion + vbYesNo + vbDefaultButton2, "Munkatárs rögzítése")
wsFound = answer = vbYes
End If
Next
If wsFound Then
Sheets("Szemely_TEMPLATE").Copy After:=Sheets("Havi_TEMPLATE")
With ActiveSheet
.Name = TextBox11.Value & 2
.Range("A2") = TextBox11.Value & " " & ComboBox7.Value
.Range("B2") = TextBox12.Value
.Range("C2") = TextBox13.Value
.Range("D2") = TextBox14.Value
End With
MsgBox "Munkatárs sikeresen rögzitve! Kérlek zárd be és nyisd meg újra a programot!"
End If
TextBox11.Value = ""
ComboBox7.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
TextBox14.Value = ""
'Sheets(xx).Activate az alapmunkalap aktíválása, ha szükséges.
End Sub
A Combobox Additem tulajdonságát nézd meg a forrás frissítésre.
Üdv.
istvankeresz
aktív tag
Köszönöm!
Holnap kipróbálom és visszajelzek.
XBOX ONE GT: istvankereszt79
Msony
tag
Köszi
Gondoltam is.
Max aláhúzást tudok kreálni valami karakterrel, mondjuk csillaggal.
Üdv.
Fferi50
őstag
Szia!
Inkább ezt próbáld ki, mert a másik nem igazán jó:Sub akarmi()
Dim answer As Integer, wsFound As Boolean
Dim wbSearch As Workbook, wsSearch As Worksheet
wsfound = True
On Error Resume Next
Set wsSearch = Sheets(Textbox11.Value)
If Err = 0 Then
'ha van már ilyen munkalap, akkor feltesszük a kérdést
answer = MsgBox("Ilyen nevű munkatárs már rögzítve! Biztos, hogy folytatod a rögzítést?", vbQuestion + vbYesNo + vbDefaultButton2, "Munkatárs rögzítése")
If answer = vbYes Then wsSearch.Copy after:=Sheets("Havi_TEMPLATE"): wsFound = True
Else
Err = 0
Sheets("Szemely_TEMPLATE").Copy after:=Sheets("Havi_TEMPLATE")
ActiveSheet.Name = Textbox11.Value
End If
On Error GoTo 0
If wsFound Then
With ActiveSheet
.Range("A2") = Textbox11.Value & " " & ComboBox7.Value
.Range("B2") = TextBox12.Value
.Range("C2") = TextBox13.Value
.Range("D2") = TextBox14.Value
End With
MsgBox "Munkatárs sikeresen rögzitve! Kérlek zárd be és nyisd meg újra a programot!"
End If
Textbox11.Value = ""
ComboBox7.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
TextBox14.Value = ""
'Sheets(xx).Activate az alapmunkalap aktíválása, ha szükséges.
End Sub
Egy kis magyarázat hozzá:
Nem kell végigpörgetni a munkalapokat, mivel a vba hibakezeléssel megállapítható, ha van már ilyen munkalap => a Set után ha nincs hiba, akkor van már. Amennyiben ugyanolyan nevű új személy van, akkor ezt a munkalapot másoljuk, aminek az lesz az eredménye, hogy az Excel automatikusan ad egy sorszámot a névhez! ezzel nekünk nem kell foglalkozni.
Ha nincs, akkor másoljuk a Templatet.
Mivel a másolt munkalap lesz az aktív, utána beírhatjuk a szükséges adatokat az új munkalapra.
Remélem sikerülni fog.
Üdv.
Fferi50
őstag
No itt a makró javított kiadása:Sub akarmi()
Dim answer As Integer, wsFound As Boolean
Dim wbSearch As Workbook, wsSearch As Worksheet
wsfound = False
On Error Resume Next
Set wsSearch = Sheets(Textbox11.Value)
If Err = 0 Then
'ha van már ilyen munkalap, akkor feltesszük a kérdést
answer = MsgBox("Ilyen nevű munkatárs már rögzítve! Biztos, hogy folytatod a rögzítést?", vbQuestion + vbYesNo + vbDefaultButton2, "Munkatárs rögzítése")
If answer = vbYes Then wsSearch.Copy after:=Sheets("Havi_TEMPLATE"): wsFound = True
Else
Err = 0
Sheets("Szemely_TEMPLATE").Copy after:=Sheets("Havi_TEMPLATE")
ActiveSheet.Name = Textbox11.Value
wsFound=True
End If
On Error GoTo 0
If wsFound Then
With ActiveSheet
.Range("A2") = Textbox11.Value & " " & ComboBox7.Value
.Range("B2") = TextBox12.Value
.Range("C2") = TextBox13.Value
.Range("D2") = TextBox14.Value
End With
MsgBox "Munkatárs sikeresen rögzitve! Kérlek zárd be és nyisd meg újra a programot!"
End If
Textbox11.Value = ""
ComboBox7.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
TextBox14.Value = ""
'Sheets(xx).Activate az alapmunkalap aktíválása, ha szükséges.
End Sub
istvankeresz
aktív tag
Huuu, hát ez tökéletesen működik. Ezt szerettem volna, köszönöm. Sőt, ez az ugyanolyan nevű lapoknál a növekvő számozás sokkal jobb megoldás mint az én megoldásom. Köszi!
Most megnézem a Combobox frissülés problémáját.
[ Szerkesztve ]
XBOX ONE GT: istvankereszt79
Fferi50
őstag
Szívesen!
the radish
senior tag
Sziasztok!
Msgbox az alábbi formában:myResponse = MsgBox("Amennyiben folytatod, az összes megnyitott excel fájl mentés nélkül bezáródik." & vbNewLine & "" & vbNewLine & "Biztosan folytatod?", 4 + 48 + 256, "Figyelem!")
If myResponse = vbNo Then Workbooks("Ctrl.xlsb").Close SaveChanges:=False
Majdnem tökéletes, az excel bezárása nélkül mentés nélkül be is zárja a munkafüzetet,
viszont a VBA-ban benne marad a "fájl" és ha újra - az excel bezárása nélkül megnyitom, akkor elég hektikusan, de inkább sehogy nem működik. Hogy tudom megoldani, hogy a fájl bezárása során a VBA-ból is tűnjön el?
Fferi50
őstag
Szia!
Ez sajnos egy erős BUG a legújabb Excel verziókban. Nem tudom, szóvá tette-e valaki a MS oldalán. Valahány fájlt megnyit, mind ottmarad a VBA oldalon, de egyébként ha "megkérdezed" hány munkafüzet van nyitva, akkor 0 a válasz. Viszont úgy tűnik, a memóriát azért foglalja, sőt el is tud indulni a benne levő makró - csak épp hiba vagy összeomlás a vége. Csak a bezárás és újranyitás segít sajnos.
Jelenteni kell a MS felé.
Üdv.
the radish
senior tag
Szia!
Köszönöm! Akkor megnyugodtam, hogy nem egyedi a probléma, ettől függetlenül az insider programban rákeresek és jelzem.
Még 1x köszi.
istvankeresz
aktív tag
Üdv újra!
Ha egy textboxban megtiltom, hogy számokat lehessen beírni, azzal a céllal, hogy elvileg nincs numerikus karakterekből álló nevű ember, akkor a . (pont) karaktert, hogy tudom mégis engedélyezni? Itt a Dr. Valaki esetet akarom megoldani.
Ebből indulok ki:
Private Sub TextBox11_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox11.Text) > 30 Then
MsgBox "Maximum 30 karakter!"
TextBox11.Text = ""
ElseIf IsNumeric(deg) = True Then
MsgBox "Csak betüt írj!"
TextBox11.Text = ""
End If
End Sub
[ Szerkesztve ]
XBOX ONE GT: istvankereszt79
(#50023) istvankeresz válasza istvankeresz (#50022) üzenetére
istvankeresz
aktív tag
User error bocsánat.
IsNumeric(deg) maradt benne az IsNumeric(Textbox11.value) helyett.
Khm, mégsem jó....
A Dr. 1 -et engedi beírni
[ Szerkesztve ]
XBOX ONE GT: istvankereszt79
Pakliman
tag
Szia!
Egy pl. a billentyű(k) tiltására/átengedésére:Private Sub tbValami_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
istvankeresz
aktív tag
Szia!
Igen, közben megtaláltam. Ezzel a módszerrel kizártam mindent, csak a betük (magyar ékezet is, kis és nagy betűi), a szóköz és a . maradt. Így már jó lesz.
XBOX ONE GT: istvankereszt79
the radish
senior tag
Sziasztok!
Először is kérem, ne nevessetek, ki.
Másodszor pedig jöjjön egy lényeges kérdés. (Na jó, annyira talán mégsem, de azért amióta felfedeztem, egy kicsit bosszant (de csak picit).
Viszont ha kikapcsolom a sor- és oszlopazonosítókat, a gyönyörű egérmutató átalakul:
Excel 365 és 2019 tesztelve, eredmény ua.
Van erre megoldás, vagy engedjem el?
Fferi50
őstag
Szia!
Tudom, nem vígasztal, de nálam nem jön elő ez a probléma 365-ben. Talán valami más beállítás - ami az egérmutató formáját vezérli - a Windows-ban lehet a ludas, mert az Excel beállításnál nem találtam ilyet.
Jól gondolom, hogy adatérvényesítéssel áll elő a lista?
Üdv.
the radish
senior tag
Fferi50
őstag
Szia!
Nos nálam ebben a verzióban sem csinálja így a 365.
Üdv.
the radish
senior tag
Szia!
Akkor most már offolom, úgy néz ki, egyedi a problémám. Azért nem értem, mert két különböző gépről, (WIN10, WIN11) és két különböző Office-ról van szó. Az irodai gép IT által menedzselt, azaz korlátozottak a beavatkozási lehetőségeim és nem is emlékszem, hogy babráltam volna vele.
Most gyorsan megnéztem Sasmsung Ativ Samrt Pc-n (Win11 + Office 365) és ott is produkálja. Semmi mást nem csinálok, csupán kikapcsolom a sor és oszlopazonosítókat.
Mindegy, azért tudok ezzel együtt élni és nagyon köszönöm, hogy segítettél ez ügyben (is)..
Czmorek
aktív tag
Helló!
Kifog rajtam valami apróság...
=SZUM(I10:I27)
Azt szeretném, hogy ha nulla az eredmény akkor üres maradjon a négyzet, ne 0 legyen ott.
Körberaktam már HA függvénnyel, de nem adja...
Lasersailing
senior tag
=HA(SZUM(I10:I27)=0,"",SZUM(I10:I27))
[ Szerkesztve ]
Czmorek
aktív tag
Nem müxik, de a vesszőket kicseréltem ;-re és úgy már megy.
Köszi!
[ Szerkesztve ]
ny.janos
tag
Szia!
Egyéni számformátummal is megoldhatod a nullák elrejtését, HA függvény sem kell hozzá.
huan
őstag
Sziasztok,
Ezt a dolgot hogyan tudnám megoldani?
Egy excel táblában van egy formanyomtatvány. Ott van egy cella, ami változik és nyomtatnom kellene belőle 50db-ot úgy, hogy a formanyomtatvány (csak)ezen cellája mind az 50 esetében más. Az 50db egyedi érték szintén excelben (vagy ugyen ebben más munkalapon) van. Olyan mint a word körlevél, ha word-ben lenne, sima ügyem lenne, de nem akarom word-be tenni, formázgatni...
Hogyan oldjam meg?
Köszönöm előre is!
lappy
őstag
makróval lehet automatizálni
Bámulatos hol tart már a tudomány!
huan
őstag
makrón kívül esetleg?
lappy
őstag
nincs rá mód
Bámulatos hol tart már a tudomány!
andreas49
senior tag
Sziasztok,
Képlettel hogyan tudnám megoldani, hogy a Jakab Gipsz -ből Jakab GIPSZ legyen, esetleg ez lefelé is másolható legyen, valamint ha 3 tagú a név akkor csak a harmadik tag legyen nagybetűs.
Köszi a segítséget előre is.
HONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
lappy
őstag
Szétválasztod a neveket majd az utolsó pedig nagybetű függvényt alkalmazol segèdoszlop szükséges hozzá
[ Szerkesztve ]
Bámulatos hol tart már a tudomány!
andreas49
senior tag
Ezzel alakítottan át eddig is, de valami hatékonyabbat szerettem volna.
HONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
Delila_1
Topikgazda
Nézd meg a villámkitöltés funkciót.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
andreas49
senior tag
Próbáltam azt is, de nem vált be. Kb. 5-600 munkalapon azonos tartományban (100-120 név/munkalap) szerepelnek az adatok. Valószínűleg makró megoldaná, de az nekem 'magas'
HONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
lappy
őstag
nem értem neked miért nem megy kb 5 másodperc alatt kész egy névtartomány villámkitöltéssel
Bámulatos hol tart már a tudomány!
andreas49
senior tag
Amint írtam, egy munkalapon az azonos tartomány az 100-120 név, de 8 csoportban (ures sorok a csoportok között), így egy lapon 8* kell a villámkitöltést
elvégezni, mivel az üres sornál leáll. Ez 5-600 munkalapnál *-va 8-al elég hosszadalmas.
HONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
Delila_1
Topikgazda
Kijelölöd a tartományt az alsótól a felsőig. Ctrl+g-re bejön az Ugrás menü. Kiválasztod az Irányított-at, majd az Üres cellák-at. Beírsz valamit, pl. egy pontot, majd Ctrl+Enterrel egyszerre beviszed az összes kijelölt cellába.
Most már nem kell külön nyolcanként a villámkitöltés, egy lépésben elvégezhető.
Szűröd az oszlopot a bevitt pontra, kijelölöd a sorokat, és törlöd a pontot.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
andreas49
senior tag
Köszi, délután kipróbálom
HONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
Delila_1
Topikgazda
Nosza!
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Lasersailing
senior tag
Sziasztok,
Excel vba-ben lenne kérdésem:
egy userform-on szeretnék egy mezőt kiválasztani az alábbi sorral:
orderattekinto.szken.SetFocus
Ez bizonyos esetekben működik úgy ahogyan szeretném, majd más esetekben hibára fut:
Ennek mi lehet az oka? Mi lehet a hiba?