/ / VBA Afficher plusieurs occurrences de caractères incorrects dans une feuille de calcul - excel, vba, excel-vba

VBA Afficher plusieurs occurrences de caractères incorrects dans une feuille de calcul - excel, vba, excel-vba

On m'a donné un morceau de code utilisé pour identifierguillemets, etc., dans une feuille de calcul Excel. Le code actuel montre une instance d’une citation double dans une boîte de message et j’essaie de la faire afficher toutes les instances. Voici un extrait de ce qui m’a été donné. J’ai ajouté .address à la variable pour donner une adresse exacte, mais il n'y en a qu'un. J'ai essayé de répéter la variable en espérant afficher plusieurs occurrences de la citation, mais pas de chance jusqu'à présent.

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

Réponses:

2 pour la réponse № 1

Vous devez trouver le prochain droit afin Range.FindNext est ce que vous recherchez. ci-dessous est comment vous pouvez en boucle et attraper toutes les adresses

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