如何使用vba删除报价?
我有:
nuid="!,@,az"
但是我不想要双引号。 我想nuid =!,@,az
build议我删除开始和结束引号
这是我的代码:
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
从我的gui中,我将input将存储在variablesnuid中的特殊字符。我只需要特殊字符而不是周围的引号
你也可以尝试:
nuid = Replace(nuid, Chr(34), vbNullString)
但是,如果引号不是第一个也不是最后一个字符,则可能有问题,例如: "!,@,"az"
。
在这种情况下,你可以尝试:
nuid = Mid(nuid, 2, Len(nuid) - 1)
这会切断第一个和最后一个字符
编辑:在我看来,你看到的报价表明一个variablesstring的types。
编辑2 – 观看窗口
结果:
Edit3 – 与子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
基本上逃脱一个"
与""
下面应该有所帮助
nuid = replace (nuid, """", "")
另外的变体
Sub highlight(nuid As String) Dim sh3 As Worksheet, Cl&, Lrow&, x&, oCell As Range Set sh3 = ThisWorkbook.Worksheets("Sheet1") Cl = sh3.Cells.Find("User ID").Column Frow = sh3.Cells.Find("User ID").Row + 1 Lrow = Cells.Find("*", , , , xlByRows, xlPrevious).Row For Each oCell In sh3.Range(Cells(Frow, Cl), Cells(Lrow, Cl)) If oCell.Value <> "" Then For x = 1 To Len(nuid) If oCell.Value Like "*" & Mid(nuid, x, 1) & "*" Then oCell.Interior.Color = vbYellow Exit For Else oCell.Interior.Color = xlNone End If Next x End If Next oCell End Sub
产量
但是如果你需要find,例如包含任何小写字母[az]
的单元格,那么应该使用另一个方法