AW: Daten von Tabelle in Userform laden
29.03.2010 18:28:21
Tabelle
Hallo Fatih,
wie willst du denn die Zeile des anzuzeigenden Datensatzes im Userform2 auswählen?
Wenn du sehr wenige Daten hast, dann kann man man einfach in Zeile 2 anfangen und mit den Pfeiltasten aufwärts/abwärts zählen. Den Zeilenwert speicherst du in einer im Userform-Modul in der 1. Zeile als Private deklarierten Variablen.
Bei vielen Datensätzen sollte die Auswahl des Datensatzes in einer Liste (Kombobox oder Listbox) möglich sein.
Für das Einlesen der Tabellendaten ist eine eigene Subroutine erforderlich, die jeweils nach Änderung der Zeilen-Nr. von den beiden Pfeilbuttons gestartet wird.
Weiterer Hinweis: Wenn man die Eingabe-Steuerelemente per Tab-Taste ansteuert, dann ist die Reihenfolge etwas wild. Ändere für Comboboxen und Textboxen die Eigenschaft "Tabindex" beginnend von oben im UF aufsteigend von 0.
Gruß
Franz
'Prozedur für Userform2:
Option Explicit
Private ZeileAktuell As Long
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub DatenEinlesen()
With Worksheets("Daten")
Me.TextBox1.Value = .Cells(ZeileAktuell, 1).Value
Me.TextBox4.Value = .Cells(ZeileAktuell, 2).Value
Me.TextBox2.Value = .Cells(ZeileAktuell, 3).Value
Me.TextBox3.Value = "?" 'Name Vermittler
Me.TextBox5.Value = .Cells(ZeileAktuell, 4).Value
Me.TextBox6.Value = .Cells(ZeileAktuell, 5).Value
Me.TextBox7.Value = .Cells(ZeileAktuell, 6).Value
Me.TextBox8.Value = .Cells(ZeileAktuell, 7).Value
Me.TextBox9.Value = .Cells(ZeileAktuell, 8).Value
Me.TextBox10.Value = .Cells(ZeileAktuell, 9).Value
End With
End Sub
Private Sub CommandButton2_Click()
'Daten korrigieren
If MsgBox("Daten ändern?", vbQuestion, "Datensatz korrigieren") = vbYes Then
With Worksheets("Daten")
.Cells(ZeileAktuell, 1).Value = Me.TextBox1.Value
.Cells(ZeileAktuell, 2).Value = Me.TextBox4.Value
.Cells(ZeileAktuell, 3).Value = Me.TextBox2.Value
' .Cells(ZeileAktuell, ?).Value = Me.TextBox3.Value 'Name Vermittler
.Cells(ZeileAktuell, 4).Value = Me.TextBox5.Value
.Cells(ZeileAktuell, 5).Value = Me.TextBox6.Value
.Cells(ZeileAktuell, 6).Value = Me.TextBox7.Value
.Cells(ZeileAktuell, 7).Value = Me.TextBox8.Value
.Cells(ZeileAktuell, 8).Value = Me.TextBox9.Value
End With
' MsgBox ("Die Daten wurden geändert")
End If
End Sub
Private Sub CommandButton3_Click()
'Pfeil weiter
ZeileAktuell = ZeileAktuell + 1
With Worksheets("Daten")
If ZeileAktuell = 2 Then
Call DatenEinlesen
Else
MsgBox "1. Datensatz wird angezeigt", vbQuestion + vbOKOnly, "Datensatz zurück"
End If
End Sub
Private Sub UserForm_Initialize()
Worksheets("Daten").Activate
ZeileAktuell = 2
Call DatenEinlesen
End Sub