Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1900to1904
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellenprüfung auf korrekten Wert

Zellenprüfung auf korrekten Wert
18.10.2022 08:58:05
Kai
Hallo,
ich habe eine Idee und möchte die Frage stellen ob dies mit VBA umsetzbar ist. Ich lasse schon über ein VBA Code was laufen und möchte gerne im Vorfeld eine Prüfung durchführen. Es soll in einer Spalte nach Zelleninhalten gesucht werden. Sollten diese Zelleninhalte nicht dem gewünschten Format entsprechen, soll über eine Messagebox mitgeteilt werden an welcher Stelle der Fehler vorhanden ist, optimaler Weise mit einem Bezug zu einer Zelle in der eine laufende Nummer steht. Als Zelleninhalte soll das Format "n/a" , "0x" ( ist enthalten weil Hexzahl) und eine "Dezimalzahl" als Ok gelten. Bei allen anderen Formaten soll dann der Fehler in der Messagebox angezeigt werden und es geht nur weiter wenn man "OK" drückt.
Sollen jetzt Fehler vorhanden sein, sollte man das Makro abbrechen können, um sich erst die Fehler anzuschauen.
Wie könnte man sowas angehen ?
Eine Beispieldatei habe ich angefügt.
https://www.herber.de/bbs/user/155724.xlsm
Vielen Dank im Voraus
Gruß Kai

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenprüfung auf korrekten Wert
18.10.2022 09:15:43
Fennek
Hallo,
teste mal mit:

Sub T_1()
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, 2) = "n/a" Then
ElseIf IsNumeric(Cells(i, 2)) Then
ElseIf Left(Cells(i, 2), 2) = "0x" Then
Else: Cells(i, 2).Interior.Color = vbYellow
End If
Next i
End Sub
mfg
PS: Seit wann arbeiten denn Autobauer mit Hex?
AW: Zellenprüfung auf korrekten Wert
18.10.2022 11:10:56
Rudi
Hallo,

  Dim rngC As Range
For Each rngC In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Offset(, 1)
Select Case True
Case rngC = "n/a", Left(rngC, 2) = "0x", IsNumeric(rngC)
'OK
Case Else
Application.Goto rngC.Offset(, -1), True
If MsgBox("Fehler in Zeile " & rngC.Row & vbLf & "Weitersuchen?", vbYesNo, "FEHLER") = vbNo Then
Exit For
End If
End Select
Next rngC
End Sub
Gruß
Rudi
Anzeige
AW: Zellenprüfung auf korrekten Wert
19.10.2022 08:14:07
Kai
Guten Morgen Rudi,
erstmal Danke für die Hilfe. Besteht auch die Möglichkeit, dass man bei einem Fehler auch den Bezug zur Zelle in Spalte A bekommt ? Also wenn ein Fehler in z. B. Zeile4 gefunden wird, dass dort auch dann der Inhalt von der Nachbarzelle mit in die Messagebox geschrieben wird.
Fehler in Zeile 4 bei Dia_Anp_14
Eine weitere Frage wäre, ob es möglich ist das die Fehler alle auf einmal in der Messagebox auftauchen?
Gruß Kai
AW: Zellenprüfung auf korrekten Wert
19.10.2022 09:10:37
GerdL
Moin Kai,
meinst du so?

Sub Unit()
Dim rngC As Range, blnAlle As Boolean
blnAlle = (MsgBox("Gesamtcheck?", vbYesNo, "Fehlersuche") = vbYes)
For Each rngC In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Offset(, 1)
Select Case True
Case rngC = "n/a", Left(rngC, 2) = "0x", IsNumeric(rngC)
'OK
Case Else
If Not blnAlle Then
Application.Goto rngC.Offset(, -1), True
If MsgBox("Fehler in Zeile " & rngC.Row & ":" & rngC.Offset(, -1) & vbLf & "Weitersuchen?", vbYesNo, "FEHLER") = vbNo Then
Exit For
End If
Else
strMessage = strMessage & vbLf & "Zeile " & rngC.Row & ": " & rngC.Offset(, -1) & " : " & rngC
End If
End Select
Next rngC
If Len(strMessage) > 0 Then
MsgBox strMessage, , "Fehler"
Else
MsgBox "keine", , "Fehler"
End If
End Sub
Gruß Gerd
Anzeige
AW: Zellenprüfung auf korrekten Wert
19.10.2022 10:34:36
Kai
Hallo Gerd,
wenn man bei der ersten Messagebox auf Nein geht, macht er trotzdem eine Prüfung. Dann werden alle Zellen einzeln auf Fehler überprüft. Besser wäre es das er bei nein dann auch abbricht. Was muss ich dafür noch dazufügen ?
Gruß Kai
AW: Zellenprüfung auf korrekten Wert
19.10.2022 10:45:03
GerdL
Hallo Kai,
willst du überhaupt keine Einzelprüfungen mehr?
Gruß Gerd
AW: Zellenprüfung auf korrekten Wert
19.10.2022 10:51:41
Kai
Hallo Gerd,
vielleicht kann man auch beides haben. Das in der Messagebox gefragt wird nach Gesamtprüfung, Einzelprüfung und bei Nein dann komplett abbricht. Also drei Buttons
Gruß Kai
AW: Zellenprüfung auf korrekten Wert
19.10.2022 11:09:01
GerdL
Hallo Kai,
mit diesen Boxen ist m.E. etwas anderes als sorum dann irreführend.

Sub Unit2()
Dim rngC As Range, blnAlle As Boolean
blnAlle = (MsgBox("Gesamtcheck?", vbYesNo, "Fehlersuche") = vbYes)
If Not blnAlle Then If Not MsgBox("Einzelprüfungen?", vbOKCancel, "Fehlersuche") = vbYes Then Exit Sub
For Each rngC In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Offset(, 1)
Select Case True
Case rngC = "n/a", Left(rngC, 2) = "0x", IsNumeric(rngC)
'OK
Case Else
If Not blnAlle Then
Application.Goto rngC.Offset(, -1), True
If MsgBox("Fehler in Zeile " & rngC.Row & ":" & rngC.Offset(, -1) & vbLf & "Weitersuchen?", vbYesNo, "FEHLER") = vbNo Then
Exit For
End If
Else
strMessage = strMessage & vbLf & "Zeile " & rngC.Row & ": " & rngC.Offset(, -1) & " : " & rngC
End If
End Select
Next rngC
If Len(strMessage) > 0 Then
MsgBox strMessage, , "Fehler"
Else
MsgBox "keine", , "Fehler"
End If
End Sub
Gruß Gerd
Anzeige
AW: Zellenprüfung auf korrekten Wert
19.10.2022 11:37:36
Kai
Hallo Gerd,
wenn man bei Gesamtprüfung auf Nein drückt, kommt die Abfrage Einzelprüfung. Wenn man dort auf JA drückt beendet er. Da sollte doch dann die Einzelprüfung stattfinden. Meinst du es macht Sinn, um es in einer großen Tabelle übersichtlich, die Fehler dann farblich zu hinterlegen ?
Gruß Kai
AW: Zellenprüfung auf korrekten Wert
19.10.2022 11:51:40
GerdL
Naja,
du hast dafür u. für Filtern zwei andere Vorschlägen.
Gruß Gerd
AW: Zellenprüfung auf korrekten Wert
19.10.2022 12:40:11
Kai
Ich kann deine Antwort jetzt nicht zuordnen.
Gruß Kai
siehe Fenneks und meine letzte AW. owT
19.10.2022 13:36:28
Rudi
AW: Zellenprüfung auf korrekten Wert
19.10.2022 11:32:47
Rudi
Hallo,
die Fehler zu sammeln ist kein Problem. Aber was willst du damit? Die MsgBox abschreiben oder einen Screenshot machen?
Sinniger ist, in C ein Kennzeichen (x) zu setzen und die Tabelle danach zu filtern. Dann kannst du die Fehler abarbeiten.
z.B.

Sub TestIt()
Cells(1, 3) = "Fehler"
Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Offset(, 2).FormulaR1C1 = _
"=IF(OR(RC[-1]=""n/a"",LEFT(RC[-1],2)=""0x"",ISNUMBER(RC[-1])),"""",""x"")"
If Application.CountIf(Columns(3), "x") Then 'wenn Fehler Filtern
ActiveSheet.Cells(1, 1).CurrentRegion.AutoFilter Field:=3, Criteria1:="x"
End If
End Sub
Alternativ alle Fehler mit Zeile und ID in einer separaten Tabelle ausgeben.
Gruß
Rudi
Anzeige

131 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige