2017-10-12 126 views
0

我想将范围分配给我的变量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

回答

0

下,如果你调整参考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

相关问题