Office: Range Zellen kopieren, wenn Zielzelle leer

Helfe beim Thema Range Zellen kopieren, wenn Zielzelle leer in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Ich würde gerne per VBA eine variable Range von einem Worksheet ins andere Kopieren. Geht dabei nur um die Wert der Zellen. Bedingung ist aber,... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von User, 18. September 2011.

  1. Range Zellen kopieren, wenn Zielzelle leer


    Hallo

    Ich würde gerne per VBA eine variable Range von einem Worksheet ins andere Kopieren. Geht dabei nur um die Wert der Zellen. Bedingung ist aber, dass der Wert nur kopiert wird, wenn die Zielzelle leer ist.
    Da es sich um 1200 Zeilen x 35 Spalten handelt, ist mir mit For Each glaube ich nur bedingt geholfen, weil es doch recht langsam sein wird? Sind mehrere "Ranges" mit je 100Zx35S

    Zudem kommen immer wieder Verbundene Zellen vor (auf die ich leider Gottes nicht verzichten kann, da sonst das ganze Sheet total durcheinander gerät.

    Bin über jede Hilfe dankbar, komm momentan auf keinen grünen Zweig, wie ich das am besten angeh. Momentan bekomm ich nur alle Werte kopiert. Somit überschreibts mir in der Zieldatei jede Zelle, was nich sein darf.

    Grüße, Andy

    :)
     
  2. Hallo Andy,

    mit einem normalen Range.Paste oder PasteSpecial geht das nicht. Du wirs also um ein For...Each nicht herumkommen.

    Gruß
    Minifuzzy
     
    Minifuzzy, 19. September 2011
    #2
  3. Hallo Minifuzzy

    Danke für die schnelle Antwort. Heißt also ich muss wirklich jede Zelle in der For .. Each ansprechen, abfragen ob diese leer ist und dann den Wert kopieren bzw einfach weitergehn? Ui ui, das wird dann nen langeres Prozedere :/

    Gruß, Andy
     
  4. Range Zellen kopieren, wenn Zielzelle leer

    Sub HoleDaten()
    Dim StDateiname As String
    Dim x As Long
    Dim y As Long
    Dim Zelle As Range
    Dim Zeile As Range
    Dim Spalte As Long


    For y = 0 To 95
    For x = 0 To 31
    Set Zeile = ThisWorkbook.Sheets("Tabelle1").Range("E5")
    If Zeile.Offset(y, x) = "" Then
    Zeile.Offset(y, x) = Workbooks(StDateiname).Sheets("Tabelle2").Range("E5").Offset(y, x)
    End If
    Next x
    Next y


    MsgBox "Daten wurden erfolgreich übertragen"

    End Sub



    So, das is momentan der Code für den "ersten Block", davon kommen nochmal paar Blöcke und das braucht jetzt schon ne gefühte Ewigkeit. Bin über jeden Vorschlag, wie man das schneller gestalten kann sehr Dankbar. Ich selber weiß leider nicht wie, da ich noch recht neu auf dem Gebiet programmieren (kann man das als programmieren bezeichnen?!) bin..

    Grüße, Andy
     
  5. Hallo Andy,

    wenn du mit Arrays arbeitest, geht es wesentlich schneller:

    Gruß Ingolf
     
  6. Hallo Ingolf
    Das ist besser, Danke!
    Hast Du vielleicht auch noch nen Tipp, wie ich das elegant für die anderen Blöcke löse oder heißts für jeden Block das komplette Macro zu übernehmen nur eben mit angepassten Bereichen (also dass ich Bereiche anpassen muss is klar, nur eben ob ich nochmal das komplette Macro kopieren muss oder obs ne elegantere Möglichkeit gibt, 2. Block beginnt bei E104 und endet bei AI 199. Den Rest kann ich dann selbst *Smilie )

    Grüße und nen schönen Feierabend, Andy
     
  7. Hallo Andy,

    man kann das Makro auch allgemeingültig schreiben, so dass es für einen beliebigen Bereich genutzt werden kann. Kopiere folgendes Makro in ein benutzerdefiniertes Modul (also ein Modul, dass du zuvor im VBA-Editor über das Menü Einfügen | Modul erzeugt hast):

    Dieses Makro kannst du nun für jeden zu kopierenden Bereich auf folgende Weise aufrufen:

    Gruß Ingolf
     
  8. Range Zellen kopieren, wenn Zielzelle leer

    Morgen Ingolf!

    Hab das mal übernommen in nen Modul, die Pfade angepasst und so. Bekomme nun
    "Fehler beim Kompilieren
    Erwartet: Datenfeld"

    Abgesehen von nem bisschen Code davor (überprüfen, ob das Worksheet bereits offen ist, gibts kein Unterschied zum Code unten)

    Gruß, Andy
     
  9. Wenn ich auf
    To Ubound(rBereich, x)
    verzichte, dann klappts, in diesem Fall kann ich damit gut leben, da die Ranges alle die selbe Anzahl von Zeilen und Spalten haben. Über Aufklärung des ganzen wär ich dennoch dankbar. Will ja nicht dumm steben *wink.gif*

    Grüße, Andy
     
  10. Hallo Andy,

    UBound muss sich natürlich auf vQuelle oder vZiel beziehen und nicht auf rBereich. Mein Fehler. Ob du vQuelle oder vZiel nimmst ist egal, denn beide sind ja gleich groß.

    Gruß Ingolf
     
  11. Nun versteh ich, Danke. Problem gelöst *Smilie
    Kann zu
    Andy
     
Thema:

Range Zellen kopieren, wenn Zielzelle leer

Die Seite wird geladen...
  1. Range Zellen kopieren, wenn Zielzelle leer - Similar Threads - Range Zellen kopieren

  2. 1. Zelle eines Range-Objektes per VBA finden

    in Microsoft Excel Hilfe
    1. Zelle eines Range-Objektes per VBA finden: Hallo, Forumsteilnehmer, ich habe eine Xl-2003-Datei, in jedem Blatt ist ein Bereich hinterlegt, der sich aber von Blatt zu Blatt in Größe, Startzeile und -Spalte verändert. Wie kann ich per VBA...
  3. Zellen verbinden innerhalb einer definierten Range

    in Microsoft Excel Hilfe
    Zellen verbinden innerhalb einer definierten Range: Guten Tag wertes Forum, ich doktere nun schin etwas länger an der richtigen Syntax zu folgendem Problem: Ich hab eine Range definiert (übergeben bekommen). Inneralb dieser Range möchte ich...
  4. Range vergleichen Zelle für Zelle (Änderungsverfolgung)

    in Microsoft Excel Hilfe
    Range vergleichen Zelle für Zelle (Änderungsverfolgung): Moin alle zusammen, das Thema "Vergleichen" wurde ja schon reichlich besprochen. Nur entweder waren die Tipps für mich nicht relevant oder ich war mit dem Code überfordert. Daher hier mal mein...
  5. Merge von Zellen im exakt definierten Bereich

    in Microsoft Excel Hilfe
    Merge von Zellen im exakt definierten Bereich: Hallo zusammen. Ich habe eine riesige Tabelle (hier bloss ein Ausschnitt), bei der ich zu Visualisierungszwecken, Zellen im ausgewaehlten Bereich (mit gleichem Inhalt je Reihe) verbinden...
  6. Nummer der Zeile in Zelle schreiben

    in Microsoft Excel Hilfe
    Nummer der Zeile in Zelle schreiben: Hallo, ich versuche seit Stunden die Zeilennummer in Spalte A zu schreiben. Ich möchte ohne eine Schleife sondern mit Range die Spalten füllen. Fülle ich die Spalte F mit folgender Formel,...
  7. Range in Variable schreiben und Variable zurück in Zellen kopieren

    in Microsoft Excel Hilfe
    Range in Variable schreiben und Variable zurück in Zellen kopieren: Hallo, Ich habe mir ein Makro geschrieben das bei nem Button-Click Zellenwerte von Zelle B nach A überschreibt. Nachdem das Makro ausgeführt wurde besteht keine Möglichkeit mehr Geschehenes...
  8. Excel 2010 - Klick auf Zelle öffnet UserForm

    in Microsoft Excel Hilfe
    Excel 2010 - Klick auf Zelle öffnet UserForm: Hallo Ihr Lieben, Habe folgenden Sub: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 9 And Target.Row >= 6 And Target.Row <= 183 Then UserForm1.Show End Sub...
  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