删除VBA中的一部分Cell值

Add*_*ddy 1 excel vba excel-vba

我试图从单元格值中删除一部分但它不起作用.

单元格的示例内容:(示例输入)

="*sls*lmt"&CONCATENATE("_",'C:\Users\Administrator\AppData\Roaming\Microsoft\AddIns\XL-EZ Addin.xla'!COLUMNLETTER(C14),TEXT(ROW(),"0"))&"_sel*range(status)*0*GOOD|OK|0|#00D700|0|100|80*NOT GOOD|NG|0|#FFFF00|0|79|50*FAULTED|FAULTED|0|#FF0000|1|49|0"
Run Code Online (Sandbox Code Playgroud)

样本输出:

="*sls*lmt"&CONCATENATE("_",!COLUMNLETTER(C14),TEXT(ROW(),"0"))&"_sel*range(status)*0*GOOD|OK|0|#00D700|0|100|80*NOT GOOD|NG|0|#FFFF00|0|79|50*FAULTED|FAULTED|0|#FF0000|1|49|0"
Run Code Online (Sandbox Code Playgroud)

我想从价值中删除这部分

'C:\Users\Administrator\AppData\Roaming\Microsoft\AddIns\XL-EZ Addin.xla'
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的

Sub UpdateSheetButton()
Dim subStr1 As String
Dim subSrrt2 As String

Dim pos As Integer

For Each Cell In ActiveSheet.UsedRange.Cells
pos = InStr(Cell.Value, "'C:\")
If pos >= 1 Then
  subStr1 = Split(Cell.Value, "'C:\", 1)
  subStr2 = Split(Cell.Value, "\AddIns\XL-EZ Addin.xla'", 2)
  Cell.Value=subStr1 +subStr2 
  End If
Next

End Sub
Run Code Online (Sandbox Code Playgroud)

错误: 运行时错误'13'在此行上键入不匹配

pos = InStr(Cell.Value, "'C:\")
Run Code Online (Sandbox Code Playgroud)

Sid*_*out 6

我想知道你为什么使用VBA来完成这么简单的任务.您可以使用内置方法.

第一天(非VBA)

CTRL+ H键带上Find and Replace对话框并使用它来替换文本.

第二天(VBA)

如果您仍想使用VBA,则只需记录上述宏.有没有必要使用循环.例如

Sub Sample()
    Dim sFind As String
    Dim sNew As String

    '~~> Example. Chnage as applicable
    sFind = "Sum"
    sNew = "Max" 'or sNew = "" in case you want to remove the above text

    '~~> For Complete Worksheet
    With ThisWorkbook.Sheets("Sheet1").Cells
        .Replace What:=sFind, Replacement:=sNew, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    End With

    '~~> For a Column
    With ThisWorkbook.Sheets("Sheet1").Columns(1)
        .Replace What:=sFind, Replacement:=sNew, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    End With

    '~~> For a range
    With ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
        .Replace What:=sFind, Replacement:=sNew, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)