VBA zur Prüfung auf Vollständigkeit

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VBA zur Prüfung auf Vollständigkeit
von: Roffel89
Geschrieben am: 15.09.2015 11:40:13

Hallo,
ich benötige ein kleines Makro. Das ein Tabellenblatt prüft, ob alle Zeilen welche ausgefüllt sind, vollständig ausgefüllt sind. Also nicht nur Spalte A, sondern auch die Spalten B bis G. Und gegebenenfalls mir vielleicht noch sagt, ob alles ausgefüllt ist, und wenn nicht, wo etwas fällt. Das ware natürlich toll.
Angehängt meine Tabellenblatt zur Hilfe.
Userbild
Wäre mega, wenn mir jemand weiterhelfen könnte.
VG
Roffel

Bild

Betrifft: AW: VBA zur Prüfung auf Vollständigkeit
von: Armin
Geschrieben am: 15.09.2015 12:46:50
Hallo Roffel,
diesen Code ausführen:

Sub Pruefe_Daten()
Dim mCount As Long
Dim mCol As Integer
With Tabelle1  ' Anpassen je nach Tabelle!!
     For mCount = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
         For mCol = 1 To 7
            If .Cells(mCount, mCol).Value = "" Then
               .Cells(mCount, mCol).Interior.ColorIndex = 6
            Else
               .Cells(mCount, mCol).Interior.ColorIndex = xlColorIndexNone
            End If
         Next
     Next
End With
End Sub
Gruß Armin

Bild

Betrifft: AW: VBA zur Prüfung auf Vollständigkeit
von: Roffel89
Geschrieben am: 15.09.2015 13:08:23
Hallo Armin,
vielen Dank für deine Hilfe.
ich habe jetzt deinen Code benutzt und versucht meinem Button zuzuweisen. Allerdings become ich eine Fehlermledung: 30112015 ist das Tabellenblatt mit der Tabelle von meinem Screenshot was durchsucht werden soll.
er unterstreicht mir das WITH mit der Meldung:Fehler beim Kompilieren: "With Objekt muss ein benutzerdefinierten Typ oder den Typ Object oder Variant haben."
Ich habe eigentlich nur einen Button erstellt, dann rechtsklick Marko zu weisen, dann auf neu und es Pruefe_daten genannt.
Woran scheitere ich gerade? Bin leider erst seit paar Tagen daben :)
Sub Pruefe_Daten()
Dim mCount As Long
Dim mCol As Integer
With 30112015 ' Anpassen je nach Tabelle!!
For mCount = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
For mCol = 1 To 7
If .Cells(mCount, mCol).Value = "" Then
.Cells(mCount, mCol).Interior.ColorIndex = 6
Else
.Cells(mCount, mCol).Interior.ColorIndex = xlColorIndexNone
End If
Next
Next
End With

Viele Grüße
Roffel

Bild

Betrifft: AW: VBA zur Prüfung auf Vollständigkeit
von: Rudi Maintaire
Geschrieben am: 15.09.2015 12:49:02
Hallo,
und wenn nicht, wo etwas fällt.
warum sollte etwas fallen?

Sub aa()
dim r as range
for each r in cells(1,1).currentregion.columns(1)
if application.counta(r.resize(,7))<>7 then
msgbox "zeile "&r.row &" unvollständig"
application.goto r, true
exit for
next
end sub

Gruß
Rudi

Bild

Betrifft: AW: VBA zur Prüfung auf Vollständigkeit
von: Roffel89
Geschrieben am: 15.09.2015 13:13:37
Hallo Rudi,
danke für deine Antwort. Ich teste gleich mal direkt.
Das mit dem " fallen " war nur ein Tastatur Fehler, es sollte fehlen heißen :)
Wie ist das den bei deinem Code mit der Zahl 7 gemeint? Wieso gerade 7?

Sub aa()
dim r as range
for each r in cells(1,1).currentregion.columns(1)
if application.counta(r.resize(,7))<>7 then
msgbox "zeile "&r.row &" unvollständig"
application.goto r, true
exit for
next
End Sub

VG

Bild

Betrifft: AW: VBA zur Prüfung auf Vollständigkeit
von: Roffel89
Geschrieben am: 15.09.2015 13:18:08
bzw. Rudi,
in deinem Code muss ich noch sagen, in welchem Tabellenblatt es durchgeführt werden soll oder?
VG

Bild

Betrifft: AW: VBA zur Prüfung auf Vollständigkeit
von: Rudi Maintaire
Geschrieben am: 15.09.2015 13:26:36
wenn du nichts sagst, auf dem aktiven.

Bild

Betrifft: AW: VBA zur Prüfung auf Vollständigkeit
von: Roffel89
Geschrieben am: 15.09.2015 13:28:59
k. Ich würde gerne sagen, dass es im Tabellenblatt 30112015 passiert.
Wie schreibe ich das dann?
Ganz am Ende hätte ich dann gerne, das es quasi, immer das drittletzte Tabellenblatt checkt, wie ich in meinem anderen Post geschrieben habe, aber lieber erstmal der Reihe nach:)
VG

Bild

Betrifft: Wieso gerade 7?
von: Rudi Maintaire
Geschrieben am: 15.09.2015 13:20:42
na, wegen dem tapferen Schneiderlein natürlich.
Oder weil 7 eine magische Zahl ist.
Oder weil A:G 7 Spalten sind. Wenn also Anzahl2 (CountA) <>7 fehlt was.
Gruß
Rudi

Bild

Betrifft: AW: Wieso gerade 7?
von: Roffel89
Geschrieben am: 15.09.2015 13:27:11
okay, ich merke es mir mit der "Magie" ;)
Muss ich vor deiner for Schleife sowas noch schreiben wie:
With 30112015 ' So heißt das Tabellenblatt
Oder wie mache ich das?
VG

Bild

Betrifft: AW: Wieso gerade 7?
von: Rudi Maintaire
Geschrieben am: 15.09.2015 13:39:55


Sub aa()
  dim r as range
  with Sheets("30112015")
    for each r in .cells(1,1).currentregion.columns(1)
      if application.counta(r.resize(,7))<>7 then
        msgbox "zeile "&r.row &" unvollständig"
        application.goto r, true
        exit for
      end if
    next r
  end with
end sub


Bild

Betrifft: AW: Wieso gerade 7?
von: Roffel89
Geschrieben am: 15.09.2015 13:53:10
k Super Rudi!
Das immerhin klappt nun fast. Ich will in dem Tabellenblatt 30112015 die Spalten A bis H untersuchen, ob in den Spalten die Zellen jeweils ausgefüllt sind, soweit die Tabelle Einträge hat.
er bringt mir jetzt das die Zeile 1 direkt unvollständig ist, obwohl diese ausgefüllt ist.
Woran kann das liegen?

Sub Schaltfläche6_Klicken()
  Dim r As Range
  With Sheets("30112015")
    For Each r In .Cells(1, 1).CurrentRegion.Columns(1)
      If Application.CountA(r.Resize(, 8)) <> 8 Then
        MsgBox "zeile " & r.Row & " unvollständig"
        Application.Goto r, True
        Exit For
      End If
    Next r
  End With
End Sub

VG

Bild

Betrifft: AW: Wieso gerade 7?
von: Rudi Maintaire
Geschrieben am: 15.09.2015 14:24:37
dann so:
For Each r In .Cells(1, 1).CurrentRegion.Columns(1).Cells
Gruß
Rudi

Bild

Betrifft: AW: Wieso gerade 7?
von: Roffel89
Geschrieben am: 15.09.2015 14:35:06
k cool. Das hat jetzt geklappt Rudi.
Ein kleines Problem weniger. Besten Dank!

Bild

Betrifft: AW: Wieso gerade 7?
von: Roffel89
Geschrieben am: 15.09.2015 17:01:56
Hey Rudi,
noch eine Frage zu diesem Thema:
Ich will das er mir, falls es vollständig ist eine Meldung zurück gibt. Allerdings gibt er mir jetzt immer diese Meldung zurück, auch wenn es unvollständig ist.
weißt du Rat?

Sub Schaltfläche6_Klicken()
  Dim r As Range
  With Sheets("30112015")
    For Each r In .Cells(1, 1).CurrentRegion.Columns(1).Cells
      If Application.CountA(r.Resize(, 8)) <> 8 Then
        MsgBox "zeile " & r.Row & " unvollständig"
        Application.Goto r, True
        Else
        MsgBox "Datensatz vollständig"
        Exit For
      End If
    Next r
  End With
Worksheets("Summary").Select
End Sub

VG

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA zur Prüfung auf Vollständigkeit"