2016-03-25 8 views
-1

SI versuche, Arbeitsmappen auf ein Array festzulegen. Laufzeitfehler 9. Hier ist der Code.Laufzeitfehler 9 beim Festlegen der Arbeitsmappe für Array

Dim geneid() As String 
Dim venousdata As Workbook 
Dim x As Integer 
Dim pt() As Workbook 

Set venousdata = Workbooks.Open("") 
Set pt(1) = Workbooks.Open("") 
Set pt(2) = Workbooks.Open("") 
Set pt(3) = Workbooks.Open("") 
Set pt(4) = Workbooks.Open("") 
Set pt(5) = Workbooks.Open("") 

For i = 1 To 5 
    pt(i).Cells(5621, 10).Value = venousdata.Cells(i + 1, 6).Value 
    pt(i).Cells(5621, 11).Value = venousdata.Cells(i + 1, 7).Value 
    pt(i).Cells(5621, 12).Value = venousdata.Cells(i + 1, 8).Value 
Next i 
+0

Willkommen zurück. Ich sehe, dass Sie sich etwas anstrengen, aber es gibt mehrere Fehler. Ich werde dieses Mal nicht ablehnen, aber bitte setzen Sie Ihre Forschung fort. – findwindow

+1

'Dim pt (1 bis 5) als Arbeitsbuch'. und dann zwischen 'pt (i)' (oder 'venousdata') und' .Cells ... 'müssen Sie eine Arbeitsblattreferenz angeben (wie' pt (i) .Worksheets ("Sheet1"). Zellen ... ' – user3598756

Antwort

1

Es scheint, dass Teile der Antwort in den Kommentaren und der Antwort gegeben sind, also entschied ich mich, eine vollständige Antwort an die Tafel zu werfen.

Siehe den folgenden Code, der funktioniert (solange Sie die Änderungen für Ihre Daten/System vornehmen).

Dim geneid() As String 
Dim venousdata As Workbook 
Dim i As Integer 
Dim pt(1 to 5) As Workbook 'need to set the dimensions of the array before adding something to it 

'you need to place which file you want to open 
'change all workbook paths and references as needed 
Set venousdata = Workbooks.Open("C:\Temp\Book.xlsx") 
Set pt(1) = Workbooks.Open("C:\Temp\Book1.xlsx") 
Set pt(2) = Workbooks.Open("C:\Temp\Book2.xlsx") 
Set pt(3) = Workbooks.Open("C:\Temp\Book3.xlsx") 
Set pt(4) = Workbooks.Open("C:\Temp\Book4.xlsx") 
Set pt(5) = Workbooks.Open("C:\Temp\Book5.xlsx") 

For i = 1 To 5 
    'the Cells object is a member of the Worksheet 
    'Object, which is a member of the Workbook Object, 
    'so you must set parentage in that order 
    'change Sheet1 to the specific sheet for your needs 
    pt(i).Worksheets("Sheet1").Cells(5621, 10).Value = venousdata.Worksheets("Sheet1").Cells(i + 1, 6).Value 
    pt(i).Worksheets("Sheet1").Cells(5621, 11).Value = venousdata.Worksheets("Sheet1").Cells(i + 1, 7).Value 
    pt(i).Worksheets("Sheet1").Cells(5621, 12).Value = venousdata.Worksheets("Sheet1").Cells(i + 1, 8).Value 
Next i 
+0

Dies löste das Problem teilweise, aber ich habe immer noch einen Laufzeitfehler in der folgenden Anweisung: 'pt (i) .Worksheets (" Sheet1 "). Zellen (5621, 10) .Wert = venousdata.Worksheets (" EFNB2 ") .Cells (i + 1, 6) .Wert " – devakotia

+0

Gibt es ein Arbeitsblatt namens" Sheet1 "in den Arbeitsmappen, die in pt() geladen sind? Wenn ja, was ist der RunTime Error? –

+0

Ich hatte den Namen des Arbeitsblatts falsch geschrieben, und auch die Kopie/Destination wurde gewechselt. Danke für die Hilfe. – devakotia

1
  1. Arbeitsmappe zu öffnen, müssen Sie das geben Filespec wie: Set venousdata = Workbooks.Open("C:\TestFolder\B1.xls")
  2. Sie ein Arbeitsblatt sowie eine Arbeitsmappe verweisen, wenn der Wert der Cells Einstellung:

Dieser Code wird fehlschlagen:

MsgBox ActiveWorkbook.Cells(1, 1).Value 
Verwandte Themen