Sag*_*agi 2 excel vba excel-vba
我有:
nuid="!,@,a-z"
Run Code Online (Sandbox Code Playgroud)
但我不想要双引号.我想要nuid =!,@,az
建议我删除开始和结束报价的方法
这是我的代码:
sub highlight(nuid as string)
dim sh3 as worksheet
Set sh3 = Thisworkbook.Worksheets("Sheet1")
sh3.Select
Cells.Find("User ID").Select
ActiveCell.Offset(1, 0).Select
nuid = Replace(nuid, """", "")
Set rn = sh3.UsedRange
k = rn.Rows.Count + rn.Row - 1
For x = 1 To k
If ActiveCell.Value Like nuid Then
Selection.Interior.Color = vbYellow
Else
Selection.Interior.ColorIndex = xlNone
End If
ActiveCell.Offset(1, 0).Select 'moves activecell down one row.
Next
end sub
Run Code Online (Sandbox Code Playgroud)
从我的gui,我将输入将存储在变量nuid中的特殊字符.我只想要特殊字符而不是它周围的引号
你也可以尝试:
nuid = Replace(nuid, Chr(34), vbNullString)
但如果引号不是第一个字符或最后一个字符,则可能会出现问题,例如:"!,@,"a-z".
在这种情况下,您可以尝试:
nuid = Mid(nuid, 2, Len(nuid) - 1) 这将删除第一个和最后一个字符
编辑:在我看来,您看到的引号表示变量字符串的类型.

Edit2 - 观看窗口

结果:

Edit3 - 与sub 4 Sagi:
Sub Highlight4Sagi(SpecChar As String)
Dim Column As Integer
SpecChar = "!@#"
ThisWorkbook.Worksheets(1).Select
Column = Cells.Find("User ID").Column
LastRow = Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
For i = 2 To LastRow 'loop each row in column "User ID"
For j = 1 To Len(SpecChar) 'loop every specchar: ! and @ and # and find him in each cells
If InStr(1, Cells(i, Column), Mid(SpecChar, j, 1)) > 0 Then
Cells(i, Column).Interior.ColorIndex = 6
Exit For
Else
Cells(i, Column).Interior.ColorIndex = 0
End If
Next j
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)