Methode default range fehlgeschlagen
15.10.2015 09:10:34
Stefan
ich bin neu im VBA programmieren.
In der Ausbildung hatte ich die Programmierung von Siemens Logo und S7, deshalb kann ich mich zumindest ein wenig eindenken.
Alles was mit VBA zu tun hat habe ich aus einem Einsteigerbuch, Foren und dem Makro-Rekorder.
Jetzt hänge ich aber fest und komme nicht ohne direkte Hilfe weiter.
Ich schreibe für mein Ehrenamt einen Stundenzettel. Diesen Zettel gibt es als Datei für jeden Ehrenamtlichen, in dieser Datei ist für jeden Monat ein extra Tabellenblatt.
Unterschieden wird bei der Abrechnung noch um es sich um Nacht- oder Tagesbetreuung handelt und ob diese in Wolfen oder Bitterfeld (2 Arbeitsorte) stattfand.
Jetzt möchte ich für nächstes Jahr eine Datei erstellen, die eine Übersicht gibt, welcher Ehrenamtliche in welchem Monat wie viel Stunden am Tag bzw. in der Nacht geleistet hat.
Eine Tabelle in dieser Datei für Bitterfeld, eine für Wolfen und eine gesamte.
Jetzt zur Theorie.
Mein Grundgedanke der VBA hatte diese Struktur:
- Wenn ein Stundenzettel gespeichert wird, dieses Makro starten
- Name des Ehrenamtlichen in eine Variable speichern
- Stunden BTF, Stunden WO, Nächte BTF und Nächte WO pro Monat in ein Array speichern
- Die Datei Budget öffnen
- Den Namen des Ehrenamtlichen suchen
- Ist er nicht vorhanden, neue Zeile an alphabetisch richtiger Stelle erstellen
- Auf den einzelnen Tabellenblättern anhand des Arrays alles eintragen
- Speichern ( Budget ) , ohne zu fragen
- Schließen( Budget ) , ohne zu fragen
So, und voller Stolz kann ich berichten, dass es funktioniert. AUßER: wenn ich einen Stundenzettel neu öffne und zum ersten mal Speichere, dann bringt er mir Die Methode _Default für das Objekt Range ist fehlgeschlagen.
Beende oder Debugge ich an dieser Stelle und speichere ein zweites mal, läuft das Programm ganz sauber durch und funktioniert von der ersten bis zur letzten Zeile. (Die Datei Budget habe ich zwischendurch wieder ohne zu speichern von Hand geschlossen, also hat sie die selbe Ausgangslage)
Jetzt die wichtigen Codezeilen
Dim gesamtName As String
Dim Uebertrag(0 To 12, 1 To 4) As Single
Dim ZeileName As Range
Dim ZeileName2 As Integer
For i = 1 To 12
Uebertrag(i - 1, 1) = Sheets(1 + i).Range("T47") 'Stunden Wolfen
Uebertrag(i - 1, 2) = Sheets(1 + i).Range("T48") 'Stunden Bitterfeld
Uebertrag(i - 1, 3) = Sheets(1 + i).Range("V47") 'Nächte Wolfen
Uebertrag(i - 1, 4) = Sheets(1 + i).Range("V48") 'Nächte Bitterfeld
Next i
Workbooks("Budget Ehrenamtliche.xlsm").Sheets(1).Activate ' Wolfen auswählen
Set ZeileName = Columns(1).Find(what:=gesamtName, Lookat:=xlWhole)
ZeileName2 = ZeileName.Row
For l = 1 To 12
Cells(ZeileName2 + 0, l + 3) = Uebertrag(l, 1) 'Stunden Wolfen (In dieser Zeile kommt der Fehler)
Cells(ZeileName2 + 1, l + 3) = Uebertrag(l, 3) 'Nächte Wolfen
Cells(ZeileName2 + 2, l + 3) = Uebertrag(l, 1) + Uebertrag(l, 3) 'Gesamt Wolfen
Next l
Habt ihr eine Idee wo das Problem liegt?