Hallo.
Falls noch Interesse besteht, hier eine kleines Beispiel zum nachbauen (am besten erst einmal eine neue Datein nehmen):
Auf dem Tabellenblatt Tabelle1
Bitte schreibe in den Zellen A1 bis E1 den Text „Überschrift A1“ bis „Überschrift E1“.
Bitte schreibe in den Bereich A2 bis E20 die Texte „Wert A2“ bis „Wert E20“.
Füge dem Tabellenblatt eine Befehlsschaltfläche aus der Steuerelemente-Toolbox hinzu mit dem Namen „CommandButton1“
Im VisualBasic Editor
Füge dem Projekt ein UserForm mit dem Namen „UserForm1“ hinzu.
Füge UserForm1 fünf Bezeichnungsfelder hinzu mit den Namen „Label1“ bis „Label5“
Füge UserForm1 fünf Textfelder hinzu mit den Namen „TextBox1“ bis „Textbox5“
Füge UserForm1 eine Befehlsschaltfläche hinzu mit dem Namen „CommandButton1“.
Lege die Caption-Eigenschaft von CommandButton1 fest auf „Ok“.
Lege die Accelerator-Eigenschaft von CommandButton1 fest auf „o“.
Füge UserForm1 eine Befehlsschaltfläche hinzu mit dem Namen „CommandButton2“
Lege die Caption-Eigenschaft von CommandButton2 fest auf „Abbrechen“.
Lege die Accelerator-Eigenschaft von CommandButton2 fest auf „a“.
Lege die Cancel-Eigenschaft von CommandButton2 fest auf True.
Füge UserForm1 einen SpinButton hinzu mit dem Namen „SpinButton1“.
Kopiere folgenden Code in das Codefenster von UserForm1:
Private Sub CommandButton1\_Click()
Unload Me
End Sub
Private Sub CommandButton2\_Click()
Data.Changed = False
Unload Me
End Sub
Private Sub SpinButton1\_Change()
Call WriteDataValues(SpinButton1.Value)
End Sub
Private Sub UserForm\_Initialize()
SpinButton1.Min = Data.FirstRow
SpinButton1.Max = Data.LastRow
SpinButton1.SmallChange = 1
Call WriteDataCaptions
Call WriteDataValues(SpinButton1.Min)
End Sub
Private Sub WriteDataCaptions()
For i = Data.FirstCol To Data.LastCol
Me.Controls("Label" & CStr(i)).Caption = Data.Captions(i)
Next
End Sub
Private Sub WriteDataValues(Optional ByVal r As Integer = 1)
For c = Data.FirstCol To Data.LastCol
Me.Controls("TextBox" & CStr(c)).Text = Data.Values(r, c)
Next
End Sub
Füge dem Projekt ein Modul hinzu.
Kopiere folgenden Code in das Codefenster des Moduls:
Public Type typData
Changed As Boolean
FirstCol As Integer
LastCol As Integer
FirstRow As Integer
LastRow As Integer
Captions() As String
Values() As String
End Type
Public Data As typData
Kopiere den folgenden Code in das Codefenster von Tabelle1:
Private Sub CommandButton1\_Click()
Call DataEdit
End Sub
Private Sub DataEdit()
Data.FirstCol = 1
Data.LastCol = 5
Data.FirstRow = 2
Data.LastRow = 20
ReDim Data.Captions(Data.FirstCol To Data.LastCol)
For i = Data.FirstCol To Data.LastCol
Data.Captions(i) = CStr(Tabelle1.Cells(1, i))
Next
ReDim Data.Values(Data.FirstRow To Data.LastRow, Data.FirstCol To Data.LastCol)
For r = Data.FirstRow To Data.LastRow
For c = Data.FirstCol To Data.LastCol
Data.Values(r, c) = CStr(Tabelle1.Cells(r, c))
Next c
Next r
Dim nf As New UserForm1
nf.Show vbModal
If Data.Changed = False Then Exit Sub
MsgBox "Die Daten wurden verändert"
'ToDo: Code schreiben, der die veränderten Daten ins Tabellenblatt zurückschreibt
End Sub
Klicke im Menü „Debuggen“ auf „Kompilieren“ (Wenn keine Fehler-Meldung angezeigt wird, sollte die ganze Geschichte funktionieren).
Deaktiviere gegebenenfalls den Entwurfsmodus
Gehe bitte zurück nach Excel in Tabelle1 und klicke auf CommandButton1.
Es sollte jetzt UserForm1 angezeigt werden. Du kannst dort mit dem SpinButton durch die Zeilen 2 bis 20 navigieren.
Soweit vorerst. Ich lasse den gesamten Code erstmal unerklärt, da ich nicht genau weiß, ob die Funktionalität Deinen Vorstellungen entspricht. Du kannst Dich ja 'mal dazu äußern.
VG
Carsten