#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