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

Excel 使用cell.Value的过程或调用无效,excel,vba,string,Excel,Vba,String,我希望将每个选定单元格中的当前文本替换为子字符串,该子字符串由第一个实例的所有剩余内容组成(在左侧减去一个空格。例如:Bob Smith(Director)变为Bob Smith 不幸的是,我在第四行(cell.Value=)上遇到了一个无效的过程或调用错误。我希望将其保留在VBA中,因为这是更大的VBA子例程中的许多操作之一。非常感谢您的帮助。谢谢 ThisWorkbook.Worksheets("Data").Range("A1:A4000").Select For Each cell In

我希望将每个选定单元格中的当前文本替换为子字符串,该子字符串由第一个
实例的所有剩余内容组成(
在左侧减去一个空格。例如:
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

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

试试这个,我测试的时候效果很好

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

谢谢!啊,是的,我的问题是有些数据没有“(”。非常感谢!谢谢!啊,是的,我的问题是有些数据没有“(”)。非常感谢!谢谢--这很好!问题正是user11217663猜测的--一些数据没有我要查找的字符串,这导致了一个错误。再次感谢!谢谢--这很好!问题正是user11217663猜测的--一些数据没有我要查找的字符串,因此t导致了一个错误。再次感谢!