如何在Excel 2013 VBA中使用Active工作簿/工作簿(名称)而不出现运行时错误91?
虽然这不是我第一次写这样的宏,但我似乎不知道如何让它工作。我在下面剪了个口子,我想应该有用,但没有 我的问题是,虽然在我工作日开始时,被剪断的部分只工作了一次,但之后我总是收到运行时错误'91:object变量或with block variable not set错误消息 我打开了两个工作簿,在启动宏之前,我在工作簿中选择了要手动使用的单元格如何在Excel 2013 VBA中使用Active工作簿/工作簿(名称)而不出现运行时错误91?,vba,excel,macros,Vba,Excel,Macros,虽然这不是我第一次写这样的宏,但我似乎不知道如何让它工作。我在下面剪了个口子,我想应该有用,但没有 我的问题是,虽然在我工作日开始时,被剪断的部分只工作了一次,但之后我总是收到运行时错误'91:object变量或with block variable not set错误消息 我打开了两个工作簿,在启动宏之前,我在工作簿中选择了要手动使用的单元格 Option Explicit Sub test() Dim source, sheet As Worksheet Dim sourcename As
Option Explicit
Sub test()
Dim source, sheet As Worksheet
Dim sourcename As String
Dim targetname As String
Dim test As Workbook
Workbooks("Test.xlsm").Activate
test = ActiveWorkbook
Debug.Print (test.Name)
sourcename = "Tabelle1"
targetname = "Tabelle2"
Set sheet = ActiveWorkbook.Worksheets(sourcename)
Set source = ActiveWorkbook.Worksheets(targetname)
Debug.print(sheet.Name)
Debug.print(source.Name)
End Sub
错误发生在包含test=ActiveWorkbook
编辑:在修复初始设置
错误后,工作表和源变量仍然为空,因此每个变量都会导致另一个此类错误
这里的问题是什么?我如何解决它?这里有两个问题:
第一-不要给变量和子变量赋予相同的名称,这两个变量都有“Test”
第二-在此行之前添加Set
test=ActiveWorkbook
like
Set test=ActiveWorkbook
记住-将子名称更改为其他名称,然后
测试
我发现这些问题似乎相关,但我看不出它们在我的案例中起作用:这两个问题都指向了答案:使用设置
@chrisneilsen是的,在这种情况下,我似乎只需要第二双眼睛,尽管之前我已经用了十几次同样的方法,但我已经看了两个小时了。虽然错误一开始就被消除了,但我的示例似乎是有缺陷的:在set sheet=ActiveWorkbook.Worksheets(sourcename)
之后,变量仍然是空的,根据debuggercopy-使用更改的名称将当前代码粘贴到问题,并在需要时添加set
。下一步我会再次尝试帮助你