Objektfehler durch Wechsel in Modul
03.01.2007 16:46:00
Michael
Ich habe mir aus verschiedenen 'Learning bei Doing'VBA-Brocken ein Makro gebastelt, das folgendes tun soll:
In der Start-Datei steht in P1 das Datum(immer HEUTE). In I1 steht die Formel =KÜRZEN((P1-WOCHENTAG(P1;2)-DATUM(JAHR(P1+4-WOCHENTAG(P1;2));1;-10))/7) und gibt mir die KW aus.
Jetzt soll das Makro die richtige Ziel-Datei(Name + KW) öffnen, darin wie beim SVERWEIS das passende Datum übernehmen und die in der gefundenen Spalte vorhandenen Informationen in bestimmte Felder der Zieldatei eintragen.
Beim Testen des Makros per Button hat alles funktioniert, beim Ändern in Workbook_open() füllt er die Felder nicht und sagt nur noch 'Zu wenig Speicher'.
Nach dem Umstellen in ein Modul und mittels CALL kommt der Laufzeitfehler 438 'Objekt unterstützt Methode nicht' in der Zeile :
suppe = ActiveWorkbook.Sheet("Speisenplan DIN A 4").Cells(3, Spalte).Value
Ich hab jetzt schon alles Mögliche geändert und wahrscheinlich sinnlose Bezeichnungen oder doppelte Aktivierungen eingefügt, aber ich komme nicht drauf, wo der Haken ist. Hier das ganze Makro:
Function IsWorkbookOpen(strWB As String) As Boolean
On Error Resume Next
IsWorkbookOpen = Not Workbooks(strWB) Is Nothing
End Function
Sub Eintrag()
Dim c As Range
Dim name As String
Dim suppe As String
Dim haupt As String
Dim veg As String
Dim menue As String
Dim bei1 As String
Dim bei2 As String
Dim datum As Date
Windows(Start-Datei).Activate
datum = ActiveSheet.Cells(1, 16).Value
name = "Zieldatei " & [i1] & ".xls"
If IsWorkbookOpen(name) Then GoTo offen Else GoTo zu
offen:
Windows(name).Activate
Sheets(Tabelle).Select
GoTo weiter
zu:
Workbooks.Open ("PFAD" & name)
ActiveWorkbook.Sheets(Tabelle).Select
weiter:
For Each c In ActiveWorkbook.Sheets(Tabelle).Range("b2:j2")
If c.Value = datum Then
wert = Left(c.Address, 2)
GoTo sprung
End If
Next c
sprung:
Select Case wert
Case "$B"
Spalte = 2
Case "$D"
Spalte = 4
Case "$F"
Spalte = 6
Case "$H"
Spalte = 8
Case "$J"
Spalte = 10
End Select
suppe = ActiveWorkbook.Sheet("Speisenplan DIN A 4").Cells(3, Spalte).Value
veg = ActiveWorkbook.Sheet("Speisenplan DIN A 4").Cells(4, Spalte).Value
haupt = ActiveWorkbook.Sheet("Speisenplan DIN A 4").Cells(6, Spalte).Value
menue = ActiveWorkbook.Sheet("Speisenplan DIN A 4").Cells(8, Spalte).Value
bei1 = ActiveWorkbook.Sheet("Speisenplan DIN A 4").Cells(11, Spalte).Value
bei2 = ActiveWorkbook.Sheet("Speisenplan DIN A 4").Cells(12, Spalte).Value
ActiveWorkbook.Close
Windows(Start-Datei).Activate
ActiveSheet.Cells(6, 3).Value = suppe
ActiveSheet.Cells(7, 3).Value = veg
ActiveSheet.Cells(8, 3).Value = haupt
ActiveSheet.Cells(9, 3).Value = menue
ActiveSheet.Cells(10, 3).Value = bei1
ActiveSheet.Cells(11, 3).Value = bei2
End Sub
Kann mir jemand helfen?
Gruss Michael