-
Fototrend
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
-
Delila_1
veterán
válasz
Mittu88
#32184
üzenetére
Mivel Feri csak estére ígérte a választ, megpróbálom helyettesíteni.
A Téma összefoglalóban elolvashatod a personal füzet létrehozásának a módját. Ebbe másold be a már működő makró(i)dat.
Itt meglátod, hogyan tehetsz ki ikont a makró(k) indításához a gyorselérési eszköztárra.
-
Fferi50
Topikgazda
válasz
Mittu88
#32182
üzenetére
Szia!
Nem tudom, hogy az Office újratelepítés segíthet-e. Erre mondják, hogy próba-szerencse. De az általad linkelt problémát sem oldották meg....
Valószínűleg a gép memóriája "zavarodik meg" időnként, ezért írja a típushibát. A parancsgombok is okozhatják - milyen típusúak? ActiveX vagy Munkalap vezérlők?Helyette inkább javasolnám a Ribbonra feltenni saját menüként - ha szeretnéd, tudok benne segíteni - a Custom UI programmal lehet megoldani.
Üdv.
Ui: csak estefelé leszek elérhető újra.
-
Fferi50
Topikgazda
válasz
Mittu88
#32179
üzenetére
Szia!
Sajnos csak tippelgetek (mint anno a rabbi a juhoknál
).
Milyen tartalma van annak a fájlnak, amiből megnyitod a másikat? Nem lehet, hogy nagy munkalap aktív éppen benne?
(Nekem volt olyan problémám régebben, hogy diagram makrós beszúrásánál nem adta hozzá a címet meg még egy-két dolgot makró futáskor, ha lépésenként futtattam, akkor viszont nem jött elő a hiba... Hosszú idő után az derült ki, hogy egy nagyon sok adatot tartalmazó munkalap után próbáltam beszúrni a diagramot és ez vitte "tévútra" a folyamatos futású makrót - valami miatt az aktív munkalapról akart adatot rakni a diagramba beszúráskor. Amint egy kis adattartalmú munkalap volt aktív, ez a probléma megszűnt.!)Nem tudom, hogy munkafüzet nyitáskor ilyen okozhat-e problémát.
Talán meg kellene próbálni egy teljesen üres, csak a makrókat (+ egy munkalap) tartalmazó munkafüzettel futtatni.Üdv.
-
Fferi50
Topikgazda
válasz
Mittu88
#32176
üzenetére
Szia!
Nem oka a hibának szerintem, de felesleges az Err változót definiálnod, mivel az rendszer függvény, ami az ErrObjectet adja vissza - alapértelmezett tulajdonsága a Number.
Talán az lehet a probléma, hogy sok időbe telik megtalálnia a fájlt a hálózaton, esetleg érdemes lenne megpróbálni, hogy előtte arra a könyvtárra ugrassz a makróban a chdir paranccsal.
A Type Mismatch hibát a wb változódra írja ki?
Üdv.
-
Delila_1
veterán
válasz
Mittu88
#32137
üzenetére
Az az 1 sor, amit írtam, bármelyik lapról indítva a makrót, bármelyik másik lapra beteszi az oldaltörést.
Ha az aktív lapon akarsz oldaltörést létrehozni, az
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Range("A22")sorral is megteheted.
Akár ciklust is szervezhetsz köré, ami x soronként szúr be oldaltörést.
Sub Oldaltores()
Dim x As Long
For x = 53 To 300 Step 53
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Range("A" & x)
Next
End Sub -
Fferi50
Topikgazda
válasz
Mittu88
#32128
üzenetére
Szia!
Thisworkbook.Worksheets("mlapnév").HpageBreak.Add "Adott cella" helyett
Thisworkbook.Worksheets("mlapnév").HpageBreakS.Add "Adott cella"
Az "Adott cella" egy Range objektum pl. worksheets("mlapnev").Range("A56") legyen.
A másik verzió pedig azért hibás, mert a Location objektum, ezért set és = formában kell értéket adni neki.
Set Thisworkbook.worksheets("mlapnév").HpageBreak(1).Location = "Adott cella"
Továbbá csak akkor működik, ha oldaltörés nézetben vagy.
Üdv.
-
lenkei83
tag
válasz
Mittu88
#32125
üzenetére
Kb annyi a lényege, hogy nincs oldaltörésed. Magyarul ha nyomtatsz egyet, akkor egyetlen egy oldalad lesz kinyomtatva vagyis az oldaltörésed ugyanaz mint az első oldalhoz kapcsolódó nyomtatási terület nagysága.
Van a linken minta kód is, teljesen jól mutatja hogy mi a gond.
Vélhetően Nálad így néz ki az oldaltörés, na ezt nem tudja értelmezni a kódod:

Üdv
P. -
Mittu88
senior tag
-
Fferi50
Topikgazda
-
Mittu88
senior tag
válasz
Mittu88
#30654
üzenetére
Sikerült!
Az Application.OnTime Now, "nyitas" parancsot a workbook.open eseménybe tettem, ezután hívtam meg az eljárást.
Így most annyi a gond "csak", hogy ha nincs ott az On Error Resume Next parancs az eljáráson belül, aWorkbooks(fajlnev2).Saved = True
Workbooks(fajlnev2).Closeparancsokra Subscript out of range hibát dob. Szerintem valamitől az X fájl (FinoMin.xlsm) bezáródik, így ezek a parancsok nem tudnak lefutni. Mindegy, bent hagytam, bár nem értem a dolgot.
-
Fferi50
Topikgazda
válasz
Mittu88
#30642
üzenetére
Szia!
Úgy gondolom, a nyitas makró tartalmát az ujverzio.xlsm Workbook_open eseményébe kellene beletenned, így az a fájl megnyitásakor lefutna.
(Melyik excel verzióról van szó?)
De akkor sem tartom igazán szerencsésnek ezt a megoldást, mert a füzeteken keresztül-kasul ugráló makrók tudnak ám problémát csinálni.
Én egy külön fájlba tenném ezt a verzió kezelést, ami megnézné, hogy van-e új verzió, ha igen, végrehajtja a kimásolásokat és utána akár be is zárhatja magát.Üdv.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
Mittu88
#28305
üzenetére
Az On Error Resume Next hibát generál, ha nem tudja megnyitni a következő sorban a fájlodat.
A megnyitási hiba kódja az 1004. Mikor bejön ez a hibakód, felteszi a kérdést
valasz = MsgBox("Újrahívás", vbYesNo + vbExclamation, "Új próbálkozás")
Igen válasz esetén kilép a Sub-ból, Nem-nél az Ujra címkéhez ugrik, ahol megszüntetjük a hibakódot az
On Error GoTo 0 sorral, másképp hibát jelez akkor is, ha most már meg tudja nyitni a fájlt.
Ez a lenullázó sor tulajdonképpen a 2. próbálkozástól érdekes, első esetben 0 a hibakód. -
bumlet
csendes tag
válasz
Mittu88
#28307
üzenetére
https://drive.google.com/file/d/0B7b59Ad833pDVTNadWVwcF9tNTg/view?usp=sharing
Azt szeretném hogy a Kp munkalapon jelenítse meg az összes kp-s számlát, a bank munkalapon pedig a bankos számlákat. A feltöltött táblában van egy pár adat de ettől sokkal többel kell dolgoznom.
-
-
Delila_1
veterán
válasz
Mittu88
#28245
üzenetére
Ez a makró akkor fut hibára, ha az inputboxban olyan számot kap, ami nem szerepel az A oszlopban.
Nyilván át tudod alakítani a saját célodra.Sub hiba()
Dim lel, szam As Integer
Innen:
On Error GoTo 0
szam = Application.InputBox("Kérem az egész számot", "Szám bekérése", , , , , , 1)
lel = Application.Match(szam, Columns(1), 0)
If VarType(lel) = vbError Then
MsgBox "Újra!", vbExclamation
GoTo Innen
End If
MsgBox "A makró többi része"
End Sub -
-
-
-
Fferi50
Topikgazda
válasz
Mittu88
#27961
üzenetére
Szia!
Az alábbi makró elvileg átmásolja, amit szeretnél.
Sub masolo()
Dim ws1 As Worksheet, wb1 As Workbook, usor1 As Integer, usor2 As Integer, fnev As String
fnev = "xxxxxxx"
Set ws1 = Workbooks(1).Worksheets(1) ' ahonnan másolunk
usor1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row 'az A oszlop utolsó nem üres cellájának a sora
Set wb1 = Workbooks(2).Open(Filename:=fnev) 'megnyitjuk a másik fájlt
usor2 = wb1.Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 ' megkeressük a worksheets(2) A oszlopának első üres cellájának sorát
ws1.Range("A1:L" & usor1).Copy Destination:=wb1.Worksheets(2).Cells(usor2, 1) ' a worksheets(1) megfelelő tartományát átmásoljuk a worksheets(2) A oszlopának végére
Workbooks(2).Save
Workbooks(2).Close
End SubÜdv.
-
Fferi50
Topikgazda
válasz
Mittu88
#27961
üzenetére
Szia!
Kicsit nézegettem még a makródat. Ha jól gondolom, az a feladat, hogy a Workbooks(1).Worksheets(1) munkalapjának az adatait szeretnéd a Workbooks(2).Worksheets(2) munkalapjának végére átmásolni.
Az utolsó teleírt sort így találhatod meg egyszerűen, nem kell hozzá ciklus:
usor=Cells(rows.count,1).End(xlUp).RowTartomány kijelölés többféle módon lehet: Pl:
Range("A" & i) => az A oszlop i-edik cellája
Range("A1" & ":L" & i) =>az A1:Li terület.
Cells(i,j) => az j oszlop i-edik sora (i és j szám)
és még számtalan változata van.A makródat még kicsit szabom.
Üdv.
-
Fferi50
Topikgazda
válasz
Mittu88
#27959
üzenetére
Szia!
Valóban abban a sorban van egy hiba:
Vagy Range(Range("A1"),Cells(i,12)), vagy Range(Cells(1,1),Cells(i,12))Másrészt viszont nem értem a két ciklust. Szerintem ezzel csak a legutolsó cellát fogod tudni átmásolni.
Még nézem a makródat, mert más gondot is látok benne.
Üdv.
-
Fferi50
Topikgazda
válasz
Mittu88
#24442
üzenetére
Szia!
A hibautan cimke szerintem felesleges.
On Error GoTo hibavan
For sorszam = 2 To osszsorszam
Sheets(masodikadatbazis).Select
raktarszam = Cells(sorszam, 2).Value
munkalapnev = Application.WorksheetFunction.VLookup(raktarszam, Sheets("Raktárak").Range("$M$2:$N$90"), 2, False)
raktarszam = munkalapnev
...
Next
hibavan:
sorszam = sorszam + 1
resume nextNem világos, hogy a munkalapnev változód milyen típusúnak van deklarálva. Ha variant akkor nem okoz futási idejű hibát, viszont az értéke hibaérték lesz és azt kell megvizsgálni
if not iserror(munkalapnev) then raktarszam=munkalapnevViszont megoldható másképp is, ha a munkalapnev nem variant tipusu:
On Error Resume Next
For sorszam = 2 To osszsorszam
Sheets(masodikadatbazis).Select
raktarszam = Cells(sorszam, 2).Value
munkalapnev = Application.WorksheetFunction.VLookup(raktarszam, Sheets("Raktárak").Range("$M$2:$N$90"), 2, False)
if err= 0 then raktarszam = munkalapnev else sorszam=sorszam+1
...
NextÜdv.
-
wolfman
veterán
válasz
Mittu88
#24079
üzenetére
Nem. Úgy van hogy írom a táblázatot és valami bill kombó megnyomhatok a nagy sebességemben vagy nem tudom, de néha így adja be. Klikkelek és alatta még 5 cellát kijelöl. Nagyon zavaró tud lenni.

Ha ki akarok egy cellát jelölni, akkor klikk és feljebb kell 4-el húzni az egeret.
-
-
-
littleNorbi
aktív tag
válasz
Mittu88
#23837
üzenetére
Értelek, csak sajnos egy kész listát kaptam kézhez, ami ilyen módon lett betáplálva...
Gondoltam hogy van valami egyszerűbb megoldás is rá, mint hogy külön külön függvényt írni rá. Pl osztja szét az oszlopot úgy, hogy az első oszlopba kerüljenek azok a karakterek amik számok, és ha bármilyen más karakter található az oszlopban, ami nem szám onnantól azokat dobja át a másik oszlopba, mert ha mindenhol csak "/" jellel lenne elválasztva, akkor már meg is oldódott volna a problémám... -
Delila_1
veterán
válasz
Mittu88
#23626
üzenetére
2007-től így tehetsz ki ikont.
-
m.zmrzlina
senior tag
válasz
Mittu88
#23558
üzenetére
Az volt a probléma, hogy volt egy kezdőérték, lefutott a teljes kód aminek során megváltozott és ennek a kódnak egy részét szeretném újra futtatni.
Namármost: a kezdeti értéket nem adhatom meg a részkód futtatásánál mert ha már egyszer lefutott a teljes kód akkor már nem megyek semmire azzal az értékkel. Ha viszont itt adok értéket neki akkor meg a teljes kód futtatásánál kavar be.
De mindegy is Fferi50 tippje alapján fogok boldogulni a problémával.
Köszi mindenkinek aki segített.

-
kutga
félisten
válasz
Mittu88
#23520
üzenetére
Igen, egy munkalap egy partner. Makrókhoz nem nagyon konyítok sajna.

MOD
Wyll
Igen, így néz ki. Az elrejtés még jó is lenne, ha nem lenne belőlük egy csomó, kézzel, egyenként irtó sokáig tart, és mivel gyakran változik, gyakran meg is kell csinálni. Erre keresnék valami automatizmust. -
Fferi50
Topikgazda
válasz
Mittu88
#23467
üzenetére
Szia!
A Public deklaráció nem azt jelenti, hogy globálisan van generálva a változó. Az osztálymodulokban (Thisworkbook, Munkalapok kódmoduljai, stb) deklarált Public változók is elérhetőek mindenhonnan, csak az általam korábban már mutatott módon. (Ha elkezded írni bárhol máshol pl. Thisworkbook. a pont után láthatod a többi tulajdonság között a Public módon deklarált változókat is.)
A Global deklaráció csak standard (nem osztály) modulban használható.
A Public deklaráció standard modul esetén szintén nem kér teljes nevet, mert ott megtalálja.Üdv.
-
Delila_1
veterán
válasz
Mittu88
#23464
üzenetére
Próbáld ki Munka1-ről indítva a lentieket.
A change eseményt a Munka1 laphoz vidd be, a másikat modulba.Private Sub Worksheet_Change(ByVal Target As Range)
MásikMakró Target.Row, Target.Column, Target.Value
End Sub
Sub MásikMakró(sor, oszlop, nev)
Munka2.Cells(sor, oszlop) = nev
End SubVáltozók értékét így is átadhatod másik makrónak. Arra ügyelj, hogy a fogadó makróban ugyanaz legyen a változók sorrendje, mint az indítóban. Látod, nem kell azonosaknak lenniük a neveknek, ám a Change makróban felvehetsz 3 változót az átadáshoz – de minek?
-
Mittu88
senior tag
válasz
Mittu88
#23458
üzenetére
Hátha érdekel másokat is:
Ha a cella képletet tartalmaz ( = jellel kezdődik), enterre a sorrend: Calculate -> Change -> Selectionchange.
Ha csak beírunk valamit, NINCS Calculate.
Ha van érvényesítés és rossz értéket írunk be, annyiszor lefut a Change esemény, ahányszor módosítani akartuk a cella értékét. -
-
Fferi50
Topikgazda
válasz
Mittu88
#23446
üzenetére
Szia!
Akkor produkálja ezt a hibát szerintem, ha a selection_change úgy következett be, hogy nem volt előtte egyik cellában sem változás (pl. egy celláról simán tab-bal ment tovább valaki, vagy csak belekattintott valahonnan).
Próbáld ezt a selection_change -nél, mielőtt a cells(sor,1) utasításra mennél:
if sor=0 then msgbox "Nem volt változás" :exit subTermészetesen a then után azt írsz be, amit szeretnél, hogy végrehajtódjon. Pl. adhatsz értéket a sor változónak.
Üdv.
-
m.zmrzlina
senior tag
válasz
Mittu88
#23432
üzenetére
Kijelölt cella értékének változóba írása:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$I$6" Then 'ide jön, hogy melyik celláról van szó
ertek1 = Target.Value
End If
End SubMódosított cellaérték változóba írása:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$6" Then 'ide jön, hogy melyik celláról van szó
ertek2 = Target.Value
End If
End Sub -
slashing
senior tag
válasz
Mittu88
#23397
üzenetére
a legegyszerűbb ha úgy mondom mint amikor keresel valamilyen fájlt a számítógépen és azt írod hogy:
*kutya*.* így megkeresel minden olyan fájlt amiben a kutya szó szerepel bármilyen kiterjesztéssel, ez is kvázi egy regex kifejezés...
szóval ilyen kifejezéssek leírhatod hogy mit szeretnél kerestetni karaktereket számokat azoknak a hosszát stb...
Mindent az ég egy adta világon le lehet írni velük de mocskos bonyolult tud lenni, szerencsére nem sok közöm volt eddig hozzá.
-
slashing
senior tag
válasz
Mittu88
#23345
üzenetére
erről én is tudnék mesélni, mikor megnyitja a munkafüzetet előjön automatikusan egy msgbox kiírja hogy mit nem szabad, a cellán érvényesítés van és kiírja hogy mit nem szabad más színnel van jelölve és még akkor is az ellenkezőjét csinálja mikor meg letiltom akár még a rákattintást is akkor meg reklamál hogy de miéééért, mert hülye vagy azért és nem fogja fel....
az abszolút hozzá nem értőnél már csak az rosszabb aki azt hiszi hogy ért hozzá, mert majd ők megoldják de még egy ha függvényt sem tud megcsinálni

minden szerénység nélkül mondom hogy nálunk 5 asszisztens munkáját fél év alatt automatizálni tudnám és még csak makró sem kéne hozzá, pedig én se vagyok egy nagy mágus de félelmetes a hozzá nem értés. A színezésen kívül talán még a szum függvény amit értenek...
-
Mittu88
senior tag
válasz
Mittu88
#23337
üzenetére
Ma pl. lecsesztek, hogy a szerveren amit anno csináltam fájlt, simán le tudta törölni az egyik felhasználó. Megnéztem és az egész fájlt törölte. Erre mondtam, hogy nem azt mondtátok, hogy ne törölhesse, hanem hogy ne törölhessen bele.
Ezt én (remélem helyesen) úgy értelmeztem, hogy ha meg van nyitva a fájl, ne tudjon munkalapot vagy cella tartalmat törölni.
Pár évnyi adatot töröltek, de van róla biztonsági mentés.
-
m.zmrzlina
senior tag
válasz
Mittu88
#23314
üzenetére
Nekem azt sikerült kiötleni (na jó innen loptam :-) hogy hozzáadsz a munkafüzetedhez egy lapot amin csak egy információ van a felhasználónak, hogy "Nincs engedélyezve a makró. Zárd be a munkafüzetet és nyisd meg újra miután engedélyezted a makrókat!". A fálj bezárásakor ezen a lapon kívül minden munkalapot elrejtesz és mentesz. Ha valaki engedélyezett makróval vagy letiltott makróval de biztonságos helyről nyitja meg a fájlt akkor a Worbook.Open esemény során az összes munkalap rejtése megszűnik csak az üzenetet tartalmazóé marad meg ergó tud dolgozni a user. Ha viszont nincsen engedélyezve a makró akkor megnyílik a fájl de csak egy lap látható amin az üzenet van (hiszen úgy mentetted el a fájlt hogy az összes többi rejtett).
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sh As Worksheet
For Each sh In Worksheets
sh.Visible = xlSheetVisible
Next
For Each sh In Worksheets
If sh.Name <> "figyelem" Then sh.Visible = xlSheetVeryHidden
Next
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub
Private Sub Workbook_Open()
Dim sh As Worksheet
For Each sh In Worksheets
sh.Visible = xlSheetVisible
Next
For Each sh In Worksheets
If sh.Name <> "figyelem" Then
sh.Visible = xlSheetVisible
Else
sh.Visible = xlSheetVeryHidden
End If
Next
End SubJa és nem Insert>New>Module-ba másolod a makrót hanem a Thisworkbook>Worksheet-ba
-
Delila_1
veterán
válasz
Mittu88
#22250
üzenetére
Jelöld ki a tartományt, és indítsd a makrót.
Sub Konyveloi()
Dim cella As Object
For Each cella In Selection
If cella.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)" Then _
cella.NumberFormat = "General"
Next
Range("A1:F17").Select
Columns("A:A").EntireColumn.AutoFit
End Sub -
slashing
senior tag
válasz
Mittu88
#21917
üzenetére
Nem használhatok összeg sort mivel folyamatosan bővülő táblázat, még ideiglenesen sem lehet majd bekapcsolni rajta az összeg sort. De nem számít annyira nem fontos dolog csak ha van egyszerű megoldás akkor belerakom.... ellenkező esetben meg ennyit kibír mindenki akinek dolgoznia kell majd vele...
Új hozzászólás Aktív témák
- Bomba ár! Lenovo ThinkPad L13 G3 - i5-1245U I 16GB I 256SSD I 13,3" FHD Touch I NBD Gari!
- GYÖNYÖRŰ iPhone 13 128GB Starlight- 1 ÉV GARANCIA, Kártyafüggetlen,,MS3434
- DELL Universal Dock UD22
- BESZÁMÍTÁS! ASUS H510M i5 10400F 16GB DDR4 512GB SSD RTX 3060Ti 8GB Zalman S2 TG CHIEFTEC 700W
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest







10"?

csak zárójelek nélkül:
Fferi50
