Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
VBA对象所需错误取决于代码排列_Vba_Excel_Excel 2007 - Fatal编程技术网

VBA对象所需错误取决于代码排列

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语句之外引用时,您为什么希望它工作 除非您有更多未

因此,如果我把最后一行以Set uRange开头放在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。。。。。。。在第一步中,应根据文件和图纸“设置”,依此类推