Excel 2016 不会让我将工作表分配给变量
Excel 2016 will not let me assign a worksheet to a variable
我是一名经验丰富的 C/C++/Java/C# 开发人员,在 Excel 2016 年第一次尝试 VBA,遇到了一个莫名其妙的问题具有以下完整宏的门:
Sub AddDataToSheet1()
10 Dim ws As Worksheet
20 ws = Worksheets(1)
30 ws.Activate
40 ws.Range("A1").Value = "Apple Pie"
End Sub
在第 20 行,它因错误而崩溃:
Runtime error '91'
Object variable or With block variable not set
嗯...我正在尝试设置它?这是在 Windows 10 Pro 上全新安装的 Office 365 中创建的第一个工作簿。该工作簿中有两个工作表,顺序为 "Main Sheet"
和 "Aux Sheet 1"
。
如果我将第 20 行更改为:
20 ws = Sheets(1)
出现同样的错误。如果我尝试使用 Worksheets 或 Sheets 按工作表名称编制索引,也会发生这种情况,例如
20 ws = Sheets("Main Sheet")
即使使用应用程序进行排位也会导致相同的错误:
20 ws = Application.Workheets("Main Sheet")
Intellisense 似乎认为 Sheets、Worksheets、Application.Sheets 和 Application.Worksheets 都是有效对象,_Default(index) 作为可用操作。
知道这里会发生什么吗?
您设置对象但为变量赋值。你需要 SET ws = Worksheets(1)
.
Sub AddDataToSheet1()
Dim ws As Worksheet, str as string
Set ws = Worksheets(1)
ws.Activate
ws.Range("A1").Value = "Apple Pie"
str = ws.Range("A1").Value
debug.print str
End Sub
我是一名经验丰富的 C/C++/Java/C# 开发人员,在 Excel 2016 年第一次尝试 VBA,遇到了一个莫名其妙的问题具有以下完整宏的门:
Sub AddDataToSheet1()
10 Dim ws As Worksheet
20 ws = Worksheets(1)
30 ws.Activate
40 ws.Range("A1").Value = "Apple Pie"
End Sub
在第 20 行,它因错误而崩溃:
Runtime error '91'
Object variable or With block variable not set
嗯...我正在尝试设置它?这是在 Windows 10 Pro 上全新安装的 Office 365 中创建的第一个工作簿。该工作簿中有两个工作表,顺序为 "Main Sheet"
和 "Aux Sheet 1"
。
如果我将第 20 行更改为:
20 ws = Sheets(1)
出现同样的错误。如果我尝试使用 Worksheets 或 Sheets 按工作表名称编制索引,也会发生这种情况,例如
20 ws = Sheets("Main Sheet")
即使使用应用程序进行排位也会导致相同的错误:
20 ws = Application.Workheets("Main Sheet")
Intellisense 似乎认为 Sheets、Worksheets、Application.Sheets 和 Application.Worksheets 都是有效对象,_Default(index) 作为可用操作。
知道这里会发生什么吗?
您设置对象但为变量赋值。你需要 SET ws = Worksheets(1)
.
Sub AddDataToSheet1()
Dim ws As Worksheet, str as string
Set ws = Worksheets(1)
ws.Activate
ws.Range("A1").Value = "Apple Pie"
str = ws.Range("A1").Value
debug.print str
End Sub