Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1668to1672
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

Über Userform Zellen ändern

Über Userform Zellen ändern
25.01.2019 07:35:34
Markus
Hallo zusammen,
ich arbeite zurzeit daran eine Kundendatenbank zu erstellen. Die Eingabe neuer Kunden sowie der Änderungen von Kundendaten möchte ich über Userformen erledigen. Für die Eingabe der Kunden hat dies auch wunderbar funktioniert. Jetzt möchte ich aber auch Kundendaten ändern. Hierzu rufe ich mir eine neue Userform auf. Über die Auswahl der Kundennummer in einer Combobox werden mir alle zugehörigen Kundendaten in den TextBoxen angezeigt. Jetzt möchte ich z.B die Anschrift eines Kunden ändern und unter der zugehörigen Kundennummer abspeichern über einen CommandButton. Da ich das letzte mal vor über 10 Jahren im Studium mit VBA gearbeitet habe, habe ich keine Idee wie ich die Einträge in der jeweiligen Zelle ablegen kann. Bisher sieht meine Code der Userform so aus:
Private Sub ComboBox_KdNr_Change()
'nach Auswahl Kundennummer in Combobox zugehörige Daten Anzeigen
Kunde_bearbeiten.TextBox_Name = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 1)
Kunde_bearbeiten.TextBox_ansprechpartner = Sheets("Kunden").Range("A:A").Find( _
Kunde_bearbeiten.ComboBox_KdNr.Value).Offset(0, 2)
Kunde_bearbeiten.TextBox_Stra?e = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 3)
Kunde_bearbeiten.TextBox_PLZ = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 4)
Kunde_bearbeiten.TextBox_Ort = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 5)
Kunde_bearbeiten.TextBox_Tel = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 6)
Kunde_bearbeiten.TextBox_Mobil = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 7)
Kunde_bearbeiten.TextBox_Fax = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 8)
Kunde_bearbeiten.TextBox_Mail = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 9)
Kunde_bearbeiten.TextBox_Art = Sheets("Kunden").Range("A:A").Find(Kunde_bearbeiten. _
ComboBox_KdNr.Value).Offset(0, 10)
End Sub
Private Sub CommandButton_Änderung_speichern_Click()
'Eingabe der Werte in Tabelle ?
End Sub

Private Sub UserForm_Initialize()
'Kundenauswahl in combobox
Dim lngZeileMax As Long
lngZeileMax = Sheets("Kunden").UsedRange.Rows.Count
With Me.ComboBox_KdNr
.RowSource = "Kunden!A2:A" & lngZeileMax
.Style = fmStyleDropDownList
.ListIndex = 0 'beginnt in der ersten Zeile
.ListRows = 5 '5 Kunden werden angezeigt dann dropdown
End With
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Über Userform Zellen ändern
25.01.2019 12:49:49
Rudi
Hallo,
erst mal:Verwende niemals Umlaute in VBA-Code (außer für Ausgaben etc.)
Private Sub ComboBox_KdNr_Change()
Dim lngRow As Long
lngRow = Application.Match(CLng(ComboBox_KdNr.Value), Sheets("Kunden").Range("A:A"), 0)
'nach Auswahl Kundennummer in Combobox zugehörige Daten Anzeigen
With Sheets("Kunden")
TextBox_Name = .Cells(lngRow, 2)
TextBox_Ansprechpartner = .Cells(lngRow, 3)
TextBox_Strasse = .Cells(lngRow, 4)
TextBox_PLZ = .Cells(lngRow, 5)
TextBox_Ort = .Cells(lngRow, 6)
TextBox_Tel = .Cells(lngRow, 7)
TextBox_Mobil = .Cells(lngRow, 8)
TextBox_Fax = .Cells(lngRow, 9)
TextBox_Mail = .Cells(lngRow, 10)
TextBox_Art = .Cells(lngRow, 11)
End With
End Sub

Private Sub CommandButton_Änderung_speichern_Click()
Dim lngRow As Long
lngRow = Application.Match(CLng(ComboBox_KdNr.Value), Sheets("Kunden").Range("A:A"), 0)
With Sheets("Kunden")
.Cells(lngRow, 3) = TextBox_Name
.Cells(lngRow,3) = TextBox_Ansprechpartner
'usw.
End With
End Sub

Gruß
Rudi
Anzeige
AW: Über Userform Zellen ändern
25.01.2019 17:12:37
Markus
Hallo Rudi,
vielen Dank für deine Antwort. Ich habe deinen Code mal eingegeben. Leider liefert er mir im Testlauf einen Laufzeitfehler '13' Typen unverträglich und markiert die Zeile lngRow= application.Match… gelb.
Woran könnte das liegen?
P.S. Das mit den Umlauten merke ich mir!
Gruß Markus
AW: Über Userform Zellen ändern
26.01.2019 18:08:32
Piet
Hallo Markus
ich bin mir nicht sicher ob ich den "richtigen Riecher" habe, sehe aber eine Fehler Möglichkeit die leicht zu beheben ist.
Frage ist, welches Makro versagt? - Ich vermute das CommandButton Makro!
Ein Fehler könnte m.E. passieren wenn du Speichern willst und der Wert der ComboBox ist Null!
Dann setze VOR den Befehl lngRow mit Mach zur Sicherheit diesen IF Befehl:
IF ComboBox_KdNr.Value = Empty Then Exit Sub
Ansonsten musst du weiter suchen ... Viel Glück
mfg Piet
Anzeige
AW: Über Userform Zellen ändern
27.01.2019 14:03:34
Markus
Hallo Piet,
vielen Dank für Deine Antwort. Zwischenzeitlich habe ich es in anderen Userformen hin bekommen, da läuft es einwandfrei. Die Userform liest die Werte der Tabelle aus und mit dem Button speichern ändern sich die Werte.
In der ersten Userform (siehe oben) kommt aber immer der Fehler.
Ich habe den Code jetzt nocheinmal komplette neu aufgesetzt und will erst mal nur die Werte der Tabelle auslesen, leider aber mit dem gleichen Ergebniss…
Ich erkenne aber keinen Schreibfehler...
P.S.:Die ComboBox hat immer einen Inhalt
Option Explicit
Private Sub ComboBox_KdNr_Change()
Dim lngrow As Long
lngrow = Application.Match(CLng(ComboBox_KdNr.Value), Sheets("Kunden").Range("A:A"), 0)
'nach Auswahl Kundennummer in Combobox zugeh?rige Daten Anzeigen
With Sheets("Kunden")
TextBox_Name = .Cells(lngrow, 2)
End With
End Sub

Private Sub UserForm_Initialize()
'Projektauswahl in combobox
Dim lngZeileMax As Long
lngZeileMax = Sheets("Kunden").UsedRange.Rows.Count
With Kunde_bearbeiten.ComboBox_KdNr
.RowSource = "Kunden!A2:A" & lngZeileMax
.Style = fmStyleDropDownList
.ListIndex = 0  'beginnt in der ersten Zeile
.ListRows = 5   '5 Nummern werden angezeigt dann dropdown
End With
End Sub

Anzeige
AW: Über Userform Zellen ändern
27.01.2019 14:03:35
Markus
Hallo Piet,
vielen Dank für Deine Antwort. Zwischenzeitlich habe ich es in anderen Userformen hin bekommen, da läuft es einwandfrei. Die Userform liest die Werte der Tabelle aus und mit dem Button speichern ändern sich die Werte.
In der ersten Userform (siehe oben) kommt aber immer der Fehler.
Ich habe den Code jetzt nocheinmal komplette neu aufgesetzt und will erst mal nur die Werte der Tabelle auslesen, leider aber mit dem gleichen Ergebniss…
Ich erkenne aber keinen Schreibfehler...
P.S.:Die ComboBox hat immer einen Inhalt
Option Explicit
Private Sub ComboBox_KdNr_Change()
Dim lngrow As Long
lngrow = Application.Match(CLng(ComboBox_KdNr.Value), Sheets("Kunden").Range("A:A"), 0)
'nach Auswahl Kundennummer in Combobox zugeh?rige Daten Anzeigen
With Sheets("Kunden")
TextBox_Name = .Cells(lngrow, 2)
End With
End Sub

Private Sub UserForm_Initialize()
'Projektauswahl in combobox
Dim lngZeileMax As Long
lngZeileMax = Sheets("Kunden").UsedRange.Rows.Count
With Kunde_bearbeiten.ComboBox_KdNr
.RowSource = "Kunden!A2:A" & lngZeileMax
.Style = fmStyleDropDownList
.ListIndex = 0  'beginnt in der ersten Zeile
.ListRows = 5   '5 Nummern werden angezeigt dann dropdown
End With
End Sub

Anzeige
AW: Über Userform Zellen ändern
27.01.2019 20:55:56
Piet
Hallo Markus
aus der Ferne ist es immer schwierig den wahren Fehler zu finden, man sieht die Datei nicht vor sich!
Eine Möglichkeit ist die Frage, was steht in der ComboBox? - Eine Zahl oder Text? Du hast deine Variable als Long deklariert!
Wenn es daran nicht liegt waere evtl. eine Beispieldatei von Vorteil, damit man den Fehler direkt in der Datei suchen kann.
mfg Piet
AW: Über Userform Zellen ändern
28.01.2019 07:16:45
Markus
Hallo Piet,
vielen Dank für deine Antwort.
Mit der Wegnahme von Clng klappt es nun. Leider verstehe ich es nicht ganz, da es in anderen Userfomen mit Clng funktioniert hat (in allen Comboboxen waren Zahlen). Aber egal es geht und das ist wichtig. Vielen Dank für die Hilfe.
Nun habe ich ein weiteres Problem und hierzu mal die Datei hochgeladen. Ich möchte in der Userform Projekt_bearbeiten in der Combobox_Kunde die Möglichkeit haben den Kunden zu ändern und diesen aus den Kunden in Tabellenblatt "Kunden" (Spalte B) auswählen. Leider habe ich den enstprechenden Code noch nicht heraus bekommen. Ist dies überhaupt möglich?
Viele Grüße
Markus
https://www.herber.de/bbs/user/127194.xlsm
Anzeige
AW: Über Userform Zellen ändern
28.01.2019 16:55:30
Piet
Hallo Markus
wenn du den Code für die Initialisierung der UserForm in "Projekt_bearbeiten" wechselst sollte es klappen.
Damit du die Aenderung siehst habe ich sie mit ** markiert, eine zusaetzliche For Next Schleife.
Die Anzahl der Zeilen (Kunden) sucht sich das Makro selbst übe die LastZell in Kunden Spalte A
mfg Piet
Private Sub UserForm_Initialize()
'Projektauswahl in combobox
Dim lngZeileMax As Long, j As Long
lngZeileMax = Sheets("Projekte").UsedRange.Rows.Count
With Projekt_bearbeiten.ComboBox_PjNr
.RowSource = "Projekte!A2:A" & lngZeileMax
.Style = fmStyleDropDownList
.ListIndex = 0  'beginnt in der ersten Zeile
.ListRows = 5   '5 Nummern werden angezeigt dann dropdown
End With
'** neu eingefügt:  Kunden ComboBox  28.1.2019  Piet
With Projekt_bearbeiten.ComboBox_Kunde
lngZeileMax = Sheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To lngZeileMax
.AddItem Sheets("Kunden").Cells(j, 2).Value
Next j
End With
'Combobox Auftragsart füllen
With Projekt_bearbeiten.ComboBox_A_Art
.AddItem "Beratung"
.AddItem "Prüfung"
.AddItem "Gutachten"
End With
'Combobox Bauart füllen
With Projekt_bearbeiten.ComboBox_B_Art
.AddItem "Holzrahmenbau"
.AddItem "sonst. Holzbau"
.AddItem "Mauerwerksbau"
.AddItem "Stahlbetonbau"
.AddItem "Stahlbau"
.AddItem "sonst. Hochbau gemischt"
.AddItem "Fassadengerüst"
.AddItem "Raumgerüst"
.AddItem "Traggerüst"
.AddItem "Sonderkonstruktion"
.ListRows = 5
End With
'Combobox Abrechnung füllen
With Projekt_bearbeiten.ComboBox_Abrechnung
.AddItem "nach Aufwand"
.AddItem "nach Angebot"
.AddItem "nach HOAI"
.AddItem "Pauschal"
.ListRows = 5
End With
End Sub

Anzeige
AW: Über Userform Zellen ändern
28.01.2019 20:32:04
Markus
Hallo Piet,
danke für die Antwort. Habe es auf eine andere Art hinbekommen, da ich zuerst nicht die Änderung "Dim... j as Long" gesehen habe (...da hat es nicht funktioniert...)
Habe einfach geschrieben:
With Projekt_bearbeiten.ComboBox_Kunde
lngZeilemax = Sheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row
.RowSource = "Kunden!B2:B" & lngZeilemax
End With
und schon lief es...
Aber nochmal Vielen Dank für deine Hilfe!!!
Viele Grüße
Markus
AW: Über Userform Zellen ändern
27.01.2019 20:58:27
Piet
Nachtrag
wenn es beides sein kann, mal Zahl, mal Text, dann deklariere die Variable bitte mal als Variant!
Kannst du auch so mal ausprobieren, und das CLng vor der ComboBox im Match Befehl heraus nehmen.
mfg Piet
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige