2017-10-12 11 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을 사용한 후 1 셀 높이"). 예를 들어, i + 2 = 5 인 경우 Range ("F5 : F9")를 원할 것입니다. 마지막 행이 Row10이라고 가정합니다.

도움을 주시면 대단히 감사하겠습니다. (:

+0

가'ws2'properly 경우 그 값이 설정합니다.? 할당 되었습니까? – LocEngineer

+0

ws1이 선언 또는 할당되지 않았습니다. 또한 dim k As Long Dim i As Long Dim j As Long 가 누락되었습니다. – 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

'Dim' k하지만 초기화하지 않습니다. 값을 k로 설정하지 않으면 '워크 시트 (k)'가 실패합니다. – LocEngineer

+0

그들은 가치를 부여하지 않았지만 그렇습니다. 나는 각각에 대해 초기화해야합니다. 내 잘못이야! – QHarr