Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Bauteilverwaltung

Forumthread: Bauteilverwaltung

Bauteilverwaltung
18.02.2025 17:10:00
ALEX
Hallo zusammen

Wieder mal ein blutiger Laie mit der Hoffnung Unterstützung zu finden.

In der anliegenden Beispieldatei (https://www.herber.de/bbs/user/175752.xlsm) ist ein Arbeitsblatt mit Bauteilen.
Dieses Blatt soll nun mit einem Formular befüllt oder geändert werden.

Für die Neuen Einträge, dass löschen von Einträgen und das Speichern von Änderungen habe ich mir den Beispielcode einer Adressverwaltung als Grundlage genommen.

Nun sind noch einige Aufgaben, bei denen ich nicht weiterkomme.
1. Das Datenblatt wird geändert die Listbox allerdings nicht. Nur bei Neustart des Dialoges
2. Die gesuchte und ausprobierte Suchfunktion (noch auskommentiert vorhanden) ist leider aus verschiedenen Gründen unbrauchbar.
a. Die Suche funktioniert, doch wenn ich in die Listbox klicke wird nicht der Inhalt in den Textboxen angezeigt den ich auswähle. Das nur bei vorheriger Anwendung der Suche. Somit passiert nur noch Unsinn bei neuen Einträgen, Bearbeiten und Löschen.
Hier bräuchte ich etwas Funktionierendes.
3. Zum Schluss, beim Beenden des Dialogfensters kommt die Meldung "Nicht genügend Speicher". Also hängt das ganze wohl irgendwo.

Ja es liest sich, als wenn es viel wäre. Ich denke allerdings, dass die Aufgabe für Euch ganz einfach ist.

Es wäre schön, wenn Ihr Zeit finden würdet und dafür Danke ich Euch schon einmal.

Bis hoffentlich bald

Alex

Das Ganze ist Teil eines Excel Projektes.
Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bauteilverwaltung
18.02.2025 17:39:11
Piet
Hallo Alex

bei deiner Beispieldatei ist ein Server Fehler aufgetreten. Bitte noch mal hochladen.

mfg Piet
AW: Bauteilverwaltung
18.02.2025 21:52:59
Alwin Weisangler
Hallo Alex,

ich habe dir mal eine 2. Userform neben deiner alten eingebaut.
Da wo es Sinn macht habe ich dir die Comboboxen gleich mit verbaut. Das Ganze wurstet nun nicht mehr im Tabellenblatt rum und ist damit deutlich schneller. Es wird alles über Arrays verarbeitet.
Den Filter kann man auch noch komfortabler bauen - ist aber erst mal auf das, was du vorgegeben hast angelegt.
Ach ja die Zeilennummern der Datensätze Listobjekts befinden sich jetzt nicht mehr in der 1. Spalte der Listbox sondern nun in der letzten Spalte.
Es können nun auch weit mehr Spalten als die durch .AddItem auf 10 Spalten begrenzte Spaltenzahl verwendet werden.
Deine Tabelle habe ich auf Listobjekt (formatierte Tabelle) geändert. Da du eh schon Dropdown in der Tabelle verwendest werden diese dann bei einen neuen Datensatz mit fortgepflanzt.
Schau dir die Sache mal an, ob es sich lohnt den Rest noch dazu zu programmieren.
https://www.herber.de/bbs/user/175763.xlsm

Gruß Uwe
Anzeige
AW: Bauteilverwaltung
19.02.2025 10:24:59
ALEX
Hallo Uwe

Das sieht sehr gut aus.
Mit den Comboboxen kann ich noch nicht so richtig etwas anfangen. Aber das mehr als 10 Spalten möglich sind, ist schon gut, eventuell auch für andere Tabellen.
Also es würde sich für mich lohnen auch den Rest zu bekommen.

Mir ist auch noch bei der alten Version aufgefallen, dass bei der Funktion Eintrag speichern die Formel in Spal-te C überschrieben wird und somit der Verweis nichtmehr vorhanden ist.

Es wird doch immer mehr sorry.

Vielen Dank Alex
Anzeige
AW: Bauteilverwaltung
19.02.2025 11:15:41
Alwin Weisangler
Hallo Alex,

anbei mal auf die Schnelle den Rest eingebaut. Ich hoffe, dass ich nichts übersehen habe.
https://www.herber.de/bbs/user/175773.xlsm

Gruß Uwe
AW: Bauteilverwaltung
19.02.2025 13:19:42
Alex
Hallo Uwe

Tolle Leistung !

Wie hast Du es geschafft, dass der Verweis korrekt in Spalte C und Textbox 1 erscheint bei einem neuen Eintrag?
Das Einzige, was ich gesehen habe, ist dass die Listbox1 bei neuen wie auch bei geänderten Einträgen nicht aktualisiert wird.
Und die MsgBox bei neuen Einträgen wird nicht angezeigt.

Ist schon großartig, wenn man sich so gut auskennt.
Darf ich mich den eventuell direkt bei Dir melden, wenn ich mal wieder nicht weiterkomme bei diesem Projekt?

Gruss und Dank Alex
Anzeige
AW: Bauteilverwaltung
19.02.2025 14:13:16
Alwin Weisangler
Hallo Alex,

das hatte ich in der Kürze übersehen. Ich hatte auch noch einen Fehler drin. Den habe ich gleich noch korrigiert.
Das sollte jetzt so arbeiten, wie es angedacht war, nebst aktualisieren der Listbox.

https://www.herber.de/bbs/user/175780.xlsm

Der "Verweis" liegt in der 2. Spalte der ComboBox und wird da einfach mitgegeben.
Wenn du zukünftig Fragen hast, stelle diese einfach im Forum ein und es wird dir sicherlich jemand adäquat weiterhelfen.

Gruß Uwe

Anzeige
AW: Bauteilverwaltung
19.02.2025 17:46:11
Alex
Es ist zum Heulen.
Ich stelle mich ja so etwas von dämlich an unglaublich.
Uwe ich habe das komplette Projekt (https://www.herber.de/bbs/user/175785.xlsm) angehangen, da mir die Bauteilbearbeitung immer den Laufzeitfehler 1004, Die Methode "Range für das Objekt_Worksheet ist fehlgeschlagen.
Könntest Du bitte noch einen Blick darauf werfen, Ich verstehe vermutlich die Zuordnung bei den Comboboxen nicht.
Vielen Dank
Anzeige
AW: Bauteilverwaltung
19.02.2025 19:19:59
Alwin Weisangler
nur Geduld,

3 Sachen waren nur noch anzupassen.
Für beide Comboboxen den Namen des jeweiligen Listobjekts im Initialize habe ich angepasst.
Die Tabelle im Blatt "Bauteile" habe ich in ein Listobjekt umgewandelt, da dies den Vorteil hat, dass sich die DropDowns in Spalte A und B mit der Erweiterung der Tabelle mit fortpflanzen. Bei neuen Einträgen wird die Formel in Spalte C nicht mehr benötigt, da die passende Zuordnung (Verweis) automatisch im Userform erschlagen wird.
Du brauchst auch keine Leerzeilen mehr vorhalten, da sich die Formatierung der Zellen ebenfalls im Listobjekt mit fortpflanzt.
https://www.herber.de/bbs/user/175786.xlsm

Gruß Uwe
Anzeige
AW: Bauteilverwaltung
20.02.2025 13:07:35
Alex
Vielen Dank für Deine Mühe !!!

Noch kurz zwei Dinge.
Seitdem die Bauteiltabelle intelligent ist kann ich den Jahrgang bei einer neuen Spalte vor 2024 nicht mehr mit =H1+1 berechnen nun fragt sich wie ich dort 2025 ff. hinbekomme.
Ausserdem wird die Listbox1 noch nicht nach neuen Einträgen oder Änderungen aktualisiert.

Das nervt nicht war aber vielleicht hast Du ja noch zwei passende Antworten.

Ich wünsche noch einen angenehmen Tag Alex
Anzeige
AW: Bauteilverwaltung
20.02.2025 15:23:41
Alwin Weisangler
Hallo Alex,

Was die Aktualisierung der Listbox anlangt, hatte ich den letzten Zweig nicht ergänzt. Ändere diese 2 Prozeduren so:


Private Sub CommandButton1_Click()
Dim i&, tmp()
If ListBox1.ListIndex > -1 Then
If MsgBox("Soll dieser Eintrag als neuer Eintrag in die Tabelle übernommen werden", vbQuestion + vbYesNo, "Sicherheitsabfrage: Es wurde ein Eintrag ausgewählt.") = vbYes Then
Tabelle1.ListObjects(1).ListRows.Add.Range.Resize(1, UBound(arrCnt) + 1) = arrCnt
boSp = True
ListboxLaden
TxtSuche
With ListBox1
.ListIndex = .ListCount - 1
.ListIndex = -1
End With
boSp = False
CntLeeren
Else
ListBox1.ListIndex = -1
CntLeeren
End If
Else
Tabelle1.ListObjects(1).ListRows.Add.Range.Resize(1, UBound(arrCnt) + 1) = arrCnt
boSp = True
ListboxLaden
TxtSuche
With ListBox1
.ListIndex = .ListCount - 1
.ListIndex = -1
End With
boSp = False
CntLeeren
End If
End Sub

Private Sub CommandButton3_Click()
Dim i&
If ListBox1.ListIndex = -1 Then MsgBox "Es wurde kein Datensatz aus der Listbox ausgewählt", vbInformation, "Ändern eines Datensatzes nicht möglich": Exit Sub
Tabelle1.ListObjects(1).ListRows(ListBox1.List(ListBox1.ListIndex, ListBox1.ColumnCount - 1)).Range.Resize(1, UBound(arrCnt) + 1) = arrCnt
With ListBox1
For i = 0 To .ColumnCount - 2
.List(.ListIndex, i) = arrCnt(i)
Next i
End With
ListboxLaden
TxtSuche
CntLeeren
End Sub


Wenn du per Buttonklick ein neues Kalenderjahr einfügen willst und damit die Spaltenzahl zunimmt musst du auch eine weitere Textbox einbauen.
In diesem Zusammenhang muss im Initialize des Userforms das Array: arrCnt am Ende um diese TextBox erweitert werden. Ebenso musst du auch das Array: arrSpalten um eine ;0 erweitern.
Wenn du aber dafür die letzte Spalte löschst braucht es keine Änderungen im Code.
Spaltenköpfe lassen sich nicht per Formel berechnen. Aber man kann den Namen des Spaltenkopfes per VBA ändern.
Das Einfügen einer neuen Spalte nebst Kalenderjahr wäre so:


Private Sub CommandButton6_Click()
With Tabelle1.ListObjects(1)
.ListColumns.Add Position:=7
.ListColumns(7).Name = CDbl(.ListColumns(8).Name) + 1
End With
With Tabelle1.Columns()
.ColumnWidth = 10.29
.HorizontalAlignment = xlHAlignCenter
End With
End Sub


Gruß Uwe
Anzeige
AW: Bauteilverwaltung
20.02.2025 16:20:16
Alex
Hallo Uwe

Das mit der Aktualisierung funktioniert einwandfrei. Das mit der neuen Spalte muss ich mir noch genauer anse-hen. Hier schon einmal meinen Dank.

Ich habe mir nun auch erlaubt Dein Skript für eine weitere Tabelle anzuwenden. Leider ohne Erfolg.
Die Listbox wird 1A befüllt, nur wenn ich ein Click in die Listbox mache um die Daten in Label's und Textfeldern zur Änderung anzuzeigen kommt der Laufzeitfehler 438 "Objekt unterstützt diese Eigenschaft oder Methode nicht"
Mit F8 komme ich bis arrlist(i, UBound(arrlist, 2)) = i und das wars.


Private Sub ListboxLaden()
Dim i&
With Tabelle15.ListObjects(1)
If .DataBodyRange Is Nothing Then Exit Sub
arrlist = .DataBodyRange.Value
ReDim Preserve arrlist(1 To UBound(arrlist), 1 To UBound(arrlist, 2) + 1)
For i = 1 To UBound(arrlist)
arrlist(i, UBound(arrlist, 2)) = i
Next i
End With
With ListBox1
.ColumnCount = UBound(arrlist, 2)
.ColumnWidths = Join(arrSpalten, ";")
.List = arrlist
End With
End Sub 
Die Tabelle hat auch 9 Spalten allerdings nur 14 Einträge und eine Kopfzeile.
Habe Sie auch zu einem Listobjects umgewandelt.

Ich verstehe das einfach nicht.
Anzeige
AW: Bauteilverwaltung
20.02.2025 17:55:32
Alwin Weisangler
Hallo Alex,

öffne das Lokalfenster des VBA Editors und verfolge darin die Änderungen Array und Variablen. arrlist findest du in +ME, da diese modulweit deklariert ist.
Die Prozedur ist i.O.
Sollte das nicht helfen lade den Kram noch mal hoch.

Gruß Uwe
AW: Bauteilverwaltung
18.02.2025 19:00:56
ralf_b
Wenn man die Zeilennummer nicht mit im gefilterten Array einbaut, dann findet deine Lehrbuch Sub die Einträge nicht in der Tabelle.
Dein Basiscode ist darauf ausgelegt immer aus der Tabelle zu lesen. Das funktioniert dann aber nicht wenn die Listbox nicht mehr mit der Tabelle übereinstimmt.
Dafür wurde dir aber schon die Zeilennummer in die ersten (unsichtbaren) Spalte der Listbox eingetragen. Dein Filter Code hat das aber nicht berücksichtigt.

Private Sub TextBox10_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Dim a As Long, i As Long, j As Long
Dim arrData() As Variant, strLine As String, arrtmp
a = 1
Do Until Cells(a, 1) = ""
a = a + 1
Loop
arrData() = Range(Cells(2, 1), Cells(a - 1, 5)).Value
ListBox1.RowSource = ""
ListBox1.Clear
For i = LBound(arrData, 1) To UBound(arrData, 1)
strLine = Empty
For j = LBound(arrData, 2) To UBound(arrData, 2)
strLine = strLine & "|" & arrData(i, j)
Next j
strLine = i + 1 & "|" & strLine

If InStr(LCase(strLine), LCase(TextBox10.Value)) > 0 Then
ListBox1.AddItem i + 1
arrtmp = Split(strLine, "|")
For j = 1 To UBound(arrtmp)
ListBox1.List(ListBox1.ListCount - 1, j) = arrtmp(j)
Next j
End If
Next i
End Sub
Anzeige
kleine Änderung
18.02.2025 19:10:33
ralf_b
dies Zeile strLine = i + 1 & "|" & strLine
unter die AddItem Zeile verschieben.



ListBox1.AddItem i + 1
strLine = i + 1 & "|" & strLine
arrtmp = Split(strLine, "|")
AW: kleine Änderung
19.02.2025 10:35:02
Alex
Hallo Ralf

Vielen Dank für die Suchfunktion, dass würde so funktionieren, nur das die Zeilennummer in die Spalte BKP geschrieben wird. Die Listbox1 ist somit um eine Spalte versetzt. Die anderen Punkte wären leider auch noch zu lösen und ich hatte Uwe auch geschrieben, dass mir in der alten Version aufgefallen ist, dass bei der Funktion Eintrag speichern die Formel in Spalte C überschrieben wird und somit der Verweis nichtmehr vorhanden ist.

Wird leider doch immer mehr.

Vielen Dank Alex
Anzeige
AW: kleine Änderung
19.02.2025 17:00:32
ralf_b
ich denke es reicht wenn dir Einer deinen Code umbastelt. Bei Zweien kommt nur Murks raus.
Da ich keine Tagesfreizeit für sowas habe, überlasse ich gern dem Uwe den Fall.
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18