Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1624to1628
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

ComboBox Auswahl = Zeile löschen

ComboBox Auswahl = Zeile löschen
06.06.2018 15:27:03
Schnider
Guten Tag
Ich habe immer noch zwei Probleme bei meiner Datenbank und zwar:
1. Versuche ich seit langem eine Antwort zu kriegen hier im Forum betreffend:
In der UserForm2 wird anhand einer ComboBox ein Artikel ausgewählt. Die Daten entsprechend auf TextBoxen verteilt und angezeigt. Nun kann der Benutzer über ein Passwort den besagt ausgewählten Artikel löschen. über einen CommandButton wird dies erfolgt und die Zeile sollte gelöscht werden. Ich habe aber keine Ahnung wie ich das machen soll. Da auch weitere Dateien dran hängen, bräuchte ich einmal den Code für die Datei mit der Maske und einmal den Code mit Link zur anderen Datei, bei welcher das gleiche möglich ist.
Es sind nicht zweimal Artikel, sondern im ersten Artikel, im zweiten sind es Werkzeuge, im dritten Kostenstellen und im 4. Liferanten.(zwecks besserem Verständnis)
Zum 2. Problem:
Versuche ich die Codes für die Änderungen an einer Liste zu schreiben. Wenn ich in gleicher UserForm über einen CommandButton, die TextFelder aktiviere, kann ich diese umschreiben/ändern. Nun will ich sie aber mit nem zweiten CommandButton wieder geändert in die Liste speichern. Dies funktioniert bei mir, aber nur in der Datei, welche die Maske hat, wenn ich die Angaben erweitere und die Dateinamen eingebe, für die anderen Dateien geht es nicht mehr. Was mache ich falsch?
Anbei die angehängte Datei, welche relativ klar Aufschluss darüber geben sollte, was wie wo heisst und wo was ist.
https://www.herber.de/bbs/user/121996.xlsm

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox Auswahl = Zeile löschen
07.06.2018 07:22:58
fcs
Hallo Schnider,
zur Frage 1:
nachfolgend der angepasste Code für das Löschen eines Artikels.
Wichtig:
Nach dem Löschen einer Zeile müssen alle Auswahllisten aktualisiert werden!
Bei einer externen Datei funktioniert es genauso.
Hier muss "nur" die Variable wks für das Tabellenblatt entsprechend gesetzt werden.
zur Frage 2:
Damit Änderungen in einer externnen Datei gemacht werden können muss diese Datei auch geöffnet sein!
Das gilt natürlich auch für das Initialisieren einer Userform, wenn auf externe Daten zugegriffen werden soll.
Vor der Anzeige eines Userforms oder in der Initialisierungs-Prozedur muss man deshalb prüfen, ob die benötigten Dateien schon geöffnet sind. Wenn nein, dann Datei öffnen.
Wenn man mit mehreren Datein parallel arbeitet, dann ist es besonders wichtig, dass man die Tabellenblätter im korrekt und vollständig referenziert, wenn man Zellbereiche im Code anspricht!!
Gruß
Franz
'Code in Userform2
Private Sub CommandButton1_Click()
'In Combobox1 gewählten Artikel löschen
Dim i As Long
Dim tofind As Variant
Dim found As Range
Dim StatusCalc As Long
Dim wks As Worksheet
Const Titel = "Zeilen Löschen mit Wert"
Const Msg = "Wert, nachdem gesucht und gelöscht werden soll."
If Me.ComboBox1.ListIndex  "3" Then Exit Sub
'Tabellenblatt in dem gelöscht werden soll setzen
Set wks = Sheets("Artikelkonto")                '? Sheets("Lagerartikel")?
With Application
.ScreenUpdating = False
.EnableEvents = False
StatusCalc = .Calculation 'Beerechnungsmodus merken
.Calculation = xlCalculationManual
End With
With wks
'Artikel-Nr. in Spalte A (1) suchen
Set found = .Columns(1).Find(what:=tofind, LookIn:=xlValues, lookat:=xlWhole)
If Not found Is Nothing Then
If MsgBox("Artikel-Nr. """ & tofind & """ wirklich löschen?", _
vbOKCancel + vbQuestion + vbDefaultButton2, Titel) = vbOK Then
found.EntireRow.Delete
'Userform neu initialisieren, damit alle Auswahllisten wieder aktuell sind
Call UserForm_Initialize
End If
Else
MsgBox "Artikel-Nr. """ & tofind & """ nicht gefunden", vbOKOnly, Titel
End If
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = StatusCalc
End With
End Sub

Anzeige
AW: ComboBox Auswahl = Zeile löschen
07.06.2018 07:44:43
Schnider
Ich danke dir für deine grossartige Hilfe.
Soweit ich das erkenne, hast du alles eingefügt, was ich brauche. Ich habe nun versucht, einen Artikel 1 zu löschen, aber es tritt ein Fehler auf:
Laufzeitfehler: 1004
Die Delete-Methode des Range-Objektes konnte nicht ausgeführt werden.
Der Fehler markiert die Zeile: found.EntireRow.Delete
Habe ich irgendwas übersehen beim kopieren deines Codes?
AW: ComboBox Auswahl = Zeile löschen
08.06.2018 00:26:52
fcs
Hallo Schnider,
das Problem ist, dass im Blatt "Artikelkonto" die Daten nicht einer Tabelle stehen sondern in mehreren Tabellen, oft für eine Spalte jeweils eine Tabelle. Dadurch kann mann man die komplette Zeile auf einmal löschen.
Theoretisch könnte man jetzt per Makro in jeder der Tabellen die entsprechende Zeile löschen.
Es ist aber nicht sinnvoll die zusammengehörigen Daten in mehreren Tabellen zu verwalten.
Damit erleidest du irgendwann Schifbruch - z.B. wenn du versehentlich eine Spalte sortierst.
Löse die Tabellen in den Spalten B bis N in Bereiche auf.
Formatiere die Spalten mit Füllfarbe "keine Füllung" und Schriftfarbe "Automatisch".
Fur die Tabelle in Spalte A wählst du "Größe anpassen" - hier wählst du dann alle Daten von Zelle A1 bis zur letzten Zelle in Spalte N als neuen Bereich. Dann hast du alle Daten in einer Tabelle und das Leben wird leichter.
Danach must du dann die Formeln in den Spalten E, H, I, M und N neu schreiben.
In der hochgeladenen Datei hab ich diese Anpassung gemacht.
https://www.herber.de/bbs/user/122011.xlsm
Ich arbeite mit Excel 2010, das kennt niht die von dir verwendete Funktion MAXWNNS in Spalten H und I. Da hab ich eine andere Formel-Funktion als Matrixformel verwendet.
Auch die Formel in Spalte E hab ich angepasst, so dass sie korrekter arbeitet, indem als Kriterium die Artikel-Nr. in Spalte A verwendet wird.
Gruß
Franz
Anzeige
AW: ComboBox Auswahl = Zeile löschen
08.06.2018 08:59:33
Schnider
Ich habe mir die Datei mal angesehen und kann aber durch mein bisheriges Wissen über VBA relativ wenig veränderungen erkennen.
Wenn du sagst du würdest das nicht über mehrere Tabellen machen, wie kann ich mir das vorstellen?
Mein Problem ist, dass ich hunderte von Teilen eingeben muss, diese im Lager einbuchen muss und diese an eine andere Stelle(sogenannte Kostenstellen), weiter verbuchen muss. Von meinem Arbeitgeber kriege ich so gut wie keine Unterstützung und das Programm, mit welchem ich dann später arbeite ist noch im Aufbau (kann aber auch noch Jahre dauern). Deshalb wollte ich mir etwas eigenes aufbauen.
Ich habe mich in diversen Foren eingelesen und versuche das Programm möglichst einfach aufzubauen, damit jeder damit klar kommen würde, auch nicht so gekonnte Computer Spezialisten.
Die Tabellenzahl in einer Datei ist begrenzt, deshalb habe ich 4 Dateien miteinnder verknüpft, welche in Artikel, Konten, Lieferanten und Werkzeuge unterteilt sind. Desweiteren müssen wie gesagt, Werkzeuge und Artikel ein und ausgebucht werden können, aber da fehlt mir jegliche Übung und Praxis mit Excel. Wie bringe ich dem Programm bei, dass wenn ich 1 Artikel einbuche mit Datum, diesen von dem Konto lösche wenn er verbaut ist, usw.
Damit ich verstehe was ich mache und wie das ganze aufgebaut ist, versuche ich darum eben Schritt für Schritt zu arbeiten. Nun ist es aber wiederumm relativ schwierig, da ich zwar eine Vision habe, diese aber mit grosser Wahrscheinlichkeit nie umsetzen kann.
Für Verbesserungsvorschläge, Änderungen und desweiteren bin ich sehr froh darüber, dass ich Hilfe bekomme und danke auch allen sehr.
PS: Ich habe mich im Internet auch bereits umgesehen, aber Programme, die man downloaden kann, haben immer wieder einige gravierende Sachen dabei, welche ich nicht brauche oder es fehlen Dinge, die ich brauche. Ausserdem brauche ich die Excel-Datei, damit das nachher alles ins neue Programm importiert werden kann, wenn es dann einmal läuft.
Anzeige
AW: ComboBox Auswahl = Zeile löschen
08.06.2018 11:22:14
fcs
Hallo,
Wenn du sagst du würdest das nicht über mehrere Tabellen machen, wie kann ich mir das vorstellen?
Im Blatt "Artikelkonto" hast du ja in Spalte A die Artikelnummern, die Daten rechts davon bis Spalte N beziehen sich alle auf diese Artikelnummer.
Deshalb ist aus meiner sicht nicht sinnvoll dass die Daten in den Spalten B bis N mehreren verschiedenen Tabellen zugeordnet sind.
Erkennen kannst du dies, wenn du in einer Spalte in die Zelle in Zeile 1 klicks und dann das Register "TabellenTools" wählst. Jetzt wird links der Name der Tabelle im Menü angezeigt.
Klickst du jetzt in andere Spalteen, dann kannst du sehen, dass sich der Name der Tabelle in fast jeder Spalte ändert.
Warum du deine Daten so zusammengebaut hast weiss ich natürlich nicht - aber es ist für Excelfunktionalität nicht sinnvoll.
Wie du die Daten in eine Tabelle integrieren kannst hab ich dir ja schon beschrieben.
Wenn du im Blatt "Artikelkonto" den Bestand direkt verwalten willst, dann musst in Spalte "Menge" beim Ein-/Ausbuchen von Artikel vom aktuellen Wert die entsprechende Menge addieren oder subtrahieren und den neuen Wert in die Zelle zurückschreiben.
Artikel mit Bestand 0 sollten aber erst gelöscht werden wenn sie in Zukunft nicht mehr benötigt werden.
Die von dir gewählte Lösung den Bestand per Formel zu berechnen (Summe Zugänge - Summe Abgänge) funktioniert natürlich auch. Hier musst du dann den Anfangsbestand einmalig als Zugang buchen.
Gruß
Franz
Anzeige
AW: ComboBox Auswahl = Zeile löschen
11.06.2018 11:04:49
Schnider
Guten Morgen
Ich bin immer noch auf der Suche nach einer gescheiteren Lösung. Wenn es dafür eine gibt, jederzeit willkommen.
Um deine Frage zu beantworten, wenn es eine Möglichkeit gibt, dies über ein Tabellenblatt zu machen, dass ein-/ausbuchen direkt addiert beziehungsweise subtrahiert werden, ist es natürlich umso einfacher. Ich kenn mich da nicht wirklich aus, darum mach ichs über mehrere Tabellenblätter. Das gleiche gilt bei den Konten und dem Werkzeug. Nun ist das Problem, dass ich weder weiter komme, noch irgend ne Ahnung habe, was ich weiter machen kann, um das ganze fertig aufzubauen. Mir fehlt noch die geänderten Daten zu übernehmen. Die Listen in den Listboxen, welche die Ein-/Ausbuchungen anzeigen sollen. Die Zusammenfassungen der jeweiligen Konten und und und. Momentan überlege ich mir die ganze Sache abzublasen und es fallen zu lassen. Mir ist klar, dass ich zuviel will und es an Menge Arbeit grenzt, da ich mich bei VBA kaum auskenne.
Ausserdem verstehe ich dich nicht ganz betreffend der Aussage die Werte in eine Tabelle zu übernehmen. Was würdest du in Bezug auf ein solches Programm anders machen? Ich dachte mir, es wäre einfacher, wenn ich die verschiedenen Felder als einzelne Daten nehme und sie dann wiederum weiter verwenden kann, um die jeweiligen Werte wieder weiter verwenden zu können. Wiederum ist mir klar, dass ich die ganze Zeile als Einheit brauche, welche dann aber wiederum beim letzten Satz ein Problem geben, da ich diese dann wieder aufsplitten können muss und das ist genau der Knackpunkt meiner Ideen. Ich komm weder weiter, noch weiss ich wie ich es machen soll.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige