Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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运行时错误1004对象范围\u全局失败_Vba_Excel_Runtime Error - Fatal编程技术网

VBA运行时错误1004对象范围\u全局失败

VBA运行时错误1004对象范围\u全局失败,vba,excel,runtime-error,Vba,Excel,Runtime Error,我不确定我的代码出了什么问题。我想我设置的范围是正确的,但可能不是。我试过设置多个范围。错误出现在代码“范围(“CL_Paid”).粘贴”的最后一行 CLPAYD已经是一个范围,因此请使用CLU PAYD.Paste。但是,粘贴适用于工作表< /代码>,而不是范围>代码>,因此您可以考虑 PaseExabale。或者 .EntireRow.Cut CL_Paid 将一步剪切并粘贴(到目标),无需使用剪贴板 还请注意 Dim HR_Paid, HR_Unpaid, E_Paid, etc As

我不确定我的代码出了什么问题。我想我设置的范围是正确的,但可能不是。我试过设置多个范围。错误出现在代码“范围(“CL_Paid”).粘贴”的最后一行


CLPAYD已经是一个
范围
,因此请使用
CLU PAYD.Paste
。但是,粘贴适用于<代码>工作表< /代码>,而不是<代码>范围>代码>,因此您可以考虑<代码> PaseExabale<代码>。或者

.EntireRow.Cut CL_Paid
将一步剪切并粘贴(到目标),无需使用剪贴板

还请注意

Dim HR_Paid, HR_Unpaid, E_Paid, etc As Range
不(在VBA中)定义所有这些都是范围参照。除了最后一个,它们都是变体。您必须使用:

Dim HR_Paid As Range, HR_Unpaid As Range, E_Paid As Range, etc

CLPAYD已经是一个
范围
,因此请使用
CLU PAYD.Paste
。但是,粘贴适用于<代码>工作表< /代码>,而不是<代码>范围>代码>,因此您可以考虑<代码> PaseExabale<代码>。或者

.EntireRow.Cut CL_Paid
将一步剪切并粘贴(到目标),无需使用剪贴板

还请注意

Dim HR_Paid, HR_Unpaid, E_Paid, etc As Range
不(在VBA中)定义所有这些都是范围参照。除了最后一个,它们都是变体。您必须使用:

Dim HR_Paid As Range, HR_Unpaid As Range, E_Paid As Range, etc

您是否有意使用单行版本的
If…Then
语句

If
下面的行缩进看起来好像您认为它在某种程度上与
If
相关。你有这个:

If .Value = ("CL") Then .EntireRow.Cut
    Range("CL_Paid").Paste
与此具有相同的效果:

If .Value = ("CL") Then
    .EntireRow.Cut
End If

Range("CL_Paid").Paste
当我怀疑你真的想要这个:

If .Value = ("CL") Then
    .EntireRow.Cut
    CL_Paid.Paste
End If
因此,无论是否进行过
剪切
,您都会尝试粘贴


有关不同版本的
If…Then
语句的详细信息如下

您是否有意使用了一行版本的
If…Then
语句

If
下面的行缩进看起来好像您认为它在某种程度上与
If
相关。你有这个:

If .Value = ("CL") Then .EntireRow.Cut
    Range("CL_Paid").Paste
与此具有相同的效果:

If .Value = ("CL") Then
    .EntireRow.Cut
End If

Range("CL_Paid").Paste
当我怀疑你真的想要这个:

If .Value = ("CL") Then
    .EntireRow.Cut
    CL_Paid.Paste
End If
因此,无论是否进行过
剪切
,您都会尝试粘贴

有关不同版本的
If…Then
语句的详细信息如下