@Jack BeNimble はコードに感謝し、10 分でセル内のすべての数字を強調表示することに成功しました。最初に行とセル内のすべての検索用語を検索し、複数の列を許可して、少し再編成しました。エラーが 1 つ見つかりました。ハイライト テキストは繰り返し 55、444 が好きではなく、シーケンス内の奇数の繰り返しのみを強調表示していました。ハイライト機能を1行修正
newOffset = offSet + foundPos + Len(searchString) - 1 //added the - 1.
これが私の変更されたコードです。
サブナンバーカラー()
Dim searchTerms As Variant
searchTerms = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".")
Dim searchString As String
Dim targetString As String
Dim offSet As Integer
Dim colsToSearch As Variant
Dim arrayPos, colIndex, colNum As Integer
Dim rowNum As Integer
colsToSearch = Array(4, 44, 45)
For colIndex = LBound(colsToSearch) To UBound(colsToSearch)
colNum = colsToSearch(colIndex)
For rowNum = 5 To 3000
For arrayPos = LBound(searchTerms) To UBound(searchTerms)
searchString = Trim(searchTerms(arrayPos))
offSet = 1
Dim x As Integer
targetString = Cells(rowNum, colNum).Value
x = HilightString(offSet, searchString, rowNum, colNum)
Next arrayPos
Next rowNum
Next colIndex
サブ終了
関数 HilightString (整数としての offSet、文字列としての searchString、整数としての rowNum、整数としての ingredCol) としての整数
Dim x As Integer
Dim newOffset As Integer
Dim targetString As String
' offet starts at 1
targetString = Mid(Cells(rowNum, ingredCol), offSet)
foundPos = InStr(LCase(targetString), searchString)
If foundPos > 0 Then
' the found position will cause a highlight where it was found in the cell starting at the offset - 1
Cells(rowNum, ingredCol).Characters(offSet + foundPos - 1, Len(searchString)).Font.Color = vbBlue
' increment the offset to found position + 1 + the length of the search string
newOffset = offSet + foundPos + Len(searchString) - 1
x = HilightString(newOffset, searchString, rowNum, ingredCol)
Else
' if it's not found, come back out of the recursive call stack
Exit Function
End If
終了機能
Jack BeNimble と datatoo に感謝します