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