Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wenn zelle nicht leer dann ...

Forumthread: wenn zelle nicht leer dann ...

wenn zelle nicht leer dann ...
09.11.2014 21:09:35
Laeubchen
Guten Abend,
ich habe eine Quell und eine Zieldatei.
In der Zieldatei läuft das Makro um die Daten aus der Quelle zu holen.
Nun ist es so, das die Quelldatei nicht immer mit allen Feldern ausgefüllt ist.
Nun wollte ich prüfen, wenn in der Quelldatei bestimmte Zellen nicht leer sind dann soll er die Ident-Nr sowie GL-Nr in die Zieldatei kopieren.
Jetzt habe ich erst mal versucht mit einer If Anweisung abzufragen, ob die Zelle nicht leer ist und habe mir mit einer MsgBox anzeigen lassen, ob ich auf dem richtigen Weg bin.
Nun weiß ich nicht so recht wie ich weitermache. Das heißt wenn in der ersten ausgewählte Zelle was steht, das er mir Ident sowie GL Nr kopiert und in die nächste leere Zeile der Zieltabelle schreibt und wenn die Zelle leer ist, dann soll er die nächste Zelle prüfen ob diese nicht leer ist etc.
Meine Anfänge habe ich mal beigefügt.
https://www.herber.de/bbs/user/93641.xls
https://www.herber.de/bbs/user/93642.xls
Über jede Hilfe würde ich mich sehr freuen.
Gruß
Laeubchen

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn zelle nicht leer dann ...
10.11.2014 13:10:44
ChrisL
Hi
Hier mal ein Anfang...
Sub DatenHolen()
ChDrive Left(CurDir, 1)
ChDir CurDir
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Dim lngLastRow As Long
Dim i As Integer, LetzteZeile As Long
'Ziel Tabelle List-Scheuerplatte-Vorlage
Set wsZiel = ThisWorkbook.Worksheets("Tabelle1")
'Öffne Datei - Scheuerplatten
Dim Daten As Variant
Daten = Application.GetOpenFilename("Excel-Arbeitsmappe (*.xls*), *.xls*", _
, "Daten auslesen")
Workbooks.Open Daten
'Setze Datei Materialprüfung = wbQuelle als aktiv
Set wsQuelle = ActiveWorkbook.Worksheets("Tabelle1")
For i = 21 To 46 Step 5
If Not IsEmpty(wsQuelle.Cells(i, 9)) Then
LetzteZeile = wsZiel.Range("A65536").End(xlUp).Row + 1
wsZiel.Cells(LetzteZeile, 1) = wsQuelle.Cells(i + 1, 3)
wsZiel.Cells(LetzteZeile, 2) = wsQuelle.Cells(i - 1, 2)
' usw.
End If
Next i
End Sub

cu
Chris

Anzeige
AW: wenn zelle nicht leer dann ...
10.11.2014 20:11:08
Laeubchen
Hallo Chris,
vielen, vielen Dank!
Sitze nun schon eine ganze Weile und habe alles durchgestestet um zu verstehen was dort abläuft.
Habe mal für mein Verständnis Kommentare eingefügt und es wäre nett korrigierst Du mich bzw läßt mich wissen ob ich mit meiner Denkweise richtig liege.
'Zähle in der Quelldatei von Zeile 21 bis 46 in 5er Schritte
For i = 21 To 46 Step 5
'Ist Zeile 21 Spalte 9(I) in der Quelldatei leer dann ...
If Not IsEmpty(wsQuelle.Cells(i, 9)) Then
'Spalte B Zieltabelle - Liste - Scheuerplatte - Vorlage bis zur letzten leeren
'Zeile (B65536) und suche in 1er Schritten nach oben die letzte leere Zeile
LetzteZeile = wsZiel.Range("B65536").End(xlUp).Row + 1
'Ziel Spalte C (GL Nr.) - Quelle i zählen Zeile 21+1 Spalte 3 = GL Nr
wsZiel.Cells(LetzteZeile, 3) = wsQuelle.Cells(i + 1, 3)
'Ziel Spalte B (Ident Nr) - Quelle i zählen Zeile 21-1 Spalte 2 = Ident Nr
wsZiel.Cells(LetzteZeile, 2) = wsQuelle.Cells(i - 1, 2)
' usw.
End If
Next i
Ich wünsche noch einen wunderschönen Abend und
Gruß Laeubchen

Anzeige
AW: wenn zelle nicht leer dann ...
11.11.2014 07:02:09
ChrisL
Hi
Schön dass Du dich damit auseinander gesetzt hast und du liegst auch richtig. Kleines Detail
'Ist Zeile 21 Spalte 9(I) in der Quelldatei NICHT leer dann ...
cu
Chris

AW: wenn zelle nicht leer dann ...
12.11.2014 19:04:26
Laeubchen
Hallo Chris,
lieben Dank für Dein Feedback und Deinen Hinweis. Da habe ich mich wohl ein wenig vertan.
Nun ja, ich möchte es verstehen und nicht nur abschreiben.
Ich wünsche Dir noch einen schönen Abend und
lieber Gruß
Laeubchen
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Zelle nicht leer prüfen und Daten kopieren in Excel VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul erstellen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub DatenHolen()
        Dim wsQuelle As Worksheet
        Dim wsZiel As Worksheet
        Dim LetzteZeile As Long
        Dim i As Integer
    
        ' Ziel Tabelle
        Set wsZiel = ThisWorkbook.Worksheets("Tabelle1")
    
        ' Quelldatei wählen
        Dim Daten As Variant
        Daten = Application.GetOpenFilename("Excel-Arbeitsmappe (*.xls*), *.xls*", , "Daten auslesen")
        Workbooks.Open Daten
    
        ' Quelle festlegen
        Set wsQuelle = ActiveWorkbook.Worksheets("Tabelle1")
    
        ' Schleife durch die Zeilen
        For i = 21 To 46 Step 5
            If Not IsEmpty(wsQuelle.Cells(i, 9)) Then
                LetzteZeile = wsZiel.Cells(wsZiel.Rows.Count, 1).End(xlUp).Row + 1
                wsZiel.Cells(LetzteZeile, 1) = wsQuelle.Cells(i + 1, 3) ' GL-Nr.
                wsZiel.Cells(LetzteZeile, 2) = wsQuelle.Cells(i - 1, 2) ' Ident-Nr.
            End If
        Next i
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: Run-time error '9': Subscript out of range

    • Lösung: Überprüfe, ob der Blattname in Set wsQuelle = ActiveWorkbook.Worksheets("Tabelle1") korrekt ist.
  • Fehler: Method 'Range' of object '_Worksheet' failed

    • Lösung: Stelle sicher, dass die Zelle, die du ansprichst, tatsächlich existiert und nicht leer ist.
  • Fehler: Daten werden nicht kopiert

    • Lösung: Überprüfe, ob die Zellen im Bereich wsQuelle.Cells(i, 9) tatsächlich nicht leer sind.

Alternative Methoden

  • Excel-Funktion: Du kannst die Funktion WENN verwenden, um zu prüfen, ob eine Zelle nicht leer ist:

    =WENN(A1<>"", "Nicht leer", "Leer")
  • Bedingte Formatierung: Verwende die bedingte Formatierung, um leere Zellen visuell hervorzuheben.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du mit Excel VBA überprüfen kannst, ob eine Zelle nicht leer ist und dann eine Nachricht anzeigen:

Sub ZellePruefen()
    If Not IsEmpty(Sheet1.Range("A1")) Then
        MsgBox "Die Zelle A1 ist nicht leer!"
    Else
        MsgBox "Die Zelle A1 ist leer."
    End If
End Sub

Tipps für Profis

  • Verwendung von Trim: Um sicherzustellen, dass auch Zellen mit Leerzeichen als leer betrachtet werden, kannst du Trim verwenden:

    If Trim(wsQuelle.Cells(i, 9).Value) <> "" Then
  • Fehlerbehandlung einfügen: Füge Fehlerbehandlungsroutinen ein, um unerwartete Fehler elegant abzufangen.


FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob mehrere Zellen nicht leer sind? Du kannst eine Schleife verwenden, um mehrere Zellen in einem Bereich zu prüfen.

2. Was passiert, wenn die Quelle leer ist? Wenn die Quelldatei leer ist, wird die If-Bedingung nicht erfüllt, und die Daten werden nicht kopiert.

3. Wie kann ich die letzte Zeile dynamisch finden? Verwende wsZiel.Cells(wsZiel.Rows.Count, 1).End(xlUp).Row + 1, um die nächste leere Zeile in der Zieltabelle zu finden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige