Код VBA для выбора продает на основе значений в них - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь написать небольшой фрагмент кода, который выбирает все ячейки, содержащие «D» в диапазоне A1: J10. Извините, если приведенный ниже код является неоптимальным для этой цели, но я пытаюсь использовать это как средство изучения языка. Кажется, в коде нет явной ошибки (для меня), но он говорит «Недопустимый вызов процедуры или аргумент», когда я пытаюсь его запустить.

Option Explicit


Dim t As Range
Dim finalrange As Range

Sub selectallbattleships()
    For Each t In Range("A1:J10")
        If t.Value = "D" Then Set finalrange = Application.Union(finalrange, t)
    Next t

finalrange.Select

End Sub

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Здесь есть несколько проблем.

Сначала ваши операторы Dim должны быть внутри подпрограммы. Далее, вы не можете объединить nothing, поэтому вам нужно проверить, назначен ли finalrange что-либо еще, а затем решить, как его обработать - в этом случае, если он не назначил его просто t, в противном случае union. Наконец, вам не нужно «приложение». до union.

Sub selectallbattleships()
    Dim t As Range
    Dim finalrange As Range

    For Each t In Range("A1:J10")
        If t.Value = "D" Then
            If finalrange Is Nothing Then
                Set finalrange = t
            Else
                Set finalrange = Union(finalrange, t)
            End If
        End If
    Next t

finalrange.Select

End Sub
0 голосов
/ 06 сентября 2018

Вы должны задать finalrange начальный диапазон, иначе он начинается с Nothing. Код сбой на Application.Union(finalrange, t), потому что он пытается объединить Nothing.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...