/ / VBA Zeigt mehrere Instanzen fehlerhafter Zeichen in einem Arbeitsblatt an - Excel, VBA, Excel-VBA

VBA Zeigen Sie mehrere Instanzen fehlerhafter Zeichen in einem Arbeitsblatt an - Excel, VBA, Excel-Vba

Mir wurde ein Stück Code zur Identifizierung gegebendoppelte Anführungszeichen usw. in einem Excel-Arbeitsblatt. Der vorliegende Code zeigt eine Instanz eines doppelten Anführungszeichens in einem Meldungsfeld, und ich versuche, es so zu gestalten, dass alle Instanzen angezeigt werden. Unten ist ein Auszug aus dem, was ich erhalten habe. Ich habe versucht, die Variable zu wiederholen, in der Hoffnung, dass mehrere Instanzen des Zitats angezeigt werden, aber bisher kein Glück.

Option Explicit
Sub BadCHARFinder()


"Finds any occurance of: Quotes (single or double, Underscore, Hyphen, Carot in the excel sheet
"Note: skips the header row when searching

"Find Double Quote (")

Dim foundDoubleQuote As Variant

Set foundDoubleQuote = ActiveSheet.Cells.Find("""", ActiveSheet.Cells(2, 1), xlValues, xlPart)

If (Not foundDoubleQuote Is Nothing) Then

"found
MsgBox "Found double quote at: " & foundDoubleQuote.Address, vbOKOnly, "foundDoubleQuote"
Else

"not found

End If
End Sub

Antworten:

2 für die Antwort № 1

Sie müssen das nächste finden, damit Range.FindNext das ist, wonach Sie suchen. Im Folgenden erfahren Sie, wie Sie alle Adressen durchlaufen und abrufen können

Option Explicit
Sub BadCHARFinder()


"Finds any occurance of: Quotes (single or double, Underscore, Hyphen, Carot in the excel sheet
"Note: skips the header row when searching

"Find Double Quote (")

Dim foundDoubleQuote As Variant
Dim allCellAddresses As String
Dim firstCellAddress As String
Set foundDoubleQuote = ActiveSheet.Cells.Find("""", ActiveSheet.Cells(1, 1), xlValues, xlPart, xlByRows)

If (Not foundDoubleQuote Is Nothing) Then
"capture the first cell address or we end up in an endless loop
firstCellAddress = foundDoubleQuote.Address
Do
"add the address of the cell to our string of cells
allCellAddresses = allCellAddresses + vbCrLf + foundDoubleQuote.Address
"find the next cell with the data
Set foundDoubleQuote = ActiveSheet.Cells.FindNext(foundDoubleQuote)
"keep going until we find the first address we started with
Loop While foundDoubleQuote.Address <> firstCellAddress
"inform user
MsgBox "Found double quote at: " & allCellAddresses, vbOKOnly, "foundDoubleQuote"
Else

"not found

End If
End Sub