2417
megoldást keresek erre a problémára
-
Storey #2174 Sziasztok!
Excel makróval való mentési problémám lenne!
Szeretném új, .XLS formátumban elmenteni egy Excel munkafüzet egy konkrét lapját, abba a mappába, ahonann az alap munkafüzet megnyitásra került, úgy hogy a lapon szereplő értékek értékbeillesztéssel kerüljenek át az új lapra.
Szerény tudásom alapján az alábbi makrót alkottam, de sajnos nem működik. Generálja az új lapot, de aztán hibával leáll!
Sub exportxls()
Set WST = Sheets("A lap neve")
WST.Select
WST.Copy
WST.SaveAs ActiveWorkbook.Path & "/NET_" & Format(WST.Range, "0000") & ".xls"
WST.Select
WST.Name = "Az új név"
Range("A1:J112").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
ActiveWorkbook.Save
ActiveWorkbook.Close
Workbooks(neve).Activate
End Sub
Előre is köszi a segítséget!
-
#2173 Szívesen. -
#2172 Köszönöm. -
#2171 Kiteheted az ikonját a Gyorselérési eszköztárra.
Gyorselérési jobb szélén a legördülőből kiválasztod a További parancsokat. A Választható parancsoknál a Minden parancsot hívd be. A megjelenő listában keresd meg a Feltételes formázást, és a Felvétel gombbal másold át a jobb oldali listába. Ott a fe-le gombokkal meghatározhatod a helyét a többi ikon között.
Így mindig kéznél lesz, bármelyik menü látszik éppen a menüszalagon. -
#2170 Van esetleg valami gyorsgomb kombináció a feltételes formázás szabálykezelő behívására? -
GImre70 #2169 Sziasztok.
Lenne egy kérésem. A feltételes formázásnál pontosan mit jelent a "Leállítás, ha igaz" opció. És ezt mikor kell bejelölni, mert működik mindenkét esetben ha jelölve van, vagy nincs. SetFirstPriority és ez az tulajdonság?
Előre is köszönöm. -
GImre70 #2168 Köszönöm. Időközben sikerült a beszerzés. -
donci5 #2167 Egyáltalán nem haragszom. Ha az eredetin azt érted, hogy vásároltam-e, nos nem, de aktiválva van, és kifogástalanul működik.Már nem tudom honnan, de némi turkálással nem gond beszerezni. -
GImre70 #2166 Szia Ne haragudj, hogy zavarlak, de azt szeretném kérdezni, hogy az OFFICE 2016 eredeti változat, vagy nem és honnan?
[email protected]. Előre is köszönöm. Imre -
GImre70 #2165 Sziasztok.
Előszöris Boldog Új Évet 2016-ra.
Hogy kell összeállítani a SUMIF() -függvényt? Erre gondoltam "=SUMIF(R[-" & változo & C:R[-1]C, "feltétel")" Nekem ez valahogy nem áll össze. Előre is köszönöm. Imre -
donci5 #2164 Szevasztok
Office 2016-t használok, és régebbi táblázatoknál IV az utolsó oszlop, amit használni, formázni tudok. A megnyitott új táblázatoknál nincs ilyen probléma. Van-e erre valami megoldás?
A válaszokat köszönöm
dönci5 -
#2163 Ahhoz, hogy egy lapra lépéskor helyesen: Ahhoz, hogy MINDEN lapra lépéskor... -
#2162 Ahhoz, hogy egy lapra lépéskor elvégződjön valamilyen művelet, a ThisWorkbook laphoz kell rendelned egy eseményvezérelt makrót, a Workbook_SheetActivate-t.
Például ha a lapra lépéskor a B oszlop értékéből ki akarod vonni az A oszlop értékét a második sortól kezdve, akkor a makró
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
Range("C2:C" & usor) = "=B2-A2"
End Sub
Mint látod, a lapra lépéskor meghatározzuk az aktuális lap A oszlopának utolsó kitöltött celláját (usor), és a képletet a második sortól az utolsóig íratjuk be.
A füzetben lévő nagyon sok képlet lassíthatja a feldolgozást, ezért a képlet beírása után a helyükre beilleszthetjük az értéküket.
Range("C2:C" & usor).Copy
Range("C2").PasteSpecial xlPasteValues
Application.CutCopyMode = False 'másolási mód megszüntetése
Range("A1").Select 'az A1 cellára lépünk. Nem fontos, de megszűnik a C2:C(usor) kijelölése.
-
GImre70 #2161 Köszönöm ki fogom ezt próbálni. Viszont a korábbi makróval kapcsolatban nem jutok dűlőre. Annyit már elértem, hogy a két cella tartalmát szöveg típusú változóba teszem. Akkor nem nagyon kapok típus hibát. Viszont ha a munkafüzet sheetchange eseménynél okoz problémát de a munkalap change nincs probléma de akkor állandóan másolni kell az eseményt ha új táblázatot csinálok -
#2160 A Columns.Count a lapon (füzetben) lévő oszlopok száma, a Rows.Count pedig a soroké. 2007-es verziótól kezdve ezek az értékek 1024-szeresükre nőttek az előző verziókhoz képest.
1 oszlop=cells(1,"F").end(xltoleft).column
2 oszlop=cells(4,"A").end(xltoright).column
3 oszlop=cells(1,columns.count).end(xltoleft).column
4 oszlop=cells(4,"D").end(xltoright).column
5 sor=cells(4,"D").end(xldown).row
6 sor=cells(9,"D").end(xldown).row
7 sor=cells(1,"H").end(xldown).row
8 sor=cells(rows.count,"H").end(xlup).row
Állíts össze a kép szerinti kis táblákat – akár többet –, valamelyikben állva nyomj Ctrl+nyilat (fel, le, jobbra, balra). A hatásukból azonnal megérted a választ.
Az If-es kérdésedhez: a 2. a jó. Akkor hajtódik végre az If és End If közötti utasítás, ha az E14 cellába vittél be adatot a billentyűzetről. 1 cella helyett tartományt is megadhatsz.
if Not Intersect(Target, Range("E14:H20")) Is Nothing then -
GImre70 #2159 Sziasztok.
Azt szeretném kérdezni, hogy ez az utasítás mit csinál?
if Intersect(Target, Range("G2:G103")) then és ez? if Not Intersect(Target, Range("E14")) Is Nothing then
És még egy utolsó kérdés ha nem gond van ez : range(cellaId).end(irány) honnan lehet tudni, mikor melyik irányt (xlDown, xlUp,xlLeft, xlRight) kell használni?
Előre is köszönöm. Imre -
moncsa001 #2158 Sziasztok!
Legyetek szívesek segítsetek, kiapadt a tudományom. Az alábbi a téma. Adott egy táblázat dolgozók adataival. A oszlop munkába állás időpontja, B oszlop Felmondás időpontja. A kérdés, hogy hányan dolgoztak 2013.01.01 és 2013.12.31-ke között. Illetve 2013.01.01-én és 2013.12.31én. Irányított szűrővel próbálkoztam, de nem tudom egyszerre úgy, hogy mindegyik feltételnek megfeleljen. Hogyan tudnám ezt legegyszerűbben megoldani? Köszönöm előre is. -
#2157 köszönöm. :-( -
GImre70 #2156 Szia Delila. Hát én feladom a makró készítést. Bármit csinálok a makróm nem nagyon akar működni. Például beírtam az application.enableevents = false értéket a végére pedig az ellenkezőjét és akkor már a WorkBook_NewSheet() esemény az egyik fejléc helyett egy nullát (0) írt a cellába. a Legfontosabbat még nem is mondtam, hogy bármire deklarálom nem hajlandó kiszámolni az értéket. -
#2155 Nem lehet.
A területét állíthatod a Height és a Width tulajdonságoknál, de ez csak a Caption-be beírható cím hosszúságát változtatja. -
#2154 Halihó!
Újra itt! :-)
a kérdésem az volna, hogy a CheckBox jelölőnégyzetének méretét meg lehet változtatni? mondjuk duplájára?
Köszi előre is! :-)
-
GImre70 #2153 Köszönöm. megpróbálom így deklarálni. -
#2152 kezd = 6:00 (date tip.)
vegez = 17:00 (date tip.)
ledolgozott idő = Format(vegez - kezd, "hh:mm") -
GImre70 #2151 Én ilyen pontosan nem szoktam beírni. Én csak annyit írok be, hogy például kezd= 6:00 vegez=17:00 és a percek = Minute(vegez) és innen számolom ki a ledolgozott időt ilyenkor adja a 13 hiba kódot.
Az napi időpontnál nem is működnek?
-
#2150 Változó típusok:
Date (dátum és idő), mérete 8 byte, lebegőpontos, aminek az egész része a dátum, a tört része az idő.
Byte (bináris), mérete 1 byte, 0-255 közötti egész szám.
Dim kezd As Date, vegez As Date
kezd = Cells(2, 1)
vegez = Cells(2, 2)
Cells(2, 5) = Format(vegez - kezd, "hh:mm")
Ez akkor is működik, ha a kezd egyik napi-, a vegez másik napi időpont.
kezd=2015.11.18 22:00:00
vegez=2015.11.19 6:00:00
Utoljára szerkesztette: Delila1, 2015.11.19. 09:35:30 -
GImre70 #2149 Bocsánat. De előtte kipróbáltam és továbbra is type mishmatch üzenetet ad. Most azt nem tudom, hogy egy cella milyen tipusú ha csak azt írod be hogy: 17:00 mert ha számként formázom, akkor double a tipusa, de ha idő formátumot adok akkor date tipusú. Most melyik jobb? Mert akkor a 2142-s kérdésemre konvertálnom kell a változókat.
Dim kezdes as Double
Dim vege as Double
Dim perce as Byte, mivel a perc egész szám és kisebb 256-nál. Minute(vege)=1 -59 közötti érték.
De ha
Dim kezdes, vege as date
Dim perce as Byte is jó?
-
#2148 Mindegyiket makrókban alkalmazzuk.
Az EnableEvents (esemény engedélyezése) letiltását jellemzően az eseményvezérelt makrókban alkalmazzuk. Pl. a Change eseményben megadod, hogy egy cellába kerüljön egy új adat. Ezt a beírást észreveszi a makró, és újból lefut. Érdemes a makró elején letiltani, majd a végén True-ra állítani.
Könnyen ellenőrizheted a dupla futást, ha a makró elejére beteszel egy stopot, és lépésenként futtatod.
A ScreenUpdating a képernyőfrissítés. Mikor egy hosszú listán végzel műveletet, a tiltása nélkül a képernyő minden művelet után frissül, ami megnöveli a futási időt. Ezt is vissza kell állítani a makró végén.
Nem reagáltál a 2146-os válaszomra. -
GImre70 #2147 Sziasztok. Azt szeretném kérdezni, hogy mit állítunk be az EnableEvents, és a ScreenUpdating tulajdonságokkal? És mikor, hol kell őket használni. Nagyon köszönöm. -
#2146 A SelectChange akkor indul, mikor egy cellára rákattintasz, a Change pedig akkor, mikor a billentyűzetről megváltoztatod egy cella értékét.
Érdemes kivenni a Select-et a címsorból. Ha a makrót minden lapon akarod alkalmazni, akkor a ThisWorkbook laphoz rendeld.
A makró elején a helyedben meghatároznám, melyik oszlopba íráskor végezze el a feladatot. Ha jól látom, a D oszlopba írod be az utolsó adatot. A Dim utasítások után betennék egy feltételt:
If Target.column=4 Then
'utasítások
End If
Cella módosításakor indul a makró. Azonnal megnézi a bevitel helyét, és ha ez nem a 4. oszlop, az End If utasításra ugrik, nem számolgat.
-
GImre70 #2145 Ez a hiba mindig a Workbook_SheetChange() eljárásnál jelentkezik. Ha a Worksheet_Change() használom akkor nincs semmilyen hiba jelzés. Csak itt mindig másolni kell az aktuális munkalap-hoz. -
#2144 A sárga soron az egérmutatóval állj a Target.Row fölé. Nem kell kijelölni. Megjelenik az aktuális sor száma.
Lépj át a füzetedbe, és nézd meg, hogy abban a sorban a C oszlop értéke dátum (idő) típusú-e. Valószínű, hogy nem, vagy esetleg üres a kérdéses cella. -
GImre70 #2143 Legtöbbször ezek változok okoznak hibát.
kezdese = Cells(Target.Row, 3)
veges = Cells(Target.Row, 4)
perce = Minute(vege)
A "kezdese" és a "veges" változok dátum tipusúak. De a"perce " változót nem tudom, hogy mire dimenzionáljam.
-
GImre70 #2142 Legtöbbször ezek a változok.
-
#2141 koszi -
#2140 "A Rows.Count adja a lapok max. darabszámát" kimaradt egy lényeges szó, helyesen "A Rows.Count adja a lapok max. sorának darabszámát"
Utoljára szerkesztette: Delila1, 2015.11.06. 07:51:15 -
#2139 Kicsúsztam az időből.
usor = Range("E" & Rows.Count).End(xlUp).Row
A Rows.Count adja a lapok max. darabszámát, ami a régebbi verziókban 65.536 volt, az újabbakban 1.048.576.
Állj az E oszlop legalsó sorára, majd nyomj Ctrl+fel nyilat. Az E oszlop alsó, valamilyen adatot tartalmazó cellája lesz aktív. Ezt a műveletet tartalmazza a Range("E" & Rows.Count).End(xlUp) utasítás. A végén a .Row az aktívvá lett cella sorának a számát adja vissza, ezt tesszük az usor változóba.
Az első üres sor az oszlopban
üres=Range("E" & Rows.Count).End(xlUp).Row+1 -
#2138 Jó a Private Sub Workbook_SheetChange esemény, amit a ThisWorkbook laphoz kell rendelned. Akkor minden munkalapodon fog működni.
Melyik változónál akad ki típus eltérés hibával? -
GImre70 #2137 Szia. Beírtam ezeket az utasításokat de valahogy nekem továbbra sem akar tökéletesen működni. Nem az a probléma, hogy én a Workbook_Sheetchange() esemlnyt használom a WorkSheets_change() esemény helyett? csak ezzel az a probléma, hogy minden egyes új munka lapnál Ctrl +c , Ctrl+v utasítást kell használni. Így viszont nem kéne mindig másolni, beilleszteni. Sőt van olyan is hogy nem számolja ki a ledolgozott időt. És el tudod mondni hogy ez az utasítás mit csinál pontosan? Range("E" & Rows.Count).End(xlUp).Row Nagyon köszönöm. -
#2136 Feltételes formázást alkalmazz. Mivel ez csak 1 lapon belül működik, az első lapon vegyél fel egy segédoszlopot, nálam ez a B.
A két lap egymás mellett látszik a képen, a státuszsor a Munka1 lap B2 cellájának a képletét mutatja.
A feltételes formázáshoz jelöld ki a Munka1 lap A2:A... valahány tartományát, majd a formázáshoz add meg a =$B2>0 képletet.
Szerk.
Sajnos a kép nem olvasható. A Munka1!B2 képlete: =DARABTELI(Munka2!A:A;A2), ezt másold le a többi adat mellé.
Utoljára szerkesztette: Delila1, 2015.11.03. 10:43:47 -
#2135 Hello azt hogy tudom megcsinalni, hogy egy excelen belul van ket lapom es szeretnem ha a masodik lapon talalhato lista alapjan az elsoben kijelolje azokat a sorokat ahol eggyezik a termek kodja? Koszi elore is.