Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

wenn zelle nicht leer dann ...

Betrifft: wenn zelle nicht leer dann ... von: Laeubchen
Geschrieben am: 09.11.2014 21:09:35

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

  

Betrifft: AW: wenn zelle nicht leer dann ... von: ChrisL
Geschrieben am: 10.11.2014 13:10:44

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


  

Betrifft: AW: wenn zelle nicht leer dann ... von: Laeubchen
Geschrieben am: 10.11.2014 20:11:08

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


  

Betrifft: AW: wenn zelle nicht leer dann ... von: ChrisL
Geschrieben am: 11.11.2014 07:02:09

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


  

Betrifft: AW: wenn zelle nicht leer dann ... von: Laeubchen
Geschrieben am: 12.11.2014 19:04:26

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