我是VBA的新手,正在尝试学习变量。我有一段简单的代码,应该将一个变量设置为一个范围:
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
语句所做的吗?这是什么意思?
我看到in the MS docs在某些情况下(我不完全了解何时)应该使用Option Strict On
,但是当我尝试使用它时,出现语法错误(Expected: Base or Compare or Explicit or Private
) 。我认为我从根本上误解了它应该如何工作(通过培训是C ++开发人员)
答案 0 :(得分:7)
这里:
Sub Test()
Dim DataRange As Range
Set DataRange = Workbooks("Rooms.csv").Sheets(1).Range("A3", "AK17068")
End Sub
Object
变量设置为Set
答案 1 :(得分:4)
您需要设置数据范围
Set DataRange = Workbooks("Rooms.csv").Sheets(1).Range("A3", "AK17068")
答案 2 :(得分:1)
使用 With Statement 引用工作簿和工作表的好处是,如果您打算设置更多范围,则可以不重复工作簿和工作表的名称。见下文:
Option Explicit
Sub Test()
Dim DataRange As Range, DataRange2 As Range
With Workbooks("Rooms.csv").Worksheets("Sheet1") '<- Using *With Statement* referring to the workbook & worksheet
Set DataRange = .Range("A3", "AK17068")
Set DataRange2 = .Range("A1") '<- For example purpoces
End With
End Sub