我希望用一个子字符串替换每个选定单元格中的当前文本,子字符串包含(
第一个实例左边的所有内容减去左边的一个空格。例如:Bob Smith (Director)
成为Bob Smith
。
不幸的是,我在第四行(cell.Value =
)上得到了无效的程序或调用错误。想在VBA中保留它,因为它是更大的VBA子例程中的许多操作之一。任何帮助将不胜感激。谢谢!
ThisWorkbook.Worksheets("Data").Range("A1:A4000").Select
For Each cell In Selection
position = InStr(cell.Value, "(") - 1
cell.Value = Left(cell.Value, position)
Next cell
如果InStr找不到子字符串,则返回零。所以你试图得到左(strin,-1),在调用Left之前检查是否找到了(
。
ThisWorkbook.Worksheets("Data").Range("A1:A4000").Select
For Each cell In Selection
position = InStr(cell.Value, "(") - 1
if position > 0 then
cell.Value = Left(cell.Value, position)
end if
Next cell
试试这个,当我测试它时,它工作得很好
Dim cell As Range
Dim rng As Range
Dim Position As Integer
Set rng = ThisWorkbook.Worksheets("Data").Range("A1:A4000")
For Each cell In rng
Position = InStr(cell.Value, "(") - 2
cell.Value = CStr(Left(cell.Value, Position))
Next cell