Excel VBA Макросы: Выделение строк через переменные

Автор moland, 04 октября 2017, 13:50

moland

Подскажите как выделить  диапазон строк от a до b
Public a, b As Integer
Sub asd()

  a = Range("диапазон").Rows(Range("диапазон").Rows.Count).Row
  b= UsedRange.Rows.Count
    Rows("a:b").Select
End sub

Почему когда стоят переменные в скобках не выделяет строки, а скажем  Rows(a).Select работает.
a и b находит верно я проверял через msgbox.

Администратор

Не ответ на ваш вопрос, просто замечание по коду.

В VBA нужно указывать тип данных для каждой переменной. Правильно так:
Public a As Integer, b As Integer

В вашем же случае у переменной "a" тип данных "Variant", а не "Integer", как вы предполагали.

Администратор

Не ответ на ваш вопрос, просто замечание по коду.

В экселе 2007+ 1 млн строк на листе. Поэтому даже для цикла по строкам недостаточно типа данных Integer.
Поэтому правильно использовать тип данных Long:
Public a As Long, b As Long

Администратор

В VBA, всё, что попадает внутрь кавычек становится обычным текстом. В этом коде внутри скобок уже не переменные, как вы думаете, а просто буквы "a" и "b":
rows("a:b").Select

Администратор

Можно так выделить строки:

Public a As Long, b As Long

Sub asd()
    a = Range("диапазон").rows(Range("диапазон").rows.Count).row
    b = UsedRange.rows.Count
    rows(a).Resize(b).Select
End Sub

moland

Ок, спасибо.
В моем случае будет.
rows(a+1).Resize(b-а).Select