Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1724to1728
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 - Geänderte/Ergänzte Daten in neues Tabellenblatt

Userform - Geänderte/Ergänzte Daten in neues Tabellenblatt
21.11.2019 10:03:31
Alex
Hallo zusammen,
ich schon wieder. Ich habe eine Userform mit der ich Daten in einer Tabelle suchen und ändern/ergänzen kann. Da die Exceldatei jeden Abend von einer weiteren Software eingelesen wird um die Daten zu aktualisieren, möchte ich diesen Schritt für die Software vereinfachen indem ich die Zeilen, welche an dem Tag verändert wurden, in ein neues Tabellenblatt kopiere. Wie könnte ich da vorgehen?
Kurze Randinfo. Die "weitere Software" erstellt die Exceldatei jeden Tag neu, sprich das Marko muss das Tabellenblatt für die geänderten Zeilen jeden Tag neu erstellen.
Tabelle mit Daten:
https://www.herber.de/bbs/user/133344.xlsx
Datei zum starten der Userform:
https://www.herber.de/bbs/user/133343.xlsm
Gruß Alex

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

Betreff
Datum
Anwender
Anzeige
AW: Doppelt
21.11.2019 10:11:02
Alex
Moin Hajo,
es geht in diesem Beitrag aber nicht mehr um das Problem des alten Beitrags.
Gruß Alex
AW: Userform - Geänderte/Ergänzte Daten in neues Tabellenblatt
21.11.2019 22:53:37
Piet
Hallo Alex
die einfachste Möglichkeit ist, in der Datentabelle eine zweite Tabelle "Änderungen" einzufügen und dort alle Änderungen mit abzuspeichern. Den Code habe ich dafür mal geaendert.
mfg Piet
Private Sub Button_Abbrechen_Click()
ActiveWorkbook.Close
Unload Me
End Sub
Private Sub Button_ändern_Click()
Dim lngZeile As Long
Dim i As Long
'Zuerst prüfen ob ein Datensatz im Listenfeld markiert ist
If Me.ListBox1.ListIndex >= 0 Then
'With tbl_Artikel  'Internes Inventur Blatt
With ActiveSheet   'geöffnete Inventur Datei!
lngZeile = .Cells(Rows.Count, 1).End(xlUp).Row
'Datensatz in tbl_Artikel suchen
For i = 1 To lngZeile + 1
If .Cells(i, 1).Text = CStr(Me.ListBox1.Value) Then Exit For
Next i
If i  0 Then
Me.ListBox1.AddItem .Cells(lngZeile, 1).Text           'Daten aus Zellen holen und in  _
ListBox anzeigen
Me.ListBox1.Column(1, i) = .Cells(lngZeile, 2).Value
Me.ListBox1.Column(2, i) = .Cells(lngZeile, 6).Value
Me.ListBox1.Column(3, i) = .Cells(lngZeile, 4).Value
Me.ListBox1.Column(4, i) = .Cells(lngZeile, 20).Text
Me.ListBox1.Column(5, i) = .Cells(lngZeile, 21).Text
Me.ListBox1.Column(6, i) = .Cells(lngZeile, 22).Value
Me.ListBox1.Column(7, i) = .Cells(lngZeile, 17).Value
Me.ListBox1.Column(8, i) = .Cells(lngZeile, 18).Value
Me.ListBox1.Column(9, i) = lngZeile
i = i + 1
End If
Next lngZeile
End With
End Sub
Private Sub Button_Suchen2_Click()
Dim lngZeile As Long
Dim lngZeileMx As Long
Dim i As Integer
Me.ListBox1.Clear
With ActiveSheet
lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
For lngZeile = 1 To lngZeileMax
If InStr(LCase(.Cells(lngZeile, 2).Text), _
LCase(Me.TextBox2.Text)) > 0 Then
Me.ListBox1.AddItem .Cells(lngZeile, 1).Text
Me.ListBox1.Column(1, i) = .Cells(lngZeile, 2).Value
Me.ListBox1.Column(2, i) = .Cells(lngZeile, 6).Value
Me.ListBox1.Column(3, i) = .Cells(lngZeile, 4).Value
Me.ListBox1.Column(4, i) = .Cells(lngZeile, 20).Text
Me.ListBox1.Column(5, i) = .Cells(lngZeile, 21).Text
Me.ListBox1.Column(6, i) = .Cells(lngZeile, 22).Value
Me.ListBox1.Column(7, i) = .Cells(lngZeile, 17).Value
Me.ListBox1.Column(8, i) = .Cells(lngZeile, 18).Value
Me.ListBox1.Column(9, i) = lngZeile
i = i + 1
End If
Next lngZeile
End With
End Sub
Private Sub ListBox1_Click() 'Per Klick die Daten aus der ListBox in das Formular übertagen
Dim lngZeile As Long
Dim i As Long
lngZeile = Me.ListBox1.Column(9, Me.ListBox1.ListIndex)
'With tbl_Artikel  'Internes Inventur Blatt
With ActiveSheet   'geöffnete Inventur Datei!
For i = 1 To 8
Me.Controls("TextBox" & i).Text = .Cells(lngZeile, i).Text
Next i
Me.Controls("TextBox6").Value = .Cells(lngZeile, 6).Value
Me.Controls("TextBox17").Value = .Cells(lngZeile, 17).Value
Me.Controls("TextBox18").Value = .Cells(lngZeile, 18).Value
'Aktuelles Datum / Zeit / Aktiver Benutzer automatisch in Formular einfügen
Die_Inventur.TextBox20 = Date
Die_Inventur.TextBox21 = Time
Die_Inventur.TextBox22 = Environ("username")
End With
End Sub
Private Sub UserForm_Initialize()
'ListBox erstellen
With Me.ListBox1
.ColumnCount = 9
.ColumnWidths = "120;180;60;70;90;80;93;60;50"
.TextAlign = fmTextAlignCenter
End With
'Cursor standardmäßig in die erste Textbox setzen
Me.TextBox1.SetFocus
Me.Caption = ActiveWindow.Caption
End Sub

Anzeige
AW: Userform - Geänderte/Ergänzte Daten in neues Tabellenblatt
22.11.2019 09:19:20
Alex
Moin Piet,
wenn ich ein extra Tabellenblatt einfüge funktioniert die Suche der Artikel nicht mehr, da das Tool immer versucht in dem leeren Blatt zu suchen. Ich werde mich die Tage jetzt nochmal ran setzen um das zu beheben. Danke erstmal für deinen Lösungsvorschlag. Melde mich wenn es geklappt hat.
Gruß Alex
AW: Userform - Geänderte/Ergänzte Daten in neues Tabellenblatt
22.11.2019 13:24:19
Piet
Hallo Alex
bitte vergleiche den Code in deinem Beispiel das du hochgeladen hast noch einmal Zeile für Zeile mit dem zon mir zuletzt gesendetem Code. Ihr habt an einigen Stellen meinen Original Code so geaendert, das diese Sache auch bei mir nicht mehr einwandfrei funktionierte!
Im Original war per MsgBox eine Sheet Auswahl vorgesehen, wenn das falsche Blatt aktiviert ist! In dem Codeteil darf aber KEIN Application.ScreenUpdating = False vorkommen, weil man sonst das umgeschaltete Blatt NICHT sehen kann. Bildschirm abgeschaltet! Es gab auch noch ein paar andere Programmierfehler, wo ein zusammengesetzter Befehl verwendet wurde, der bei Excel so nicht vorkommt. Da kann man nicht wissen oder vorhersagen wie Excel darauf reagiert.
Bitte meinen letzten Code als Gesamt Code noch mal testen. Am besten in einer zweiten Beispieldatei.
mfg Piet
Anzeige
AW: Userform - Geänderte/Ergänzte Daten in neues Tabellenblatt
22.11.2019 13:28:30
Piet
Nachtrag
man kann ja alternativ wenn das Inventurblatt IMMER an erster Stelle steht beim Öffnen der Datei und VOR dem Start der Userform den Befehl verwenden: Worksheets(1).Activate
Dann kann man auf die For Next Schleife ganz verzichten. İst das eine akzeptable Alternative für dich?
mfg Piet
AW: Userform - Geänderte/Ergänzte Daten in neues Tabellenblatt
28.11.2019 10:05:04
Alex
Moin,
sorry das ich jetzt erst antworte aber ich hatte viel zu tun die letzten Tage. Erstmal ein Dankeschön an Piet. Ich habe es jetzt soweit geschafft, dass die Änderungen in das Tabellenblatt "Änderungen" geschrieben werden.
Nur kurz, du sagtest das ich da einige Programmierfehler drin hab. Also ich habe das nicht alles so wie du in der Datei die du als erstes hier hochgeladen hattest, aber es funktioniert doch alles einwandfrei? Sollte es dann nicht eingentlich einen Fehler geben, wenn irgendwas falsch programmiert wurde?
Unglücklicherweise habe ich heute festgestellt, dass die Änderung eines Artikels der mehrfach in der Liste auftaucht, nicht hunderprozentig läuft. Ich suche den Artikel und alle gleichnamigen Artikel werden mir in der Listbox angezeigt. Wenn ich den ersten anwähle und ändere läuft das auch. Wenn ich jetzt aber den zweiten Artikel (gleicher Artikel nur z.B. ein anderer Lagerort) ändere, wird der erste Artikel in der Liste gleich mit geändert. Hast du eine Ahnung wie ich das umgehen kann? Sprich das auch nur der Artikel geändert wird, welcher auch ausgewählt wurde?
Code des Änderungsbuttons:
Private Sub Button_ändern_Click()
Dim lngZeile As Variant
Dim i As Long
Dim WsTabelle As Worksheet
Dim BoVorhanden As Boolean
'Zuerst prüfen ob ein Datensatz im Listenfeld markiert ist
If Me.ListBox1.ListIndex >= 0 Then
With ActiveSheet   'geöffnete Inventur Datei!
lngZeile = .Cells(Rows.Count, 1).End(xlUp).Row
'Datensatz in ActiveSheet
For i = 1 To lngZeile + 1
If .Cells(i, 1).Text = CStr(Me.ListBox1.Value) Then Exit For
Next i
If i 

Gruß Alex
Anzeige
AW: Userform - Geänderte/Ergänzte Daten in neues Tabellenblatt
28.11.2019 10:42:50
Alex
Nachtrag:
Ich habe gerade nochmal nachgedacht und mir überlegt, dass es am besten wäre, wenn die Zelle "Zähler" eines gleichnamigen Artikel dessen Zählwert, -datum etc. nicht geändert wurden, mit einem "XXX" versehen werden. Sprich ich ändere Artikel "x" am Lagerort "y" und der gleiche Artikel "x" am Lagerort "z" bekommt bei der Spalte "Zähler" ein "XXX". Der Bestand und Lagerort darf natürlich trotzdem nicht geändert werden.
Gruß Alex
AW: Userform - Geänderte/Ergänzte Daten in neues Tabellenblatt
29.11.2019 10:23:48
Alex
Nachtrag:
Ich habe nun festgesellt das es wohl daran liegt, dass bei gleichnamigen Artikeln immer nur der in der Listbox als erstes angezeigte Artikel geändert wird. Sprich auch wenn ich den Artikel an zweiter Stelle markiere, wird der gleichnamige Artikel welcher an erster Stelle steht geändert.
Gruß Alex
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige