错误'1004'对象'_Worksheet'的方法'范围'失败

问题描述:

我想将范围分配给我的变量Arg1。错误'1004'对象'_Worksheet'的方法'范围'失败

dim wkb2 as workbook 
set wkb2 = workbooks("File2.xlsx") 
dim ws2 as worksheet 
set ws2 = wkb2.worksheets(k) 

Dim Arg1 As Range 'the range to sum 
Dim Arg2 As Range 'criteria1 range`enter code here` 
Dim Arg3 As Variant 'criteria1 
Dim Arg4 As Range 'criteria2 range 
Dim Arg5 As Variant 'criteria2 

Set Arg1 = ws2.Range(Cells(i + 2, 6), Cells(i + 2, 6).End(xlDown).Offset(-1, 
0)) 
Set Arg2 = ws2.Range(Cells(i + 2, 4), Cells(i + 2, 4).End(xlDown)) 
Set Arg4 = ws2.Range(Cells(i + 2, 5), Cells(i + 2, 5).End(xlDown)) 
Arg3 = ws1.Cells(j, 20) 
Arg5 = ws1.Cells(j, 21) 

ws1.Cells(j, 23).Value = Application.WorksheetFunction.SumIfs(Arg1, Arg2, 
Arg3, Arg4, Arg5) 

我得到的错误(标题)当我设置ARG1 = ...

我所试图做的是分配给ARG1从单元格区域(I + 2,6):单元格(i + 2,“使用Ctrl Down后单元格更高”)。因此,例如,如果我+ 2 = 5,我想要范围。(“F5:F9”),假设最后一行是Row10。

任何帮助,非常感谢! (:

+0

是'ws2'properly设置哪里是它的价值? – LocEngineer

+0

ws1没有被声明或分配,还有Dim k As Long Dim i As Long Dim j As Long are missing – QHarr

+0

'k'的值是多少?是否为0并且它的编号是否对应正确的工作表?是否打开了File2.xlsx?检查'wkb2.Worksheets(k)'的值检查您是否拥有正确的工作表。 – LocEngineer

下,如果你调整参考WS1您所使用

而且纸张应编译,放在一起的变量

Sub test() 

    Dim wkb2 As Workbook 
    Dim ws1 As Worksheet 
    Dim ws2 As Worksheet 
    Dim Arg1 As Range  'the range to sum 
    Dim Arg2 As Range  'criteria1 range`enter code here` 
    Dim Arg3 As Variant  'criteria1 
    Dim Arg4 As Range  'criteria2 range 
    Dim Arg5 As Variant  'criteria2 
    Dim i As Long 
    Dim k As Long 'Or if it is a worksheet name then as string 
    Dim j As Long 
    Set wkb2 = Workbooks("File2.xlsx") 

    'k = ''Set K variable here 

    Set ws2 = wkb2.Worksheets(k) 
    Set ws1 = ThisWorkbook.Worksheets("Sheet1") ' Change as appropriate 
    Set Arg1 = ws2.Range(Cells(i + 2, 6), Cells(i + 2, 6).End(xlDown).Offset(-1, 0)) 
    Set Arg2 = ws2.Range(Cells(i + 2, 4), Cells(i + 2, 4).End(xlDown)) 
    Set Arg4 = ws2.Range(Cells(i + 2, 5), Cells(i + 2, 5).End(xlDown)) 

    Arg3 = ws1.Cells(j, 20) 
    Arg5 = ws1.Cells(j, 21) 

    ws1.Cells(j, 23).Value = Application.WorksheetFunction.SumIfs(Arg1, Arg2, Arg3, Arg4, Arg5) 

End Sub 
+0

你'暗'k,但你不要初始化它。如果不将值设置为k,则“工作表(k)”将失败。 – LocEngineer

+0

他们没有给出值,但是我应该初始化每个值。我的错! – QHarr