Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

MsgBox Schleife
#21
Hallo Joshua,

ich habe mir deine Datei aus Beitrag #15 heruntergeladen. Das Makro von Atilla funktioniert bei mir.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#22
Hallöchen,

also, bei mir läuft der Code zwar durch, funktioniert aber nicht. COUNTA im Array liefert mir hier immer die Anzahl der Felder, aber nicht die der nicht leeren ... Lastrow ist 7 und ...COUNTA auch immer.

Mit COUNT funktioniert es zumindest in Spalte A, weil die Zahlen gezählt werden.

Hier mal meine angepasste "Prinziplösung". Es werden zwar alle Spalten A:H geprüft, obwohl B und C nicht geprüft werden sollten, aber falls es nicht passt kann man noch ein If drumrum bauen Smile

Code:
Sub test()
Dim strMsg As String, iCnt%, r As Range
'Schleife ueber Spalten A bis H
For iCnt = 1 To 8
 'Bereich von Zeile 2 bis zur letzten gefuellten Zeile aus B setzen
 Set r = Range(Cells(2, iCnt), Cells(Cells(Rows.Count, 2).End(xlUp).Row, iCnt))
 'Wenn Leerzellen enthalten, dann
 If Application.CountBlank(r) Then
   'Meldungstext aufbauen
   strMsg = strMsg & vbLf & r.SpecialCells(xlCellTypeBlanks).Address
   'Ende Wenn Leerzellen enthalten, dann
 End If
 'Ende Schleife ueber Spalten A bis H
Next
'Meldung ausgeben
MsgBox strMsg
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#23
Hallo,

das sind die Daten mit denen ich getestet habe:

Arbeitsblatt mit dem Namen 'tblOne'
 ABCDEFGHI
1Die Nummerierung ist nicht vollständig  Die Betitelung ist nicht vollständigDie Bewertung ist nicht vollständigDie Bezeichnung ist nicht vollständigDas Department fehltDie Wirkung ist nicht vollständigDie Abteilung fehlt
2a2b2c2d2e2f2g2h2i2
3a3b3c3d3e3f3g3h3i3
4a4b4c4d4e4f4g4h4i4
5a5b5c5d5e5f5g5h5i5
6a6b6c6  f6g6h6i6
7a7b7c7 e7f7wh7i7
8a8b8c8d8e8f8g8h8i8
9a9b9c9d9e9f9g9h9i9
10a10b10c10d10e10f10g10h10i10
11a11b11c11d11e11f11g11h11 
12a12b12c12d12e12f12g12h12i12
13a13b13c13d13e13f13g13h13i13
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Das sind die Ergebnisse von CountA() für jede Spalte aus dem Direktfenster kopiert: 13    11    12    13    13    13    12 Spalten B und C sind ausgelassen.
Außerdem hat Stefan es auch bestätigt, dass es bei ihm funktioniert. In den Eingestellten Screenshots ist auch zu sehn, dass es bei mir funktioniert.

Falls es wirklich in bestimmten Versionen nicht funktioniert ist das ein Excel Bug.

@joshua
unten eine leicht veränderte Version ohne Array, bitte mal testen:


Code:
Sub Vollständigkeits_Prüfung()
  Dim LastRow As Long, j As Long, n As Long
  Dim frage
  Dim boVar As Boolean
  Dim varText
  Dim strgText As String
 
  strgText = "Leere Zellen in:"
  varText = Array("Die Nummerierung ist nicht vollständig", "Die Betitelung ist nicht vollständig", "Die Bewertung ist nicht vollständig", "Die Bezeichnung ist nicht vollständig", "Das Department fehlt", "Die Wirkung ist nicht vollständig", "Die Abteilung fehlt")
  With Sheets("tblOne")
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
    For j = 1 To 9
      If Application.CountA(Application.Index(Range("A1:I" & LastRow), , j)) <> LastRow Then
        boVar = True
        strgText = strgText & vbLf & Space(5) & varText(n)
      End If
      If j = 1 Then j = 3
      n = n + 1
    Next j
  End With

  If boVar Then
    frage = MsgBox(strgText & vbLf & vbLf & "Möchten Sie dennoch weitermachen?", vbYesNoCancel, "Ich habe da mal eine Frage...")
    
    If frage = vbYes Then
      'hier geht es weiter bei "Ja"
    ElseIf frage = vbNo Then
      'hier geht es weiter bei "Nein"
      ThisWorkbook.Close True 'mit speichern der Änderungen
    Else
      'hier geht es weiter bei "Abbrechen"
    End If
  End If
 
End Sub
Gruß Atilla
Antworten Top
#24
Hallo schauan, vielen Dank für deine Unterstützung (:

Hallo atilla, der neue Code funktioniert super (: Vielen Dank dafür!
Fragt sich nur, wo der Bug genau liegt, da es sich wohl wirklich um die Unterschiede der Versionen handelt.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste