Hallo zusammen,
auch nach vielem Googlen und umschreiben und umdeklarieren und Error abfragen etc. komme ich nicht zum gewünschten Ziel. Ich habe eine Datenbank für Aufgaben erstellt in denen man Aufgaben mit folgenden Informationen füttern kann:
Über drei Buttons hinter denen Makros stehen kann man Aufgaben neu erstellen, bestehende Aufgaben bearbeiten oder Aufgaben löschen.
Mein problem entsteht bei den projektnummer, welche bei uns aus 4 Ziffern bestehen. Diese habe ich mit dem SOnderformat #### so formatiert, das eine 4 oder eine 50 als 0004 oder 0050 angezeigt wird. Wenn ich nun eine Aufgabe bearbeiten möchte mit einer Projektnummer mit eben einer 50 oder 4 bearbeiten möchte und diese dann speichere entsteht der Laufzeitfehler 91, da anscheinend bei der range und find prozedur die Zeile = 0 ist. Diese ist aber streng genommen nicht 0. Der Code sieht wie folgt aus.
Sub AufgabeChange_EingabeDB()
Call DB_unprotected
Call Eingabe_unprotected
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = tb_Datenbank.ListObjects(1)
Dim Zeile_1 As Long
'Prüfen ob Lesen oder bearbeiten
If tb_Eingabeformular.Shapes.Range(Array("txt_anlegen", "img_anlegen")).Visible = True Then
'Aufgabe erstellen
'Zeile hinzufügen
tbl.ListRows.Add
'Zeile in Variable speichern
Zeile_1 = tbl.DataBodyRange.Rows.Count
'Aufgabe bearbeiten
Else
Zeile_1 = Range("Tabelle1[Projektnummer]").Find(What:=tb_Eingabeformular.Range("D12").Value, LookIn:=xlValues, LookAt:=xlWhole).Row - tbl.HeaderRowRange.Row
End If
'Datenbank füllen
With tb_Eingabeformular
tbl.DataBodyRange(Zeile_1, 1).Value = .Range("D12") 'Einfügen der Projektnummer in die Datenbank
tbl.DataBodyRange(Zeile_1, 2).Value = .Range("E18") 'Einfügen der Projektnamens in die Datenbank
tbl.DataBodyRange(Zeile_1, 3).Value = .Range("E20") 'Einfügen der Aufgabensteller in die Datenbank
tbl.DataBodyRange(Zeile_1, 4).Value = .Range("E22") 'Einfügen der Tätigkeit in die Datenbank
tbl.DataBodyRange(Zeile_1, 5).Value = .Range("L18") 'Einfügen des bevorzugten Bearbeiters in die Datenbank
tbl.DataBodyRange(Zeile_1, 6).Value = .Range("L20") 'Einfügen der geschätzten Bearbeitungszeit in die Datenbank
tbl.DataBodyRange(Zeile_1, 7).Value = .Range("L22") 'Einfügen der Fälligkeit in die Datenbank
End With
Call DB_protect
Call Eingabe_protect
'Navigieren zu dem neuen Eintrag in der Datenbank
tb_Datenbank.Select
ActiveWindow.ScrollRow = tbl.DataBodyRange(Zeile_1, 1).Row
tbl.DataBodyRange(Zeile_1, 1).Select
End Sub
In der organgen Zeile entsteht der Fehler. Ich verstehe nur nicht genau wieso er entsteht. Ich vertsehe, dass eine deklaration fehlt. Aber Zeile_1 habe ich am Anfang deklariert udn auch wenn ich versuche über set ein Objekt zu erstellen, erzeuge ich nur andere Fehler. Vielleicht könnt ihr mir auf die Sprünge helfen.
Vielen Dank fürs Lesen und einen schönen Tag noch,
Lee
|