Не удается установить переменную range в VBA

#excel #vba

#excel #vba

Вопрос:

Я совершенно новичок в VBA и пытаюсь изучить переменные. У меня есть простой фрагмент кода, который должен установить переменной значение range:

 Sub Test()
    Dim DataRange As Range
    DataRange = Workbooks("Rooms.csv").Sheets(1).Range("A3", "AK17068")
End Sub
  

Когда я запускаю, я получаю Run-time error '91': Object variable or With block variable not set который …. разве это не то, что я сделал с Dim инструкцией? К чему это относится?

Я видел в документах MS, что в определенных случаях (я не совсем понимаю, когда) Я должен использовать Option Strict On , но когда я пытаюсь использовать это, я получаю синтаксическую ошибку ( Expected: Base or Compare or Explicit or Private ). Я думаю, что я в корне не понимаю, как это должно работать (являюсь разработчиком C по образованию)

Ответ №1:

Здесь:

 Sub Test()
    Dim DataRange As Range
    Set DataRange = Workbooks("Rooms.csv").Sheets(1).Range("A3", "AK17068")
End Sub
  

Object Переменные устанавливаются с помощью Set

Ответ №2:

Вам необходимо установить диапазон данных

Set DataRange = Workbooks("Rooms.csv").Sheets(1).Range("A3", "AK17068")

Ответ №3:

Используя оператор With, ссылающийся на рабочую книгу и рабочий лист, мы получаем преимущество, заключающееся в том, что мы не повторяем имена рабочей книги и рабочего листа, если вы планируете установить больше диапазонов. Смотрите ниже:

 Option Explicit

Sub Test()

    Dim DataRange As Range, DataRange2 As Range

    With Workbooks("Rooms.csv").Worksheets("Sheet1") '<- Using *With Statement* referring to the workbook amp; worksheet
        Set DataRange = .Range("A3", "AK17068")
        Set DataRange2 = .Range("A1") '<- For example purpoces
    End With

End Sub