2017-10-12 3 views
0

Ich versuche, meiner Variable Arg1 einen Bereich zuzuweisen.Fehler '1004' Methode 'Bereich' des Objekts '_Worksheet' fehlgeschlagen

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) 

ich den Fehler (in Titel), wenn i Arg1 Set = ...

Was ich versuche zu tun zuweisen einen Bereich von Zellen ArG1 (i + 2, 6): Zellen (i + 2, "1 Zelle höher nach Verwendung von Strg-Down"). Wenn also zum Beispiel i + 2 = 5 ist, würde ich Range ("F5: F9") wollen, wenn man annimmt, dass die letzte Zeile Row10 ist.

Jede Hilfe wird sehr geschätzt! (:

+0

Ist 'ws2'properly gesetzt Wo ist ihr Wert.? Dim j As Long nicht vorhanden fehlen – LocEngineer

+0

ws1 ist nicht deklarieren oder zugewiesen ? Ist 'File2.xlsx'geöffnet? Untersuchen Sie den Wert von' wkb2.Worksheets (k) ' um zu überprüfen, ob Sie überhaupt das richtige Arbeitsblatt haben. – QHarr

+0

Was ist der Wert von 'k'? Ist es> 0 und entspricht seine Nummer dem richtigen Arbeitsblatt? – LocEngineer

Antwort

0

Folgendes sollte kompilieren, wenn Sie die Referenz anpassen, um das Blatt WS1 Sie verwenden

Auch platziert zusammen Variablen

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

Sie 'Dim' k, aber Sie initialisieren es nicht. Ohne einen Wert für k zu setzen, wird 'Worksheets (k)' fehlschlagen. – LocEngineer

+0

Sie haben keinen Wert angegeben, aber ja, ich sollte für jeden initialisieren. Mein Fehler! – QHarr

Verwandte Themen