Kezdőlap › Fórumok › Excel programozás › [Resolved] Beszúrás
- This topic has 10 hozzászólás, 3 résztvevő, and was last updated 6 years telt el by horvimi.
-
SzerzőBejegyzés
-
2018-10-15-16:24 #5162
Kedves Imre,
a problámám egyszerűnek tűnik: leszűrök egy tartományra, ezt kijelölöm, kivágom, majd a legalsó sor után beszúrom. Azonban valami nem müködik, próbáltam több féleképpen a legutolsó probálkozásom itt szerepel:
Dim lrRange(„C1”).Select
lr = ActiveCell.CurrentRegion.Cells(ActiveCell.CurrentRegion.Cells.Count).Row + 1
ActiveSheet.Range(„$A$1:$CN$263”).AutoFilter Field:=2, Criteria1:= _
„105050100”ActiveSheet.AutoFilter.Range.Select
Selection.EntireRow.Select
Selection.Cut
Rows(lr).Select
Selection.Insert Shift:=xlDownAz utolsó sorra debug-ol, a hiba üzenet: „1004”, The selection isn’t valid. Make sure the copy and paste areas don’t overlap unless the same size and shape
Előre is köszönöm mindenkinek aki segíteni tud!
Gábor2018-10-15-17:00 #5163Szia!
Elsőként azt kérdezném, hogy ezt manuálisan végigcsináltad, és simán megcsinálta?
Imre
2018-10-16-09:32 #5178Szia!
Igen végigcsinálja, illetve ha makró rögzítővel rögzítem, akkor újra megcsinálja. Ha hozzá adom a változót akkor már hibára fut. Végig léptettem F8-al és a az utolsó sor utáni sor kijelöléséig (Rows(lr).Select) rendben megtörténik minden, de a beszúrásnál már hibaüzenetet küld.
Még annyit kiegészítés, hogy a tartomány alatt 5 sorral kezdődik egy másik tartomány, hátha van jelentősége.Köszönöm,
Gábor2018-10-16-14:31 #5179Feltöltenél egy mintafájlt?
Csak apró időszeleteim vannak, bocs.Imre
2018-10-16-14:43 #5180aZ UTOLSÓ SOR NEM KELL, CSAK SIMÁN MÁSŐLD BE PASTE-VAL
2018-10-19-11:14 #5182Nem kellene a Dim Ir után egy „As Integer” esetleg?
2018-10-23-14:57 #5194Sziasztok,
sajnos nem tudom feltölteni a fájlt mert nagyon szenzitiv adatok vannak rajta. Most nem tudtam vele foglalkozni én sem, de majd próbálkozok tovább. Ha lesz valami eredmény akkor megírom.
Az As integer -t oda lehet írni, ettől szebb lesz a kód, de nem hoz megoldást. A paste – al pedig az a gond, hogy kezdődik az állomány után 5 sorral lejebb egy újabb állomány és ha túl sok a szűrt adat, akkor felül írja néhány sort az alatta lévő sorokból.
Üdv.: Gábor2018-10-25-15:09 #5205Ha szűrt a táblád, akkor a szűrő tartományon kívülre sem enged beszúrni sorokat az excel.
Legalább is az enyém (2010/Excel 365) nem.
Erre a megoldás, hogy máshová mented ki, megszünteted a szűrőt, és utána szúrod be új soronként.
Persze még ekkor is kell gondolnod arra, hogy ha túl nagy a táblád (még ha látszólag nincs is benne adat), akkor is pampoghat az excel, mert az új sorokkal több sorod lenne, mint a max sorszám.2018-10-25-16:03 #5206Azért kérdeztem, hogy kézzel végigcsinálva működik-e, mert nekem nem működött.
Most megnéztem még egyszer Excel 2013 alatt.Több probléma is van itt.
Első, hogy a fenti kódhoz a Paste parancsot tartalmazó sort már nem tetted oda.
De nekem a következőt csinálja:
– A szűrésig minden OK
– Az ActiveSheet.AutoFilter.Range.Select kijelöli a szűrt sorokat és a fejlécet.
– A következő sor ezt bővíti teljes sor kijelölésre, majd kivágja
– Ezután kijelöli az utolsó utáni teljes sort
– majd beszúr egy sortNos ebben a pillanatban nálam megszűnik a szűrt állapot, és kiürül a vágólap is.
Tehát bármilyen PASTE művelet hibát fog okozni.Emellett felvetném, hogy az ActiveSheet.AutoFilter.Range.Select kijelöli a fejlécet is, illetve a szűrésnek megfelelő sorokat, de azok a valóságban általában nem összefüggő sorok. Ezeken a CUT/PASTE nem szokott működni, illetve csak úgy, hogy mozgatja az éppen nem látható sorokat is.
Ha beiktatod a csak látható cellák kijelölése lépést, akkor azonnal kijön, hogy ezen a CUT művelet nem fog működni.Szóval ez így szűrt állapotban nem fog működni.
Programozás technikailag azt is lehetne, hogy soronként menni lefelé, és
– kigyűjteni egy memóriatömbbe a szűrésnek megfelelő sorokat, és törölni az erdetieket, majd utána letenni alulra a tömb tartalmát, előtte beszúrni annyi sort, amennyi a tömb sorainka a száma
– Vagy soronként mozgatni a megfelelő sorokat Cut/Paste-el a végére. Előtte beszúrhatsz egy sort, hogy ne írd felül a már ott lévő dolgokat.Imre
2018-11-07-09:41 #5221Sziasztok,
időközben én is rájöttem, hogy nem működik a szürt sorokkal a cut/paste ezért más megoldást kerestem. Egyszerűen kimásoltam az adatokat egy üres munkalapra (ezt nem kellett létrehoznom mert több lapból áll a fájl és a folyamat ezen pontján van olyan amaelyik üres) , majd a szürt sorokat töröltem, hogy késöbb mikor visszamásolom az adatokat akkor a duplikációt elkerüljem. Hogy a fejléc ne sérüljön beszúrtam egy üres sort legfelülre és ott szűrtem le az adatokat. A kimásolt adatokakkal pedig már múködik a cut/paste, hiszen ez már tartomány nem szűrt adat.
Én valóban végig csináltam kézzel és akkor nekem működött….
Köszönöm a segítséget!
Üdv.: Gábor
2018-11-07-10:01 #5223Örülök, hogy sikerült.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.