Hirdetés
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Házimozi belépő szinten
- Modding és elektronikai kérdések
- Apple MacBook
- Nvidia GPU-k jövője - amit tudni vélünk
- Fejhallgató erősítő és DAC topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Vezetékes FÜLhallgatók
- Amlogic S905, S912 processzoros készülékek
-
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
-
Kicsibocs
csendes tag
Sziasztok!
UserForm-ról szeretném az ott megadott értékeket a munkalap meghatározott celláiba másolni... de nem megy...
Kétfajta adatot kellene bevinni: termékkódot és mennyiséget, a parancsgomb megnyomására pedig az adatokat egy előre megszerkesztett táblázatba (sémába) kellene illessze, kategóriánként egymás alá, de külön oszlopba...
Valahogy ilyen elrendezésben:
.....A, B, és C oszlopok vannak, A-ba termékkód, C-be az értéke, a B függvénnyel számolna majd
Tud valaki segíteni? -
Delila_1
veterán
válasz
M_AND_Ms #9546 üzenetére
Nálam simán megtalálja mindegyiket. Lehet, hogy azért, mert Fire egyik régebbi tanácsát megfogadtam, és a Windows addigi beállításán módosítottam.
Vezérlőpult - Területi és nyelvi beállítások - Területi beállítások fül - Testreszabás gombon katt - Rendezés fül/Lenyílóból a Technikai lehetőséget választottam, végig okéztam.
Természetesen az alapértelmezett területi beállítás Magyar kell hogy legyen.
Ez a beállítás megoldja a magyar ABC szerinti rendezést is. -
M_AND_Ms
veterán
Sziasztok!
Egy érdekes (és szerintem hibás) működést találtam a keresőfüggvényeknél (pl: FKERES)
Adott egy Excel 2007 magyar.
Egyik oszlopba példakép beírod a következőket: Alma, Tyúk, FecskeHa most összeállítasz egy FKERES-t erre az egyszerű táblára, akkor a különböző keresési értékeknél a következő eredmények lesznek:
Ha a keresési érték Alma, akkor megtalálja
Ha a keresési érték Tyúk, akkor megtalálja
Ha a keresési érték fecske, akkor megtalálja (mert alapból nem kisnagybetű érzékeny)
Ha a keresési érték fecSke, akkor NEM találja
Ha a keresési érték tYÚK, akkor NEM találjaRöviden, ha a magyar abc kettős betűit nem képes megtalálni, ha azokat úgy írod a keresésbe, hogy az első kicsi, a második meg nagybetű. (a kisnagyebtű érzéketlenség ellenére sem)
Mondhatnátok, hogy ilyen nincs is a magyar nyelvben. Ez igaz. De bárhol bármikor előfordulhat az Excel keresőfüggvények használata során (pl: a táblázatban vmiéle kódolt információ van)És érdekes, hogy ugyanez a működés van, amikor egyszerűen a 'keresés' (CTRL+F) funkciót használod.
-
Delila_1
veterán
válasz
m.zmrzlina #9544 üzenetére
Szívesen.
-
m.zmrzlina
senior tag
válasz
Delila_1 #9542 üzenetére
Ha nem is pont ebben a formában de úgy néz ki fog működni.
Sajnos a végleges helyére nem lehet közvetlenül menteni a listát, ezért először létrehozok egy új munkalapot, oda megy a beillesztés és ha a tartomány rendben akkor az átmeneti munkalap törlése után mehet a végleges helyre. Mindezt Screenupdating=False mellett igy a felhasználó csak a MsgBoxot látja, ha elszúrt valamit.
Köszönöm.
-
Delila_1
veterán
Az Else ág rövidebben:
Selection.Copy Range("F1")
Application.CutCopyMode = False -
Delila_1
veterán
válasz
m.zmrzlina #9541 üzenetére
Működik ez akkor is ha a kijelölt terület egy istentudjaholvan gépen futó excel97-ben van amit Remote Desktop-pal érek el?
Távoli gépet nem tudok produkálni, próbáld ki!
Átírtam a makrót úgy, hogy csak 1 oszlop, és max 100 sor kijelölésekor másoljon az F1-be.
Sub hiba()
If Selection.Rows.Count > 100 Or Selection.Columns.Count > 1 Then
MsgBox Selection.Rows.Count & " sort, és" & Chr(10) & _
Selection.Columns.Count & " oszopot jelöltél ki" & Chr(10) & "ejnye-bejnye"
Exit Sub
Else
Selection.Copy
Cells(1, 6).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End Sub -
m.zmrzlina
senior tag
válasz
Delila_1 #9540 üzenetére
A Selection.Address string formában megadja a kijelölt területet, pl. "$A$:$C$50"
Működik ez akkor is ha a kijelölt terület egy istentudjaholvan gépen futó excel97-ben van amit Remote Desktop-pal érek el?
Ezt felhasználhatod a nyomtatási terület megadásához, ha a hibakeresésen átment.
ActiveSheet.PageSetup.PrintArea = Selection.AddressÉn nem akarok nyomtatni, én csak be akarom illeszteni a vágólap tartalmát amit a távoli gépen jelöltem ki Ctrl+C-vel. (Meg persze levizsgálni a beillesztés előtt, hogy nem akar-e a júzer 20000 celát beilleszteni 100 helyett)
Bár ez nem illik a makródra, mert valószínűleg több oszlopnyi adatod függ egybe.
Pont ez a lényeg, hogy ha a beillesztendő tartomány több mint 1 oszlop széles az 100% hogy hiba
Ha az B4 alatt lévő adatok kellenek a nyomtatáshoz,
Ma itt ültem a gép előtt egész nap és lappy-n kívül ma senki nem akart nyomtatni többek közt én sem.
Köszi hogy bajlódsz a problémámmal.
[ Szerkesztve ]
-
Delila_1
veterán
válasz
m.zmrzlina #9539 üzenetére
A Selection.Address string formában megadja a kijelölt területet, pl. "$A$:$C$50"
Ezt felhasználhatod a nyomtatási terület megadásához, ha a hibakeresésen átment.
ActiveSheet.PageSetup.PrintArea = Selection.AddressA cells(4,2).Select után a
Selection.CurrentRegion.Select
sor kijelöli a cellával egybefüggő területet. Ezt beviheted egy változóba.
ter=Selection.AddressBár ez nem illik a makródra, mert valószínűleg több oszlopnyi adatod függ egybe.
Ha az B4 alatt lévő adatok kellenek a nyomtatáshoz, célszerű a kijelölése után a
Range(Selection, Selection.End(xlDown)).Select -vel kijelölni az oszlopot.[ Szerkesztve ]
-
Delila_1
veterán
válasz
m.zmrzlina #9537 üzenetére
Valahol biztosan lekérdezed a felhasználó kijelölését (selection.address), mert azt adod meg nyomtatási területnek. Az után tedd be.
-
Delila_1
veterán
válasz
m.zmrzlina #9535 üzenetére
A paste elé tedd, exit sub-bal.
-
m.zmrzlina
senior tag
válasz
Delila_1 #9534 üzenetére
Tettem a végére az End If elé egy Exit Sub-ot és betettem a
Selection.PasteSpecial Paste:=xlPasteAll
sor után.futtatáskor jön is a MsgBox de az OK-ra a beillesztés ennek ellenére megtörténik. Ha az említett sor elé teszem be akkor MsgBox nélkül megtörténik a beillesztés.
Hogy tudom rávenni a beillesztés előtti kilépésre?
-
Delila_1
veterán
válasz
m.zmrzlina #9533 üzenetére
Sub hiba()
If Selection.Rows.Count > 100 Or Selection.Columns.Count > 1 Then
MsgBox Selection.Rows.Count & " sort, és" & Chr(10) & _
Selection.Columns.Count & " oszopot jelöltél ki" & Chr(10) & "ejnye-bejnye"
End If
End SubKülön is veheted a túl sok sorra, és oszlopra vonatkozó figyelmeztetést.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
A következő programrészlet egy 1 oszlop széles és kb 100 sor (változó) hosszú tartományt illeszt be vágólapról.
Cells(4, 2).Select
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteAll
If Err.Number <> 0 Then
MsgBox "A lista beillesztését a kijelöléssel kell kezdeni." + Chr(13) + Chr(13) + "Először végezd el a kijelölést!", vbCritical, "Hiba!!!"
Exit Sub
End IfA vágólapra másolást a felhasználónak kell elvégeznie ezt nem tudom megkerülni. Azt a felhasználói hibát szeretném kezelni, hogy ha tévedésből pl egy 1500x15 méretű tartományt jelöl ki akkor a makró ne végezze el a beillesztést hanem küldjön hibaüzenetet és lépjen ki.
Milyen technikák vannak erre?
-
válasz
Delila_1 #9530 üzenetére
"Akkor minek átmásolni a Sima lapra?"
Feltételezem azért, mert a másik lapon "pofásan" ki van alakítva, hogy hogy is nézzen ki a nyomtatvány.
(Mondjuk ilyen feladatokhoz semmiképp sem használnék(és sosem használtam) excel makrót, hanem word körlevélben létrehoznék egy szép törzsdokumentumot, az excel táblát(fejléccel) adatforrásként adnám meg és kész, lehet is nyomtatni, ha kell szűrve, ha bármi módosult az excel táblában azt frissíti, vagy kézzel katt a frissítés gombon stb stb.
Persze ezt elsősorban nem neked írom, hisz ezzel Te tisztában vagy...)
[ Szerkesztve ]
-
Delila_1
veterán
Akkor minek átmásolni a Sima lapra? A névsor lapról is kinyomtathatod egyenként.
Ez megmagyarázza, miért tetted a print utasítást a ciklusba.Sub nyomtat()
Sheets("névsor").Select
b = Cells(2, 1) + 1
For a = 2 To b
Range(Cells(a, 1), Cells(a, 2)).Select
ActiveSheet.PageSetup.PrintArea = Selection.Address
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next a
Sheets("Sima").Select
MsgBox "A nyomtatás kész, ügyes vagy!!!"
Range("A2").Select
End Sub -
perfag
aktív tag
Ez a sorod:
Range(Cells(a, 1), Cells(a, 1)).Select
az A2 cellát választja ki. Ezt írd át, hogy arra a listatartományra mutasson, aminek "első oszlopában számozás van a második oszlopában nevek".(Elmerengtem, kicsit hogy miért is tetted ezt For-Next ciklusba, mit keres ebben a ciklusban a nyomtatás parancs ... de azt hiszem a nagyon gonosz gondolataimat inkább nem írom le.
Delila megelőzött. Jobb, ha nem is olvasd el amit írtam.)
[ Szerkesztve ]
-
Delila_1
veterán
Mit is kellene nyomtatni? Elláttam magyarázatokkal a makródat.
Sub nyomtat()
'A névsor lap A2 cellájának az értékét teszi a b változóba
b = Worksheets("névsor").Cells(2, 1).Value
b = b + 1 'növeli a b értékét
For a = 2 To b 'A névsor lapon a 2. sortól megy a ciklus b-ig
Sheets("névsor").Select 'bár a névsor lap az aktív, a ciklusban mindig
'kijelöli ugyanezt a lapot (?!)
Range(Cells(a, 1), Cells(a, 1)).Select 'rááll az a-adik cellára az A oszlopban
Selection.Copy 'másolja ezt a cellát
Sheets("Sima").Select 'átmegy a Sima lapra
Range("C3").Select 'beilleszti az előbb másoltat mindig ugyanoda, C3-ba
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False 'kijelölés megszüntetése
'nyomtatja a Sima lapról az előzően nyomtatási területként kijelölt tartományt
'itt az a szám látszik, amit a ciklusban utoljára a C3-ba írattál
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next a
MsgBox "A nyomtatás kész, ügyes vagy!!!"
Sheets("Sima").Select
Range("C3").Select
Selection.ClearContents
Range("A2").Select
End Sub[ Szerkesztve ]
-
lappy
őstag
Sziasztok!
Egy kérdésem lenne!
Adott egy lista aminek első oszlopában számozás van a második oszlopában nevek.
A kis macro feldata az lenne hogy adott helyre illessze be a neveket, de csak a számozást
változtatja! Mit kell átírnom??
Sub nyomtat()
b = Worksheets("névsor").Cells(2, 1).Value
b = b + 1
For a = 2 To b
Sheets("névsor").Select
Range(Cells(a, 1), Cells(a, 1)).Select
Selection.Copy
Sheets("Sima").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next a
MsgBox "A nyomtatás kész, ügyes vagy!!!"
Sheets("Sima").Select
Range("C3").Select
Selection.ClearContents
Range("A2").Select
End Sub -
Delila_1
veterán
-
válasz
m.zmrzlina #9520 üzenetére
Pedig jobb lenne megfogadni perfag javaslatát, mert az eddig befektetett sok munkádon túl, sok munkád lesz pluszban, amit a rossz koncepciónak, programfelépítésnek, megvalósításnak köszönhetsz majd..
(pl space-el kezdeni egy szót, és azt még fel is használni)[ Szerkesztve ]
-
m.zmrzlina
senior tag
-
perfag
aktív tag
válasz
Geryson #9517 üzenetére
Nem csak belekeveredtél, ezt másokkal is elhitetted, hogy képlettel kell.
Ha jól értem csak annyit akarsz, hogy nem akarod a nullát tartalmazó cellákat látni.
Ezt megteheted egy egyszerű cella formázással, pl. [=0]"";Normál
Ettől a cellában nulla van, csak nem látszik. A többi érték meg annak látszik ami. -
perfag
aktív tag
válasz
m.zmrzlina #9495 üzenetére
Nem akarok akadékoskodni, de szerintem a koncepcióddal van baj. A kép alapján mondom, ide nem InputBox kell. Egy későbbi hozzászólásodban látom gondolkodsz már saját UserForm-ban, de oda sem TextBox kellene, hanem lista, vagy lenyílós lista.
Azt látom, hogy technikusok nevét kell megadnod. A lista a gépelési hibalehetőségekből eredő ellenőrzést is feleslegessé teszi.
Ha a munkalapodon elfér oda is tehetnéd a listát, a nyomtatásból kiveszed, a listaváltozáshoz hozzákapcsolod a makródat, passz. -
Geryson
addikt
válasz
Fire/SOUL/CD #9515 üzenetére
Teljesen igaz, úgy beletekeredtem a saját táblázatomba, hogy már azt sem tudtam, hogy mi mire hivatkozik.
Úgy néz ki, hogy megoldottam azzal egy egyszerű dologgal, hogy az üres celláknál ha kritériumként ""-ot írok, akkor nézi, hogy van-e érték egy cellában, vagy nincs. Így néz most ki, és ugye az L4 vagy érték vagy üres. Azt hittem kritérium csak szám lehet.
=HA(L4="";I4+N3;N3+I4+L4)
Delila_1: Na, ilyet képletet sem láttam még, mindjárt elemzem egy picit.
[ Szerkesztve ]
-
Delila_1
veterán
válasz
Geryson #9514 üzenetére
Vegyük, hogy az =ha(k3="";"";k3*j3) képleted az F1 cellában van. Azt írod, hogy erre az F1-re hivatkozol egy másik cellában.
A képletet tartalmazó cellára így lehet hibaértéket kiküszöbölő módon hivatkozni:
=ha(hossz(f1)>0;f1*10;"")A képletet 0 hosszúságúnak értelmezi az Excel, ezért csak akkor végzi el a megadott műveletet, ha érték kerül a cellába.
-
-
Geryson
addikt
válasz
m.zmrzlina #9512 üzenetére
Az üres cellát hozza eredményül, nem jó.
bugizozi: persze, meglehetne, akár akkor másképp is, de nem akarok egy csomó nullát látni, ez lenne a lényege - csak ezt elfelejtettem leírni.
-
-
Geryson
addikt
Mesterek! Egy sima egyszerű függvénnyel megakadtam:
=HA(K3="";"";K3*J3)
Azaz ha egy cellába semmit nem írtam, akkor ne csináljon semmit, egyébként szorozzon egyet. A gondom az az, hogy ennek a cellának a végeredményére hivatkozik egy másik sima összeadásos cella (=I3+L3) és most #ÉRTÉK az eredmény és persze a teljes innen következő tábla összeomlik. Miért nem végzi az az összeadást, amikor nincs a forráscellában érték?
-
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #9496 üzenetére
Ami az Inputbox-t mint metódust illeti (második linked) nekem nem megfelelő ugyanazért amiért ez:#8953 meg ez:#9219. Úgy látszik engem üldöz ez a probléma
Az Inputbox mint függvény esetében kipróbáltam néhány dolgot de egyikkel sem sikerült szétválasztani a Cancel és az OK gombok működését.
Már saját Inputbox készítésén gondolkodtam (UserForm TextBox parancsgombok) amikor ezeket találtam:[link][link]
Noha úgy tűnik működik a dolog nekem
kicsitnagyon ingoványos ez a terület szóval ha valaki lát benne olyan buktatót amit én esetleg nem vettem észre az ne kíméljen.[ Szerkesztve ]
-
Cuci3
tag
-
-
Delila_1
veterán
válasz
Fire/SOUL/CD #9504 üzenetére
Kiderült, hogy a szolgáltatómnál van a hiba. 17:50-kor megkaptam egy e-mailt, amit 9:22-kor küldtek nekem. Lassanként befutnak a hozzászólásokról az értesítések, az előbb kaptam meg a 9493-asról, ami 11:53-kor született. A Tiéd még várat magára.
Köszi, hogy felajánlottad a segítséget. -
Delila_1
veterán
válasz
Fire/SOUL/CD #9504 üzenetére
3 perce kaptam meg egy régebbi, 11:26-kor született hozzászólást, az idő 13:10 a levelezőmben – ami rendesen működik. A Te hozzászólásodról még nem kaptam értesítést.
Hol jelezzek, kinek?[ Szerkesztve ]
-
-
Delila_1
veterán
Ti kapjátok rendesen az értesítést az új hozzászólásokról?
Én most kaptam meg a 9495-ösről, ami 12:07-kor íródott, és nálam 12:45-ös idővel érkezett, 16:18-kor.
[ Szerkesztve ]
-
bugizozi
őstag
válasz
Fire/SOUL/CD #9501 üzenetére
óóóó, hálám üldözni fog
-
válasz
bugizozi #9498 üzenetére
VBA Editor/View/Toolbar/Edit bepipál, ekkor megjelenik egy eszköztár, amin (többek közt) található lesz egy Comment Block és Uncomment Block gyors gomb.
Írd be a kommentelni kívánt több sort, jelöld ki mindet, majd katt a Comment Block-on.
VBA-ban csak egysoros kommentelés létezik, ami vagy a már általad is említett ' karakter, avagy a REM.
[ Szerkesztve ]