VBA对象所需错误取决于代码排列
因此,如果我把最后一行以Set uRange开头放在if块中,那么这个练习就非常有效了。如果我马上把它放在后面/外面,它不会。你能帮我理解为什么吗 我得到的错误(如果在外部)是VBA对象所需错误取决于代码排列,vba,excel,excel-2007,Vba,Excel,Excel 2007,因此,如果我把最后一行以Set uRange开头放在if块中,那么这个练习就非常有效了。如果我马上把它放在后面/外面,它不会。你能帮我理解为什么吗 我得到的错误(如果在外部)是所需对象。这是Excel内部工作的错误吗 我很困惑。非常感谢 在IF语句之外引用tabD_WB时,您为什么希望它工作 除非您有更多未显示的代码,否则您只能在IF语句中设置tabD\u WB,这意味着如果r“H”,则对象为空,而且您无法访问空对象的范围。当tabD_WB在IF语句之外引用时,您为什么希望它工作 除非您有更多未
所需对象
。这是Excel内部工作的错误吗
我很困惑。非常感谢 在
IF
语句之外引用tabD_WB
时,您为什么希望它工作
除非您有更多未显示的代码,否则您只能在
IF
语句中设置tabD\u WB
,这意味着如果r“H”
,则对象为空,而且您无法访问空对象的范围。当tabD_WB
在IF
语句之外引用时,您为什么希望它工作
除非您有更多未显示的代码,否则您只能在
IF
语句中设置tabD\u WB
,这意味着如果r“H”
,则对象为空,并且您无法访问空对象的范围。您可以编写代码
r = mainWS.Cells(count, 1).Value
paths = mainWS.Cells(i, 2).Value
pathd = mainWS.Cells(i, 6).Value
.....
If (r = "H") Then
Application.Workbooks.Open (pathd & "\" & filed)
Set dWB = Application.Workbooks(filed)
Set tabD_WB = dWB.Sheets(tabd & "")
Application.Workbooks.Open (paths & "\" & files)
Set sWB = Application.Workbooks(files)
Set tabS_WB = sWB.Sheets(tabs & "")
End If
Set uRange = tabD_WB.Range(Cells(1, 1), Cells(5, tabD_WB.UsedRange.Columns.count))
作为
关于您的错误,您还没有完全限定Cells()对象。试试这个
Set dWB = Application.Workbooks.Open(pathd & "\" & filed)
Set tabD_WB = dWB.Sheets(tabd)
我希望您在代码中的某个地方声明了
保险
为范围
?另外,如果if条件不为true,则不会有工作簿对象?您可以编写代码
r = mainWS.Cells(count, 1).Value
paths = mainWS.Cells(i, 2).Value
pathd = mainWS.Cells(i, 6).Value
.....
If (r = "H") Then
Application.Workbooks.Open (pathd & "\" & filed)
Set dWB = Application.Workbooks(filed)
Set tabD_WB = dWB.Sheets(tabd & "")
Application.Workbooks.Open (paths & "\" & files)
Set sWB = Application.Workbooks(files)
Set tabS_WB = sWB.Sheets(tabs & "")
End If
Set uRange = tabD_WB.Range(Cells(1, 1), Cells(5, tabD_WB.UsedRange.Columns.count))
作为
关于您的错误,您还没有完全限定Cells()对象。试试这个
Set dWB = Application.Workbooks.Open(pathd & "\" & filed)
Set tabD_WB = dWB.Sheets(tabd)
我希望您在代码中的某个地方声明了
保险
为范围
?另外,如果if条件不成立,那么就没有工作簿对象了?我忘了提到r实际上等于“H”(在a for的第一步中),所以这让我感到困惑。在第二步中,设置urage=tabD_WB.Range。。。。。。。应根据文件和图纸“设置”为第一步,依此类推on@Sam-这个问题不可能回答。您尚未显示所有代码,包括变量声明,我们不知道您是否使用了选项Explicit
,是否路径
,文件
和选项卡
包含有效值,等等。你有没有在你的代码中加上断点,并通过它来确保你的IF
语句正在执行?我忘了提到r确实等于“H”(在for的第一步中),所以这让我感到困惑。在第二步中,设置urage=tabD_WB.Range。。。。。。。应根据文件和图纸“设置”为第一步,依此类推on@Sam-这个问题不可能回答。您尚未显示所有代码,包括变量声明,我们不知道您是否使用了选项Explicit
,是否路径
,文件
和选项卡
包含有效值,等等。你有没有在你的代码中加上断点,并通过它来确保你的IF
语句正在执行?我忘了提到r确实等于“H”(在for的第一步中),所以这让我感到困惑。在第二步中,设置urage=tabD_WB.Range。。。。。。。应该基于第一步中的文件和表格“set”,所以我忘了提到r实际上等于“H”(在for的第一步中),所以这就是让我困惑的地方。在第二步中,设置urage=tabD_WB.Range。。。。。。。在第一步中,应根据文件和图纸“设置”,依此类推