2017-06-28 5 views
0

Ich habe einen Code, der in einem Bereich überprüft, wenn einige Zellen leer sind (leer oder nicht). Es gibt mir eine Botschaft, die das sagt. Aber es scheint nicht gut zu funktionieren: Die Ausgabenachricht sagt immer, dass es einige leere Zellen in dem Bereich gibt (Spalte A bis H, bis zur letzten aufgefüllten Zeile), wohingegen es das Gegenteil ist (immer Daten). Ich präzis, dass das Layout der Palette eine Tabelle ist! MsgBox (LastRow) ist jedes Mal gleich die letzte Zeile .. auch Hier ist ein Teil des Codes:VBA - Check leere Zellen - Falsche Ausgabe

Set sht = ThisWorkbook.Worksheets("SS upload")   
Set StartCell = Range("A14")    
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row 
MsgBox (LastRow) 
Set Rrng = Range("A14 : H" & LastRow) 
For Each cell In Rrng 
If IsEmpty(cell) = True Then 
bIsEmpty = True 
Exit For 
End If 
Next cell 
If bIsEmpty = True Then 
MsgBox "There are empty cells in the file" 
Else 
MsgBox "All cells have values!" 
End If 
End Sub 

Hat in dieser etwas falsch scheinen?

Vielen Dank für Ihre wertvolle Hilfe! :) Grüße

+0

"Sieht irgendetwas falsch darin?" ... Ja! .. Keine Einrückung! Alle möglichen Dinge könnten falsch sein, aber es ist schwer zu lesen ohne Einrückung. Weißt du ... manchmal zeigt dir die Einrückung, wo du sofort schief liegst. – CallumDA

+0

Das funktioniert ok für mich. Könnte es tun, den Rest des Codes zu sehen. Einrückungen würden auch helfen! – MiguelH

Antwort

2

Wahrscheinlich wissen Sie nicht, dass Sie in einem range(A14:H LAST Row) suchen Also, wenn Sie 5 Reihen haben, dann ist der Bereich noch Range (A14: H5). Und dort haben Sie leere Werte.

Public Sub TestME() 

    Dim bIsEmpty As Boolean 

    Set sht = ThisWorkbook.Worksheets(2) 
    Set StartCell = Range("A14") 

    LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).row 

    MsgBox (LastRow) 
    Set Rrng = Range("A1 : H" & LastRow) 

    For Each cell In Rrng 
     If IsEmpty(cell) = True Then 
      bIsEmpty = True 
      Exit For 
     End If 
    Next cell 

    If bIsEmpty Then 
     MsgBox "There are empty cells in the file" 
    Else 
     MsgBox "All cells have values!" 
    End If 

End Sub 
+1

Ich versuche das morgen aber scheint viel besser! Vielen Dank :) Schönen Tag noch – Jeofbist3

+0

Eigentlich sehe ich nicht genau den Unterschied zwischen Ihrem Code und mir, besonders über die Reichweite. Ich präzisiere, dass ich verifiziere, ob da einige Blakzellen aus Zelle A14 sind. Bis Spalte H und bis zuletzt besetzte Zeile. danke – Jeofbist3

+0

@ Jeofbist3 - nun, es ist dein Code, ich habe es einfach für mich arbeiten lassen. Der Grund, warum Sie denken, dass es nicht funktioniert, ist in den ersten 2 Sätzen meiner Antwort. – Vityata

0

Das ist in der Tat seltsam, weil es manchmal auch funktioniert. Ich meine die Ausgangsmeldung „Alle Zellen haben Wert“ angepasst wird, was in der Datei wirklich ist (keine Leerzeichen überhaupt), aber manchmal nicht ..

Hier ist mein vollständiger Code:

Sub empty_cells()     
    Dim sht As Worksheet   
    Dim Rrng As Range   
    Dim cell As Range     
    Dim LastRow As Long 
    Dim StartCell As Range 
    Dim bIsEmpty As Boolean 
    Set sht = ThisWorkbook.Worksheets("SS upload") 
    Set StartCell = Range("A14") 
    LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row 
    MsgBox (LastRow) 
    Set Rrng = Range("A14 : H" & LastRow) 
    For Each cell In Rrng 
    If IsEmpty(cell) = True Then 
    bIsEmpty = True 
    Exit For 
End If 
Next cell 
If bIsEmpty = True Then 
MsgBox "There are empty cells in the file" 
Else 
MsgBox "All cells have values!" 
    End If 
End Sub 

Dank für Ihre Unterstützung :)