Herbers Excel-Forum - das Archiv

Objektfehler durch Wechsel in Modul

Bild

Betrifft: Objektfehler durch Wechsel in Modul
von: Michael

Geschrieben am: 03.01.2007 16:46:00
Liebe Excel-Profis!
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
Bild

Betrifft: AW: Objektfehler durch Wechsel in Modul
von: Luschi

Geschrieben am: 03.01.2007 17:05:44
Hallo Michael,
die Vba-Zeile
suppe = ActiveWorkbook.Sheet("Speisenplan DIN A 4").Cells(3, Spalte).Value
enthält einen syntaktischen Fehler und sollte so geschrieben werden:
suppe = ActiveWorkbook.Sheets("Speisenplan DIN A 4").Cells(3, Spalte).Value
Desgleichen müssen die nächsten 5 Zeilen korrigiert werden.
Gruß von Luschi
aus klein-Paris
Bild

Betrifft: AW: Objektfehler durch Wechsel in Modul
von: Michael
Geschrieben am: 03.01.2007 17:47:58
Autsch, das tut weh. Verdammtes Strg + C...
Vielen Dank, manchmal ist man wie blind...
 Bild
Excel-Beispiele zum Thema "Objektfehler durch Wechsel in Modul"
Menüleiste wechseln ListBox-Einträge auswechseln
Wechselweise den Eintrag einer 1 verhindern Zum nächsten Blatt wechseln
Aktiven Drucker in UserForm wechseln Farbe bei Mausberührung wechseln
Zwei Tabellen wechselseitig ändern Schriftart in Zeilen wechselweise fett/nicht-fett formatieren
Eine Serie von bestehenden Arbeitsblättern auswechseln Zwischen zwei UserForms wechseln, wobei sich die 1. Aktualisiert