Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Excel 2013 VBA中使用Active工作簿/工作簿(名称)而不出现运行时错误91?_Vba_Excel_Macros - Fatal编程技术网

如何在Excel 2013 VBA中使用Active工作簿/工作簿(名称)而不出现运行时错误91?

如何在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

虽然这不是我第一次写这样的宏,但我似乎不知道如何让它工作。我在下面剪了个口子,我想应该有用,但没有

我的问题是,虽然在我工作日开始时,被剪断的部分只工作了一次,但之后我总是收到运行时错误'91:object变量或with block variable not set错误消息

我打开了两个工作簿,在启动宏之前,我在工作簿中选择了要手动使用的单元格

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
。下一步我会再次尝试帮助你