Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
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

Eintrag in UserForm laden und berbeiten

Eintrag in UserForm laden und berbeiten
05.05.2022 09:27:16
Mago
Guten Tag,
ich habe eine UserForm erstellt, welche mir eine Datensammlung erstellt.
Das heißt jeder Eintrag der Userform wird automatisch chronologisch untereinander in einer Tabelle aufgelistet. (siehe Bildlink)
Nun möchte ich ein "Bearbeiten" Makro/Button erstellen. Dieser soll es mir ermöglichen wenn ich auf die Zeile mit dem Eintrag klicke und dann den Button "Bearbeiten" betätige, dass diese Daten in die UserForm geladen werden und ich diese somit überarbeiten kann.
Ich wäre sehr erfreut über eure Hilfe! Vielen Dank!
Userbild
Userbild

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eintrag in UserForm laden und berbeiten
05.05.2022 09:55:08
ralf_b
erstelle dir eine modulweit gültige Variable vom Typ long, die du im initialize der Userform mit der aktuellen Zeilennummer füllst. z.b. aktrow = activecell.row
Beim Speichern dann diese Variable nutzen um die Zellen anzusprechen. so z.b. cells(lrow,1) = textboxXY.value
Wenn du sicherstellst das während der Bearbeitung zwischenzeitlich niemand die aktive Zelle oder das aktive Blatt ändert, kannst du auch direkt die Activecell nutzen um die Werte in die richtige Zeile zurückzuschreiben.
AW: Eintrag in UserForm laden und berbeiten
05.05.2022 11:25:47
Mago
Hallo Ralf, danke für deine Antwort
jedoch bin ich nicht vorangekommen. Ich probiere es mal ausführlicher zu erklären.
ich habe eine Userform erstellt womit ich eine Datenbank erzeuge. Die Userform dient als Eingabemaske und übernimmt die Daten chronologisch in eine Tabelle in die letzte freie Zeile. Nun möchte ich eine beliebige Zeile in der Tabelle auswählen, diese Daten aus dieser Zeile (mit verschiedener Informantion aus 9 Spalten, wie zb Datum, Name usw..) sollen zurück in meine UserForm (Eingabemaske) geladen werden, damit ich diese nun überarbeiten kann und die "korrigierte" Daten wieder in die selbe Zeile überschreiben kann.
Ich habe meinen Code mal für die UserForm und die Eingabetaste aufgeführt:

Private Sub UserForm_Initialize()
'Pm
TextBoxPm.Value = ActiveSheet.Name
TextBoxPm.Enabled = False
'WT
'Position
Dim i3 As Integer
With ComboBox_Position
For i3 = 1 To 14
.AddItem CInt(i3)
Next
End With
'Aktion
'0% Yield
'Lauf
'Name
TextBox_Name.Value = Application.UserName
TextBox_Name.Enabled = False
'Datum
TextBox_Datum.Value = Now
TextBox_Datum.Enabled = False
End Sub

Private Sub CommandButton_Eingabe_Click()
'Eingabe untereinander
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
If UserForm.TextBox_WT.Value = "" And UserForm.TextBoxBemerkung.Value = "Administrator" Then Sheets("Einstellungen").Visible = True: GoTo ENDE
'Pm
Cells(last, 1).Value = UserForm.TextBoxPm.Value
'WT
Cells(last, 2).Value = Format(UserForm.TextBox_WT, "000")
'Position
Cells(last, 3).Value = Format(UserForm.ComboBox_Position, "0000")
'Aktion
If CheckBox7.Value = True Then Cells(last, 4).Value = "Aus Anlage entnommen"
If CheckBox8.Value = True Then Cells(last, 4).Value = "In Anlage eingesetzt"
If CheckBox5.Value = True Then Cells(last, 4).Value = "Austausch"
If CheckBox6.Value = True Then Cells(last, 4).Value = "Reinigung"
If CheckBox5.Value = True And CheckBox6.Value = True Then
Cells(last, 4).Value = "Austausch und Reinigung"
End If
'O% Yield
If CheckBox1.Value = True Then Cells(last, 5).Value = "Ja"
If CheckBox2.Value = True Then Cells(last, 5).Value = "Nein"
If Cells(last, 5).Value = "Ja" Then Cells(last, 5).Interior.Color = vbRed
'Lauf
If CheckBox3.Value = True Then Cells(last, 6).Value = "Links"
If CheckBox4.Value = True Then Cells(last, 6).Value = "Rechts"
'Bemerkung
Cells(last, 7).Value = TextBoxBemerkung.Value
'Name
Cells(last, 8).Value = TextBox_Name.Value
'Datum
Cells(last, 9).Value = TextBox_Datum.Value
'Nach Eingabe Click UserForm schließen
ENDE:
Unload UserForm
ThisWorkbook.Save

Anzeige
AW: Eintrag in UserForm laden und berbeiten
05.05.2022 11:53:32
ralf_b
Ja, ich habe verstanden was du grundsätzlich vorhast. Der Ablauf wie du die Userform öffnest ändert nichts daran, das du irgendwie festhalten oder feststellen mußt aus welcher Zeile du den Datensatz geholt hast, um ihn später geändert abspeichern zu können.
Aus deiner Beschreibung entnehme ich das die Userform dauerthaft geöffnet sein soll und du trotzdem noch in der Tabelle klicken können willst.
Vom Handling her würde ich dieses Vorgehen als hybrid beschreiben. Denn entweder man arbeitet in der Userform oder in der Tabelle.
Leider fehlt deiner Userform eine Datensatzauflistung, um zwischen den Datensätzen zu wechseln. Wenn du das noch einbauen würdest, dann wärest du unabhängig von der Tabelle. Bei solchen Fragen macht sich eine Beispieldatei mit der Userform ganz gut. Denn ohne zugehörige Tabelle macht so eine Codeberatung wenig Sinn.
Anzeige
AW: Eintrag in UserForm laden und berbeiten
05.05.2022 15:01:48
ralf_b
Eine Beispieldatei enthält Beispieldaten. Ok, als Praktikant kann man das vielleicht (noch) nicht wissen. Aber dann solltest du vielleicht nicht mit VBA-Kenntnissen werben. Schon gar nicht wenn ich mir den Code so ansehe.
Zu deinem Projekt:
Arbeitest du dort absichtlich mit einer intelligenten Tabelle als Datenbank oder ist das nur in der Beispieldatei so?
Bei intelligenten Tabellen funktioniert Cells(Rows.count,1).end(xlup) nicht und es biete sich an mit Listobject-Referenzen zu arbeiten.
Willst du tatsächlich diesen Mischmasch mit Controls auf dem Tabellenblatt und einer Userform? Normalerweise enthält eine Datenmaske bereits die Buttons für neuen Datensatz, Löschen, Ändern usw.
Also es fehlen noch Beispieldaten und die Antworten.
gruß
rb
Anzeige
AW: Eintrag in UserForm laden und berbeiten
05.05.2022 15:32:10
Mago
ich arbeite mit powerquery für die Datenbank, die Daten der Eingabemaske werden zwischengespeichert als csv dateien und mit powerquery in eine Datenbank zusammengeführt. Die Datei die ich geschickt habe ist sozusagen NUR die Eingabemaske, dort soll eigentlich nicht weiter gefiltert werden usw sondern lediglich Einträge vorgenommen und FALLS fehlerhafte Eingabe korrigiert werden.
https://www.herber.de/bbs/user/152894.xlsm
AW: Eintrag in UserForm laden und berbeiten
05.05.2022 17:57:46
ralf_b
wie dem auch sei,
ich habe die Funktion mal reingebastelt. Die Datensatzauswahl erfolgt über die Combobox oben rechts.
Bei Fragen dazu, erst den Code debuggen oder die Objektreferenz bemühen. Das bringt mehr als ewiges Erklären.
https://www.herber.de/bbs/user/152898.xlsm
Anzeige
AW: Eintrag in UserForm laden und berbeiten
05.05.2022 18:10:17
Mago
Super Ralf, ich werd es morgen auf der Arbeit gleich mal ausprobieren.
Ich danke dir sehr!
Gruß
morgen ist vorbei..... und?
09.05.2022 18:14:03
ralf_b
AW: morgen ist vorbei..... und?
09.05.2022 20:26:18
Mago
Grüß dich Ralf,
hat alles super funktioniert, ich hab deinen code bzw die userform dann doch nochmal auf zwei aufgeteilt, einmal für einen neuen Eintrag und einmal für Eintrag bearbeiten, weil ich die Funktionen separat haben wollte.
Einziges Problem das ich sehe ist bei der ComboBox, bei Auswahl der Zeile, da natürlich noch sehr viele Einträge hinzukommen und die Tabelle sehr lang werden kann. Ich würd es gern wollen dass er die markierte Zeile automatisch oben rechts angibt bei der Userform und dementsprechend die Werte dann von der markierten Zeile eingelesen werden.
Aber auch ohne das kann ich gut mit leben.
Danke dir und einen schönen Abend!
Anzeige
AW: morgen ist vorbei..... und?
09.05.2022 20:40:46
ralf_b
Die Combobox ist nur ein Workaround weil nicht klar war was in der Tabelle der Datensatzindikator ist. Du kannst dir irgend ein Control nehmen und die aktuelle Zeile da reinschreiben. Auch unsichtbar. Oder halt eine Variable definieren. Ist ja alles nur Geschmacksache.
Meine Datenmasken gestalte ich meistens über eine zentrale Listbox für die Datensatzanzeige und eine Textbox für einen Filter. Die Eingabe/Ändern - Felder sind dann unten drunter.
AW: morgen ist vorbei..... und?
10.05.2022 08:43:27
Mago
Ja genau, ich werde es jetzt aber so lassen, wie du es gemacht hast. Das sollte komplett ausreichend sein, bevor ich alles durcheinander bringe..
Anzeige
AW: morgen ist vorbei..... und?
10.05.2022 09:43:14
Mago
Hi Ralf, könntest du mir vielleicht noch dabei helfen eine weitere Sache umzusetzen? Ich würde gerne wollen, dass es irgendwie markiert oder angemerkt ist, wenn man einen Eintrag verändert hat. Am besten durch eine Notiz mit "Eintrag bearbeitet am xx.xx.xxxx"
Änderung verfolgen
10.05.2022 16:17:00
ralf_b
Naja, du hast excel 365. Dann liegt die Datei möglicherweise auf einem Sharepointspeicher. Der speichert den Versionsverlauf. Somit hast du bereits deine Änderungsverfolgung.
Verstehe ich dich richtig das diese Änderungsaufzeichnung eher unsichtbar erfolgen soll?
AW: Änderung verfolgen
11.05.2022 09:41:14
Mago
Ich hab es jetzt so gelöst, dass jedesmal wenn ich den "Eintrag bearbeiten" button klicke und sich die Userform öffnet, beim Textfeld Bemerkung "Dieser Eintrag wurde von XXXX am xx.xx.xxxx bearbeitet" als gesperrten Text drin stehen hab. Das ganze sieht dann so aus wie auf dem Upload.
Userbild
Anzeige
ein Tip....
11.05.2022 16:44:40
ralf_b
Benutze statt Checkboxen Optionbuttons für Entweder-Oder Werte wie bei Lauf und Yield. das dürfte dir bei der Programmierung auch weniger Aufwand bereiten.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige