ich bin noch relativ neu in der VBA Programmierung und habe Fragen zur Initialisierung einer userform.
Folgendes Ziel habe ich:
Ich habe eine Datenbank über mehrere Zeilen. Man soll über eine userform eine gewählte Zeile der Datenbank ändern können ohne alles erneut einzugeben.
Die Tabelle hat einen Button zur Änderung der Daten. Dieser öffnet eine userform welche eine Eingabe der gewünschten Zeile (die man ändern möchte) abfragt. Bestätigt man die Abfrage mit der gewünschten Zeile, öffnet sich eine 2te userform in der die Daten der gewünschten Zeile eingetragen sind.
Hier der Code der 1 userform für die Zeilenabfrage:
Private Sub btnCancel_Click()
Unload Me
End Sub
Private Sub btnOk_click()
Dim i As Long
i = TxtBox_Defekt_NR.Value
Overlay_EintragDefekt.Show
Unload Me
End Sub
Hier der Code der 2ten userform:
Private Sub btnCancel_Click()
Unload Me
End Sub
Private Sub btnOk_click()
'Startet ab Zeile 7
Dim lZeile As Variant
lZeile = Evaluate("=MATCH(TRUE,INDEX(D7:D1006="""",0,0),0)+6")
If IsNumeric(lZeile) Then
Application.GoTo Reference:=Cells(lZeile, 4)
'Sicherheitsabfrage
If TxtBox_Defekt_Name.Value = "" Then
MsgBox "Es wurde kein Gerät eingetragen. Bitte korrigieren!", _
vbExclamation
Exit Sub
Else
'Sicherheitsabfrage
If TxtBox_Defekt_Modell.Value = "" Then
MsgBox "Es wurde keine Modellnummer eingetragen. Bitte korrigieren!", _
vbExclamation
Exit Sub
Else
'Sicherheitsabfrage
If TxtBox_Defekt_SN.Value = "" Then
MsgBox "Es wurde keine Seriennummer (SN) eingetragen. Bitte korrigieren!", _
vbExclamation
Exit Sub
Else
'Sicherheitsabfrage
If TxtBox_Defekt_Defekt.Value = "" Then
MsgBox "Es wurde keine Beschreibung des Defekts eingetragen. Bitte _
korrigieren!", _
vbExclamation
Exit Sub
Else
'Werte auslesen und eintragen
ActiveCell.Offset(0, 0).Value = TxtBox_Defekt_Name
ActiveCell.Offset(0, 1).Value = TxtBox_Defekt_Modell
ActiveCell.Offset(0, 2).Value = TxtBox_Defekt_SN
ActiveCell.Offset(0, 3).Value = TxtBox_Defekt_Defekt
'Leert nach Eingabe die Textfelder
Dim ObCb As Object
For Each ObCb In Me.Controls
If TypeName(ObCb) = "TextBox" Then ObCb.Value = ""
Next ObCb
End If
End If
End If
End If
End If
Unload Me
End Sub
Private Sub UserForm_Initialize()
TxtBox_Defekt_Name = Cells(i, 4)
TxtBox_Defekt_Modell = Cells(i, 5)
TxtBox_Defekt_SN = Cells(i, 6)
TxtBox_Defekt_Defekt = Cells(i, 7)
End Sub
Mein Problem ist nun das der Code für die Initialisierung leider nicht funktioniert. Ich hätte gerne das die Variable i der gewünschten Zeilennummer entspricht und damit die Initialisierung der Daten aus der gewünschten Zeile erfolgen.Ich komme leider nicht weiter....
Vielleicht gibt es ja auch einen einfacheren Weg :D
LG Matthias
PS: Vielen Dank vorab für eure Hilfe :)