Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 如何将此宏修复为在两个工作簿之间工作?_Excel_Vba - Fatal编程技术网

Excel 如何将此宏修复为在两个工作簿之间工作?

Excel 如何将此宏修复为在两个工作簿之间工作?,excel,vba,Excel,Vba,当我只使用一个工作簿并在工作表之间通信时,我的代码正常工作,但当我尝试引用其他工作簿中包含的工作表中的单元格区域时,会出现下标超出范围错误和对象未定义错误。现在,错误发生在“Set pidat=Worksheets”(“pidat”) Dim pival为双精度 “Dim eom作为工作表”将pidat工作表声明为变量 “设置eom=工作表(“eom”)”将eom工作表声明为变量 '设置库存水平=工作表(“库存水平”) Dim pidat作为工作表“将eom工作表声明为变量 设置pidat=工作

当我只使用一个工作簿并在工作表之间通信时,我的代码正常工作,但当我尝试引用其他工作簿中包含的工作表中的单元格区域时,会出现下标超出范围错误和对象未定义错误。现在,错误发生在“Set pidat=Worksheets”(“pidat”)

Dim pival为双精度
“Dim eom作为工作表”将pidat工作表声明为变量
“设置eom=工作表(“eom”)”将eom工作表声明为变量
'设置库存水平=工作表(“库存水平”)

Dim pidat作为工作表“将eom工作表声明为变量 设置pidat=工作表(“pidat”) 将steve设置为工作簿 Set steve=Application.workbook(“EOM报告VBA”) 作为工作簿的Dim EOMAs 设置EOMA=应用程序工作簿(“EOMA”) 将库存级别调整为工作表 '这些更改允许在活动工作表/工作簿之外引用动态范围 作为字符串的Dim位置 Dim rownum尽可能长 像长一样模糊 变暗fRng As范围 Dim J尽可能长 日期 最后日期 作为整数的Dim rnm Dim lastm作为整数 我的耳朵和我的一样长 暗K一样长 与皮达 J=.范围(“J2”).值 rn=现在 最后=.Range(“B1”).值 rnm=月(rn) lastm=月份(上一个) tyear=年份(rn) 如果lastm
您需要限定要使用的特定工作簿

如果执行此行时的活动工作簿没有名为
pidat的工作表,则行
Set pidat=Worksheets(“pidat”)
将失败

下面是一个如何限定工作簿的示例

Dim theWorkbook as Workbook
Set theWorkbook = Application.Workbooks("myWorkbook")

Dim pidat as Worksheet
Set pidat = theWorkbook.Worksheets("pidat")

您可以更进一步,验证合格工作簿中是否存在名为
pidat(或任何名称)
的工作表,但我将让您了解如何做到这一点:)

您需要完全限定范围,例如:
工作簿(“工作簿2”)。工作表(“pidat”)
。谢谢,这需要放在哪里?Dim pidat As Worksheet'声明eom工作表为变量集pidat=eom_Report_VBA。工作表(“pidat”)Dim steve As工作簿集steve=Application.Workbooks(“eom_Report_VBA”)Dim EOMAs As工作簿集EOMAs=Application.Workbooks(“EOMA”)Dim Inv_Level As Worksheet Inv_Level=EOMA。工作表(“Inv_Levels”)我进行了更改,但仍然收到一个对象必需的错误。如果按照帖子的顺序执行,则会出现错误。请在工作表之前声明工作簿。
Dim theWorkbook as Workbook
Set theWorkbook = Application.Workbooks("myWorkbook")

Dim pidat as Worksheet
Set pidat = theWorkbook.Worksheets("pidat")