Office: Makro, das aus definiertem Bereich nur den "gefüllten" Bereich kopiert

Helfe beim Thema Makro, das aus definiertem Bereich nur den "gefüllten" Bereich kopiert in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe mir ein Makro gebaut, das einen Zellbereich kopiert (Tabelle Original) und dann an das Ende einer anderen Tabelle (Datenbank)... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von joscha_h, 14. März 2012.

  1. joscha_h Erfahrener User

    Makro, das aus definiertem Bereich nur den "gefüllten" Bereich kopiert


    Hallo,

    ich habe mir ein Makro gebaut, das einen Zellbereich kopiert (Tabelle Original) und dann an das Ende einer anderen Tabelle (Datenbank) anfügt. Der Zellbereich besteht aus mehreren Zeilen, die jeweils ein Angebot umfassen.

    Ich möchte nun sicherstellen, dass keine leeren Zeilen bzw. Falscheingaben, aus dem zu kopierenden Bereich, in die Datenbanktabelle übertragen werden.

    Der zu kopierende Bereich ist B15:L22, eine Datenzeile geht daher von 15 bis 22. Sobald kein Wert mehr in der Spalte F z.B. F16 eingetragen ist, soll nur noch der darüber liegende Bereich kopiert werden.

    Es wäre schön, wenn mir jemand eine entsprechende VBA-Lösung zur Verfügung stellen könnte.

    Vielen Dank!

    JOscha
     
    joscha_h, 14. März 2012
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Joscha,

    ermittle zuerst die letzte belegte Zeile in Spalte F und mache dadurch den Kopierbereich variabel in Abhängigkeit des letzten Eintrags. Die letzte belegte Zeile in Spalte F kann man so ermitteln:
    Code:
    [TABLE="width: 80"]
    <tbody>[TR]
    [TD="width: 80"]    Dim lngLetzte As Long[/TD]
    [/TR]
    [TR]
    [TD]    lngLetzte =IIf(IsEmpty(Cells(Rows.Count, 6)), Cells(Rows.Count,   6).End(xlUp).Row, Rows.Count)[/TD]
    [/TR]
    </tbody>[/TABLE]
    
    Zum Kopieren verwendest du dann dieses:
    Code:
    Range("B15:L" & lngLetzte)
    Bis später,
    Karin
     
    Beverly, 15. März 2012
    #2
  3. joscha_h Erfahrener User
    Hallo Karin,

    vielen Dank für die schnelle Antwort und den Code.

    Leider funktioniert es bei mir noch nicht ganz. Ich habe den Code in mein Makro ergänzt und noch den Kopierbefehl eingefügt.

    Makro, das aus definiertem Bereich nur den "gefüllten" Bereich kopiert Makro.jpg

    Leider erscheint beim Ausführen des Makros zu dem Kopierbefehl immer die Meldung "Fehlermeldung beim Kompilieren". Kannst du dir das bitte noch einmal anschauen?

    Vielen Dank!

    Joscha
     
    joscha_h, 15. März 2012
    #3
  4. joscha_h Erfahrener User

    Makro, das aus definiertem Bereich nur den "gefüllten" Bereich kopiert

    Hier noch mal das Makro als Text:

    Sub Test()
    '
    ' Test Makro
    '

    '
    Range("B15:L22").Select

    Dim lngLetzte As Long
    lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 6)), Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)

    Range ("B15:L" & lngLetzte)
    Selection.Copy

    Worksheets("Transit").Activate
    Z = 1
    Do While Len(Worksheets("Transit").Cells(Z, 1)) > 0 'Ermitteln der Tabellenlänge
    Z = Z + 1
    Loop
    Range("A" & Z).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

    End Sub
     
    joscha_h, 15. März 2012
    #4
  5. miriki Erfahrener User
    Ich schmeiß meinen Hut auch noch mit in den Ring...

    Gruß, Michael
     
    miriki, 15. März 2012
    #5
  6. Beverly
    Beverly Erfahrener User
    Hi Joscha,
    Code:
    Sub Test()
       Dim lngLetzte As Long
       lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 6)), Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)
       Range("B15:L" & lngLetzte).Copy
       With Worksheets("Transit")
          lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
          .Range("A" & lngLetzte).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
             :=False, Transpose:=False
       End With
    End Sub
    Bis später,
    Karin
     
    Beverly, 15. März 2012
    #6
  7. joscha_h Erfahrener User
    Hallo Karin,
    hallo Michael,

    erneut vielen Dank für eure Hilfe.

    Als vba-Anfänger wirkt die Lösung von Karin für mich vertrauter, daher möchte ich mich daran orientieren.

    Das läuft jetzt schon ziemlich gut. Ich habe noch zwei Fragen:

    Ich möchte explizit nur den Bereich B15:L22 kopieren, da darunter noch andere Informationen stehen, die ansonsten auch mitkopiert werden. Wenn ich diese Daten lösche läuft das Makro auch wunderbar. Wie kann ich den Bereich einschränken?

    In der Tabelle in der die Daten eingefügt werden sollen, werden die Daten zur Zeit ab der letzten befüllten Zelle eingefügt. Sie sollten jedoch eine darunter eingefügt werden (erste Leere). Mit meiner alten Lösung bekomme ich das wieder hin, aber ich würde auch gerne sehen, wie das in deiner Lösung aussieht.

    Noch einmal vielen Dank für deine Unterstützung.

    Viele Grüße

    Joscha
     
    joscha_h, 16. März 2012
    #7
  8. Beverly
    Beverly Erfahrener User

    Makro, das aus definiertem Bereich nur den "gefüllten" Bereich kopiert

    Hi Joscha,
    Code:
    Sub Test()
       Dim lngLetzte As Long
       lngLetzte = 14 + Range("F15:F22").SpecialCells(xlCellTypeConstants).Count
       Range("B15:L" & lngLetzte).Copy
       With Worksheets("Transit")
          lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
          .Range("A" & lngLetzte).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
             :=False, Transpose:=False
       End With
    End Sub
    
    Bis später,
    Karin
     
    Beverly, 16. März 2012
    #8
  9. joscha_h Erfahrener User
    Danke, das sieht sehr gut aus!
     
    joscha_h, 16. März 2012
    #9
  10. joscha_h Erfahrener User
    Hallo Karin,

    ich habe mit deiner Hilfe das obige Makro erarbeitet.

    Ich habe das Makro noch erweitert, dass noch ein zweiter Bereich auf Befüllung überprüft wird und anschließend an eine andere Tabelle angehängt wird:

    Sub Test()
    '
    ' Test Makro
    '
    '
    Dim lngLetzte As Long
    lngLetzte = 14 + Range("F15:F22").SpecialCells(xlCellTypeConstants).Count
    Workbooks.Open Filename:= _
    "C:\Users\Joscha\Documents\_Studium\Index-Formel.xlsx", UpdateLinks:=3
    With Worksheets("Marine")
    lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
    .Range("A" & lngLetzte).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

    ActiveWorkbook.Save
    ActiveWindow.Close

    Dim lngLetzte1 As Long
    lngLetzte1 = 29 + Range("C30:C37").SpecialCells(xlCellTypeConstants).Count
    Range("B30:L" & lngLetzte1).Copy


    Workbooks.Open Filename:= _
    "C:\Users\Joscha\Documents\_Studium\Index-Formel.xlsx", UpdateLinks:=3
    With Worksheets("Storage")
    lngLetzte1 = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
    .Range("A" & lngLetzte1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

    ActiveWorkbook.Save
    ActiveWindow.Close


    End With
    End With
    End Sub



    Das Makro funktioniert auch soweit. Ich habe nun beim Testen bemerkt, dass sobald ein Wertebereich z.B. B30:37 keine zu kopierenden Zeilen enthält mir das Makro auf die Bretter geht (keine Zeilen vorhanden). Kann ich hier noch ein Funktion einbauen, dass sobald ein Bereich leer ist, dass Makro erst einmal nichts tut / leere Zeilen einfügt und die nächsten Schritten abhandelt.

    Also wenn im oberen Bereich (B15:L22) nichts steht der Bereich (B30:L37) nichtsdestotrotz überprüft wird und umgekehrt?

    Erneut danke für deine Hilfe!

    Grüße

    Joscha
     
    joscha_h, 18. März 2012
    #10
Thema:

Makro, das aus definiertem Bereich nur den "gefüllten" Bereich kopiert

Die Seite wird geladen...
  1. Makro, das aus definiertem Bereich nur den "gefüllten" Bereich kopiert - Similar Threads - Makro definiertem Bereich

  2. Name der Datei durch Excel geändert

    in Microsoft Excel Hilfe
    Name der Datei durch Excel geändert: Hallo und guten Abend, Die Datei wird mittels Button (VBA) zwischen gesichert. Das Makro sichert zuvor die Datei und erstellt zus. eine Sicherungsdatei mit der Erweiterung Beispiel-"Sich"....
  3. Ein Makro für mehrere Register

    in Microsoft Excel Hilfe
    Ein Makro für mehrere Register: Moin, ich habe ein Makro wo Daten aus dem Register Master kopiert werden und Register, das mit einem Datum beschriftet ist. Ich möchte in Jedem Register ein Button haben was Daten aus dem Master...
  4. Makro öffnet unerwartete Datei

    in Microsoft Excel Hilfe
    Makro öffnet unerwartete Datei: Hallo Forum, ich brächte euer Schwarmwissen. Arbeite mit Excel eine Auftragsbearbeitung. Dort habe ich mir einen Button mit Makro erstellt und nutze diesen schon lange. Das Makro generiert ein...
  5. Leerzeilen entfernen

    in Microsoft Word Hilfe
    Leerzeilen entfernen: Hallo in die Runde, ich habe das Problem bzw. den Wunsch in einem DOC die Leerzeilen zu entfernen und das per Makro. Allerdings gelingt es nicht Hintergrund das DOC wird aus einer Dot-Datei...
  6. Makro Schaltflaechen vervielfaeltigen sich....

    in Microsoft Excel Hilfe
    Makro Schaltflaechen vervielfaeltigen sich....: Hallo Zusammen, ich habe eine Exceldatei, die seit ein paar Wochen sehr langsam zu öffnen und zu bearbeiten ist. Zuvor war sie ca. 8MB gross, was sich verdoppelt hat. Ich habe alle Zellen die...
  7. Seit Win 11 Zugriffsprobleme bei Excel über Makros

    in Microsoft Excel Hilfe
    Seit Win 11 Zugriffsprobleme bei Excel über Makros: Guten Tag! Ich habe vor einer Woche mein Windows 10 auf Windows 11 geupgraded, und seitdem habe ich extreme Schwierigkeiten mit meinem Excel. Mit Windows 10 funktionierte alles so, wie es sollte,...
  8. Makro auf einen definierten Bereich begrenzen.

    in Microsoft Excel Hilfe
    Makro auf einen definierten Bereich begrenzen.: Hallo Zusammen, Die Frage hört sich für mich zwar trivial an, aber gelöst habe ich das Problem trotzdem nicht... :-( Ich habe ein Blatt in dem sich zig unterschiedliche Tabellen befinden. Nun...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden