/ / VBA Wyświetla wiele wystąpień złych znaków w arkuszu roboczym - excel, vba, excel-vba

VBA Wyświetla wiele wystąpień złych znaków w arkuszu roboczym - excel, vba, excel-vba

Dostałem kawałek kodu używanego do identyfikacjipodwójne cytaty itp. w arkuszu Excela. Obecny kod pokazuje jedną instancję podwójnego cytatu w oknie komunikatu i próbuję go wyświetlić, aby wyświetlić wszystkie instancje. Poniżej znajduje się fragment tego, co mi podano. ale pokazuje tylko jeden, próbowałem powtórzyć zmienną z nadzieją na wyświetlenie wielu wystąpień cytatu, ale do tej pory nie miałem szczęścia.

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

Odpowiedzi:

2 dla odpowiedzi № 1

Musisz znaleźć następny dokładnie tak, jak Range.FindNext jest tym, czego szukasz. poniżej znajdziesz informacje o tym, jak możesz zapętlić i pobrać wszystkie adresy

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