Telefonszámunk: 1-472-0679

[Resolved] Munkalapok adott celláinak másolása

Kezdőlap Fórumok Excel programozás [Resolved] Munkalapok adott celláinak másolása

Topic Resolution: Resolved

Ennek a témakörnek tartalma 16 hozzászólás, 3 résztvevő. Utolsó frissítés:  horvimi 3 napja, 2 órája telt el a bejegyzés óta.

15 bejegyzés megtekintése - 1-15 / 17
  • Szerző
    Bejegyzés
  • #5353

    DoWtHen
    Résztvevő

    Sziasztok!
    Segítséget szeretnék kérni egy makróhoz.
    Egy munkafüzet 11.lapjától az utolsóig kellene kimásolnom cellatartományokat egy másik munkalapra.
    A kimásolás részét megcsináltam, és az jól működik, de nem tudom ciklusba rakni, hogy végig menjen az összes munkalapon (kivéve az első 10-en).
    A válaszokat előre is köszönöm.

    Sub Adat_Masolas2()
    'ezt kellene minden munkalapon végrehajtania.
    
    Dim oszlop1 As Range
    Dim oszlop2 As Range
    Dim oszlop3 As Range
    Dim oszlop4 As Range
    Dim oszlop5 As Range
    Dim oszlop6 As Range
    
    Set oszlop1 = Range("D93:E102,L93:M102,T93:U102")
    Set oszlop2 = Range("D123:E132,L123:M132,T123:U132")
    Set oszlop3 = Range("D153:E162,L153:M162,T153:U162")
    Set oszlop4 = Range("D183:E192,L183:M192,T183:U192")
    Set oszlop5 = Range("D213:E222,L213:M222,T213:U222")
    Set oszlop6 = Range("D243:E252,L243:M252,T243:U252")
    
        Union(oszlop1, oszlop2, oszlop3, oszlop4, oszlop5, oszlop6).Select
        Selection.Copy
        Sheets("Állásidők_rögzítése").Select
        'Range("B3").Select
        ActiveCell.Select
        ActiveSheet.Paste
        ActiveCell.Offset(60, 0).Activate
    End Sub
    #5354

    delila
    Résztvevő

    Szia!

    Tedd egy ciklusba.

    For lap=10 to sheets.count
       with sheets(lap)
          set oszlop1 = .Range("D93:E102,L93:M102,T93:U102")
          ...
       end with
    next
    #5355

    DoWtHen
    Résztvevő

    próbáltam de most is hibás lett, valamit elrontok.

    Attachments:
    You must be logged in to view attached files.
    #5357

    DoWtHen
    Résztvevő

    Ezt a sort jelöli:
    ActiveSheet.Paste

    #5358

    delila
    Résztvevő

    Az értékadások után 1 lépésben másolhatsz.

    Union(oszlop1, oszlop2, oszlop3, oszlop4, oszlop5, oszlop6).Copy Sheets("Állásidők_rögzítése").Range("B3")

    A másolás helyét (másik lap B3 cella) megjegyzésbe tetted.
    Nem próbáltam ki, de valószínűleg nem szereti a több tartomány együttes beillesztését.
    Ebben az esetben Terület1.Copy MásikLap.Range(cellacím)

    #5359

    DoWtHen
    Résztvevő

    Ez most nem csinál semmit, így kellet beilleszteni?

    “Ebben az esetben Terület1.Copy MásikLap.Range(cellacím)” Ezt hogy kell beírni, ennyire nem értek a makróhoz.
    Köszi a válaszokat.

    Sub kigyűjt22()
    
    Dim oszlop1 As Range
    Dim oszlop2 As Range
    Dim oszlop3 As Range
    Dim oszlop4 As Range
    Dim oszlop5 As Range
    Dim oszlop6 As Range
    
    Set oszlop1 = Range("D93:E102,L93:M102,T93:U102")
    Set oszlop2 = Range("D123:E132,L123:M132,T123:U132")
    Set oszlop3 = Range("D153:E162,L153:M162,T153:U162")
    Set oszlop4 = Range("D183:E192,L183:M192,T183:U192")
    Set oszlop5 = Range("D213:E222,L213:M222,T213:U222")
    Set oszlop6 = Range("D243:E252,L243:M252,T243:U252")
    
    For lap = 10 To Sheets.Count
       With Sheets(lap)
    Union(oszlop1, oszlop2, oszlop3, oszlop4, oszlop5, oszlop6).Copy Sheets("Állásidők_rögzítése").Range("B3")
        End With
        Next
    End Sub
    #5360

    DoWtHen
    Résztvevő

    Ezt is kipróbáltam és nem csinál semmit, hibát sem ír ki.

    Sub kigyűjt33()
    
    For lap = 10 To Sheets.Count
       With Sheets(lap)
    Range("D93:E102,L93:M102,T93:U102,D123:E132,L123:M132,T123:U132,D153:E162,L153:M162,T153:U162,D183:E192,L183:M192,T183:U192,D213:E222,L213:M222,T213:U222,D243:E252,L243:M252,T243:U252").Copy Sheets("Állásidők_rögzítése").Range("B3")
        End With
        Next
    End Sub
    #5361

    horvimi
    Kulcsmester

    Sziasztok!

    Ha jól értem, akkor a 11. laptól a végéig minden lapon ugyanazt a ne összefüggő tartományrendszert akarod kiválasztani, és beilleszteni a gyűjtő lapra, gondolom egymás alá.

    Ha ezt jól gondolom, akkor
    – a beillesztés helye nem lehet mindig a B3, hanem a B oszlop első üres cellája.
    – Ha egy menetben működött, akkor ciklusban is működnie kell.
    – Szerintem hagyjuk a With .. End With szerkezetet, mert magyarázat nélkül nem érted, hogy hogy működik.
    – A ciklusban inkább legyen benne az aktuális lap .Select

    For lap = 10 To Sheets.Count
           Sheets(lap).Select
           Ide a sok Set egymás alá       
           union(....).copy destination:=sheets("gyujto").range("B3").End(xlDown).offset(1,0)
    Next

    Ez akkor lehet jó, ha a bemásoláskor a B oszlopban mindig van adat.

    Imre

    • A hozzászólás módosításra került: 3 napja, 23 órája telt el a bejegyzés óta- horvimi.
    • A hozzászólás módosításra került: 3 napja, 23 órája telt el a bejegyzés óta- horvimi.
    • A hozzászólás módosításra került: 3 napja, 23 órája telt el a bejegyzés óta- horvimi.
    • A hozzászólás módosításra került: 3 napja, 23 órája telt el a bejegyzés óta- horvimi.
    • A hozzászólás módosításra került: 3 napja, 23 órája telt el a bejegyzés óta- horvimi.
    #5367

    DoWtHen
    Résztvevő

    Sziasztok.

    Sub kigyujt3()
    Dim oszlop1 As Range
    Dim oszlop2 As Range
    Dim oszlop3 As Range
    Dim oszlop4 As Range
    Dim oszlop5 As Range
    Dim oszlop6 As Range
    
    For lap = 11 To Sheets.Count
        Sheets(lap).Select
        Set oszlop1 = Range("D93:E102,L93:M102,T93:U102")
        Set oszlop2 = Range("D123:E132,L123:M132,T123:U132")
        Set oszlop3 = Range("D153:E162,L153:M162,T153:U162")
        Set oszlop4 = Range("D183:E192,L183:M192,T183:U192")
        Set oszlop5 = Range("D213:E222,L213:M222,T213:U222")
        Set oszlop6 = Range("D243:E252,L243:M252,T243:U252")
        Union(oszlop1, oszlop2, oszlop3, oszlop4, oszlop5, oszlop6).Copy Destination:=Sheets("Állásidők_rögzítése").Range("B3").End(xlDown).Offset(1, 0)
    Next
    End Sub

    Hibát jelez az Union(..).copy sorra.

    Run-time error ‘1004’: Application-defined or object-defined error

    #5368

    DoWtHen
    Résztvevő

    “Ez akkor lehet jó, ha a bemásoláskor a B oszlopban mindig van adat.” Így is kipróbáltam írtam egy sort a táblába és működik a makró, de a 10 cellapár helyett csak az első cellapárokat másolja át a többit nem.

    #5369

    horvimi
    Kulcsmester

    Tölts fel egy mintafájlt, ami életszerű.
    ha szupertitkos, akkor másítsd meg az adatokat.

    További látatlan gyógyításra nem vállalkozom 🙂

    #5372

    DoWtHen
    Résztvevő

    3 lap maradt meg, a többit törölni kellet a méret miatt.

    Attachments:
    You must be logged in to view attached files.
    #5374

    horvimi
    Kulcsmester

    Ha a wk… lapokon az egyes blokkok ki vannak töltve teljesen, akkor most jól működik.
    ha viszont a D oszlopban vannak üresek (ezek kerülnek a másolás után a gyűjtő lap B oszlopába), akkor baj lehet.
    Ugyanis azt, hogy a ciklus következő lapjáról a gyűjtő B oszlopában hol van az utolsó adat, azt most egy B oszlopra indított Ctrl-Lenyíl kódjával próbálom megállapítani.
    Ezt most neked kellene átgondolni, hogy mivel lehetne jelezni a gyűjtőlapon a bemásolt adatok végét.

    csináltam egy külön modult, (Module1) ami ezen a fájlon dolgozik.
    Az első wk lap blokkjait kitöltöttem, a többit nem.

    Közben lett egy ötletem.
    ha jól látom, egy blokk 10 soros fixen, tehát egy munkalapon 60 sor van, amit át kell másolni.
    Ezzel már lehet valamit kezdeni.

    Szerintem most jó lesz, és nem is kell a kitöltésnek folyamatosnak lenni, ezzel a 60-as bulival megy.
    Szóval Module1.

    Imre

    Attachments:
    You must be logged in to view attached files.
    #5376

    DoWtHen
    Résztvevő

    Soha nem volt még tele a 10 sor, viszont igen minden lapon fix 10 cella hosszú ez a rész és 60 sort kellene átmásolni.
    A próba lapon tökéletesen megy, az éles munkafüzetben az átmásolás B363 cellától kezdődik!!!

    #5377

    horvimi
    Kulcsmester

    No, hat akkor hajrá, csak a ciklus for részét es a beillesztes elotti sorban levo B3 at kell modositanod.
    Jelezd, higy mi lett.

15 bejegyzés megtekintése - 1-15 / 17

Be kell jelentkezni a hozzászóláshoz.