无效的过程或使用cell.Value调用

问题描述 投票:0回答:2

我希望用一个子字符串替换每个选定单元格中的当前文本,子字符串包含(第一个实例左边的所有内容减去左边的一个空格。例如: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
excel vba string
2个回答
2
投票

如果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

0
投票

试试这个,当我测试它时,它工作得很好

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
© www.soinside.com 2019 - 2024. All rights reserved.