Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm - Daten bearbeiten

UserForm - Daten bearbeiten
24.11.2022 06:13:24
Michael
Ich habe eine UserForm erstellt, mit der ich Daten in ein Tabellenblatt einfüge.
Um die eingefügten Daten zu bearbeiten haben ich eine UserFormBearbeiten programmiert.
Beim Öffnen der UserFormBearbeiten sind die Felder auch befüllt und lassen sich manuell verändern und speichern (soweit so gut).
Ich hätte aber gerne, dass die beiden TextBoxen „Team und Dienstort“ automatisch ausgefüllt werden, wenn ich in der "ComboBoxKürzel" einen neuen Namen auswähle.
Irgendwo habe ich aber noch einen Denkfehler, könnt ihr mir helfen?
Wäre toll, wenn ihr den Fehler ausbessern könntet.
Option Explicit
Private p_aktuelleZeile As Long
Public Property Let aktuelleZeile(ByVal neueAktuelleZeile As Long)
p_aktuelleZeile = neueAktuelleZeile
End Property

Private Sub ButtonSpeichern_Click()
'Prüfung ob alle Felder befüllt sind
If TextBoxDatum.Value = "" Or TextBoxAnzahl.Value = "" Then
MsgBox "Bitte fülle alle Felder aus.", , ""
Exit Sub
End If
'Daten ins Tabellenblatt übernehmen
With shDaten
.Cells(p_aktuelleZeile, 1).Value = TextBoxID.Value
.Cells(p_aktuelleZeile, 2).Value = TextBoxDatum.Value
.Cells(p_aktuelleZeile, 3).Value = ComboBoxLeistung.Value
.Cells(p_aktuelleZeile, 4).Value = TextBoxAnzahl.Value
.Cells(p_aktuelleZeile, 5).Value = TextBoxReferent.Value
.Cells(p_aktuelleZeile, 6).Value = ComboBoxKürzel.Value
.Cells(p_aktuelleZeile, 7).Value = TextBoxTeam.Value
.Cells(p_aktuelleZeile, 8).Value = TextBoxDienstort.Value
End With
'UserForm schließen
Unload Me
End Sub

Private Sub UserForm_Activate()
'ComboBoxen befüllen
ComboBoxLeistung.List = shLeistungskatalog.ListObjects("tblLeistungskatalog").DataBodyRange.Value
Dim blnCODE As Boolean
blnCODE = True
ComboBoxKürzel.List = shPersonal.ListObjects("tblPersonal").DataBodyRange.Value
ComboBoxKürzel.ListIndex = 0
blnCODE = False
If Not blnCODE Then
TextBoxReferent = ComboBoxKürzel.Column(1)
TextBoxTeam = ComboBoxKürzel.Column(2)
TextBoxDienstort = ComboBoxKürzel.Column(3)
End If
'Daten laden
With shDaten
TextBoxID.Value = .Cells(p_aktuelleZeile, 1).Value
TextBoxDatum.Value = .Cells(p_aktuelleZeile, 2).Value
ComboBoxLeistung.Value = .Cells(p_aktuelleZeile, 3).Value
TextBoxAnzahl.Value = .Cells(p_aktuelleZeile, 4).Value
TextBoxReferent.Value = .Cells(p_aktuelleZeile, 5).Value
ComboBoxKürzel.Value = .Cells(p_aktuelleZeile, 6).Value
TextBoxTeam.Value = .Cells(p_aktuelleZeile, 7).Value
TextBoxDienstort.Value = .Cells(p_aktuelleZeile, 8).Value
End With
End Sub
Danke für die Hilfe!
LG
Michael

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm - Daten bearbeiten
24.11.2022 06:37:41
ralf_b
was steht denn im ComboBoxKürzel_Change oder ComboBoxKürzel_click ?
AW: UserForm - Daten bearbeiten
24.11.2022 08:02:04
Michael
Hallo Ralf!
Wenn ich den Code unten einfüge, kommt aber "Fehler beim Kompilieren: Variable nicht definiert
und wenn ich statt Change Click nehme kommt die gleiche Meldung?
Option Explicit
Private p_aktuelleZeile As Long
Public Property Let aktuelleZeile(ByVal neueAktuelleZeile As Long)
p_aktuelleZeile = neueAktuelleZeile
End Property

Private Sub ButtonSpeichern_Click()
'Prüfung ob alle Felder befüllt sind
If TextBoxDatum.Value = "" Or TextBoxAnzahl.Value = "" Then
MsgBox "Bitte fülle alle Felder aus.", , ""
Exit Sub
End If
'Daten ins Tabellenblatt übernehmen
With shDaten
.Cells(p_aktuelleZeile, 1).Value = TextBoxID.Value
.Cells(p_aktuelleZeile, 2).Value = TextBoxDatum.Value
.Cells(p_aktuelleZeile, 3).Value = ComboBoxLeistung.Value
.Cells(p_aktuelleZeile, 4).Value = TextBoxAnzahl.Value
.Cells(p_aktuelleZeile, 5).Value = TextBoxReferent.Value
.Cells(p_aktuelleZeile, 6).Value = ComboBoxKürzel.Value
.Cells(p_aktuelleZeile, 7).Value = TextBoxTeam.Value
.Cells(p_aktuelleZeile, 8).Value = TextBoxDienstort.Value
End With
'UserForm schließen
Unload Me
End Sub

Private Sub UserForm_Activate()
'ComboBoxen befüllen
ComboBoxLeistung.List = shLeistungskatalog.ListObjects("tblLeistungskatalog").DataBodyRange.Value
Dim blnCODE As Boolean
blnCODE = True
ComboBoxKürzel.List = shPersonal.ListObjects("tblPersonal").DataBodyRange.Value
ComboBoxKürzel.ListIndex = 0
blnCODE = False
If Not blnCODE Then
TextBoxReferent = ComboBoxKürzel.Column(1)
TextBoxTeam = ComboBoxKürzel.Column(2)
TextBoxDienstort = ComboBoxKürzel.Column(3)
End If
'Daten laden
With shDaten
TextBoxID.Value = .Cells(p_aktuelleZeile, 1).Value
TextBoxDatum.Value = .Cells(p_aktuelleZeile, 2).Value
ComboBoxLeistung.Value = .Cells(p_aktuelleZeile, 3).Value
TextBoxAnzahl.Value = .Cells(p_aktuelleZeile, 4).Value
TextBoxReferent.Value = .Cells(p_aktuelleZeile, 5).Value
ComboBoxKürzel.Value = .Cells(p_aktuelleZeile, 6).Value
TextBoxTeam.Value = .Cells(p_aktuelleZeile, 7).Value
TextBoxDienstort.Value = .Cells(p_aktuelleZeile, 8).Value
End With
End Sub

Private Sub ComboBoxKürzel_Change()
If Not blnCODE Then
TextBoxReferent = ComboBoxKürzel.Column(1)
TextBoxTeam = ComboBoxKürzel.Column(2)
TextBoxDienstort = ComboBoxKürzel.Column(3)
End If
End Sub

Anzeige
AW: UserForm - Daten bearbeiten
24.11.2022 13:13:48
Michael
Hallo Ralf!
Ok, hat sehr sehr lange gedauert, aber jetzt hat es gefunkt.
Hab deine Antwort glaub ich 100 Mal gelesen, bis ich drauf gekommen bin.
Jetzt geht es.
LG
Michael
AW: UserForm - Daten bearbeiten
24.11.2022 13:00:00
Michael
Hallo Ralf!
Aus meiner Sicht ComboBoxKürzel_Change
LG
Michael
AW: UserForm - Daten bearbeiten
24.11.2022 09:22:30
Alwin
Hallo Michael,
vielleicht so:

TextBoxReferent = ComboBoxKürzel.List(ComboBoxKürzel.ListIndex,0)
Gruß Uwe
AW: UserForm - Daten bearbeiten
24.11.2022 12:37:56
Michael
Hallo Uwe!
Hab es probiert, aber hat nicht funktioniert.
Danke trotzdem für deine Idee!
LG
Michael
AW: UserForm - Daten bearbeiten
24.11.2022 13:24:02
Alwin
Hallo,
zeige bitte, wie du die Combobox lädst. Du kannst so:

ComboBoxKürzel.Column(1)
keine Werte aus der Combobox in eine Variable übergeben, sondern nur via .value - was ausgewählt wurde oder .listindex - die aktivierte Zeilennummer der Liste beginnend bei 0.
Also entweder:

With ComboBox1
MsgBox .List(.ListIndex, 0)
End With
oder:

With ComboBox1
MsgBox .Value
End With
Gruß Uwe
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige