Недопустимая процедура или вызов с использованием cell.Value - PullRequest
0 голосов
/ 17 марта 2019

Я хочу заменить текущий текст в каждой выделенной ячейке подстрокой, которая состоит из всего, что осталось от первого экземпляра ( минус один пробел влево.Например: 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

Ответы [ 2 ]

2 голосов
/ 17 марта 2019

Если InStr не находит подстроку, он возвращает ноль.Итак, вы пытаетесь пройти налево (strin, -1). Проверьте, был ли найден (, прежде чем совершать вызов влево.

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 голосов
/ 17 марта 2019

Попробуйте, это отлично работает, когда я тестировал

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...