Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
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
ListBox mit Suche, falsche Tabellenzelle
30.03.2020 21:05:11
Patrick
Guten Abend liebe Excel/VBA Profi's
ich forste mich schon seit Tagen durch euer Forum um mein aktuelles Projekt umsetzen zu können und ihr habt mir indirekt, bis zum jetzigen Zeitpunkt, durch eure guten Erklärungen und Code-Schnipsel sehr geholfen. Vielen Dank schonmal dafür !
Nun stehe ich vor einem Problem, wo meine Kenntnisse einfache nicht mehr ausreichen... vielleicht sehe ich auch den Wald vor lauter Bäume nicht mehr und habe inzwischen zu oft und zu lange auf die Codezeilen geschaut.
Allgemein vor Weg:
Das Projekt wird mit Sicherheit nicht 100% sauber geschrieben worden sein und bin daher über jeden Hinweis eurerseits dankbar !
Das Projekt und Problem:
Ich habe eine Ersatzteilliste erstellt (6 Tabellen), eine Startseite zur Navigation zur erleichterten Bedienung, sowie eine Bestand u. Bestellliste mit Filter (zum Ausdrucken der Liste). Da manche Ersatzteile für andere Baugruppen eingesetzt werden können, habe ich eine zentrale Tabelle (Bestand u. Bestellliste) erstellt und die Ersatzteile in den anderen Tabellen mit dieser verknüpft. Ich wollte damit bezwecken, dass egal wo ich gucke, immer die selbe Anzahl u. Bestellmenge angezeigt wird.
Zusätzlich zu den o.g. Tabellen habe ich mir eine Userform erstellt um die Lager und Bestelliste schnellstmöglich zu bearbeiten. Die Userform beinhaltet eine ListBox (dort wird die komplette Ersatzteilliste angezeigt) und eine Suchfunktion um die Liste zu filtern. Wenn man die Suchfunktion verwendet werden nun die dementsprechenden verbleibenden Treffer angezeigt und man kommt per Doppelklick in den "Bearbeitungsmodus". Dort kann man nun den Lagerbestand u. Bestellmenge bearbeiten und anschließend speichern (es sollte dann in der Tabelle übernommen werden).
Nun zum Problem: Wenn ich jetzt die Einträge in der Liste ohne Suchfunktion bearbeite, werden die richtigen Zellen geändert. Sobald ich aber die Suchfunktion nutze und mir noch z.B. 4 Einträge überbleiben, diesen dann zum Bearbeiten Doppelklicke, anschließend bearbeite, werden die falschen Zellen geändert. Es werden die Zellen geändert, die ohne Funktion an der Stelle der Listbox gestanden hätten, bearbeitet. Ich gehe mal davon aus das ich irgendwo einen Fehler in den Variablen habe ... Daher wende ich mich an euch.
Userform, ListBox und Suchfunktion:
Private Sub cmdschliessen_Click()
Unload Me
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
x = Me.ListBox1.ListIndex + 2
With bearbeiten
.Label5 = " " & CStr(ListBox1.List(ListBox1.ListIndex, 0))
.Label8 = " " & CStr(ListBox1.List(ListBox1.ListIndex, 1))
.TextBox1 = CStr(ListBox1.List(ListBox1.ListIndex, 2))
.TextBox2 = CStr(ListBox1.List(ListBox1.ListIndex, 3))
End With
Unload UserForm
bearbeiten.Show
End Sub
Private Sub TextBox1_Change()
Const STARTROW = 3
Dim i&, iCnt&, r&, c&
Dim sn, tmp
With Tabelle7
iCnt = .Range("A" & Rows.Count).End(xlUp).Row - STARTROW + 1
ReDim sn(1 To iCnt, 1 To 13)
For i = 1 To iCnt
tmp = .Range("A" & (i + 2) & ":F" & (i + 2))
If InStr(1, concat(tmp), TextBox1.Text) > 0 Then
r = r + 1
For c = 1 To UBound(tmp, 2)
sn(r, c) = tmp(1, c)
Next
End If
Next
ListBox1.List = sn                                                      '
End With
End Sub
Private Function concat(ByVal arr, Optional ByVal delim$ = " ") As String
concat = Join(Application.Transpose(Application.Transpose(arr)), delim)
End Function
Private Sub UserForm_Initialize()
Dim lZeile As Long
'Alle TextBoxen leer machen
search = ""
ListBox1.Clear 'Zuerst einmal die Liste leeren
lZeile = 2 'Start in Zeile 2, Zeile 1 sind die Überschriften
Do While Trim(CStr(Tabelle7.Cells(lZeile, 4).Value))  ""
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = "100; 380; 30; 30"
.AddItem
.List(ListBox1.ListCount - 1, 0) = Tabelle7.Cells(lZeile, 1).Text
.List(ListBox1.ListCount - 1, 1) = Tabelle7.Cells(lZeile, 2).Text
.List(ListBox1.ListCount - 1, 2) = Tabelle7.Cells(lZeile, 3).Text
.List(ListBox1.ListCount - 1, 3) = Tabelle7.Cells(lZeile, 4).Text
End With
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
End Sub

Maske zum Bearbeiten:
Public Sub CommandButton1_Click()
Tabelle7.Unprotect
With Tabelle7
.Cells(x, 3) = TextBox1.Value
.Cells(x, 4) = TextBox2.Value
End With
Tabelle7.Protect
Unload Me
UserForm.Show
End Sub
Private Sub CommandButton2_Click()
Unload Me
UserForm.Show
End Sub
Private Sub SpinButton1_Change()
TextBox1.Text = SpinButton1.Value
End Sub
Private Sub SpinButton2_Change()
TextBox2.Text = SpinButton2.Value
End Sub
Private Sub TextBox1_Change()
If IsNumeric(TextBox1.Value) Then
SpinButton1.Value = TextBox1.Value
End If
End Sub
Private Sub TextBox2_Change()
If IsNumeric(TextBox2.Value) Then
SpinButton2.Value = TextBox2.Value
End If
End Sub
Private Sub bearbeiten_Initialize()
SpinButton1.SmallChange = 1
SpinButton2.SmallChange = 1
End Sub
Modul:
Option Explicit
Public x As Long
Sub gehezu1()
Sheets("Zweiarmige Abzieher").Select
End Sub
Sub gehezu2()
Sheets("Dreiarmige Abzieher").Select
End Sub
Sub gehezu3()
Sheets("Trennvorrichtung").Select
End Sub
Sub gehezu4()
Sheets("Abziehvorrichtung").Select
End Sub
Sub gehezu5()
Sheets("Innenauszieher").Select
End Sub
Sub gehezu6()
Sheets("Kugellagerabzieher").Select
End Sub
Sub gehezu0()
Sheets("Startseite").Select
End Sub
Sub gehezu7()
Tabelle7.Select
End Sub
Sub openusr()
UserForm.Show
End Sub
Sub aktlbst()
Tabelle7.Unprotect
Tabelle7.Range("$A$1:$D$182").AutoFilter Field:=4, Criteria1:=">0", Operator:=xlAnd
Tabelle7.Protect
End Sub
Zusätlich zum Code habe ich euch mein Projekt hochgeladen, um euch noch besser ein Bild davon machen zu können, wo von ich rede... für Verbesserungsvorschläge jeglicher Art bin ich offen ! Ich hoffe, ich konnte euch alles so gut wie möglich schildern.
https://www.herber.de/bbs/user/136272.xlsm
Dann bleibt mir nichts anderes mehr übrig als euch einen schönen restlichen Abend zu wünschen und auf eine schnelle Rückmeldung zu warten.
Bis dahin, euch alles Gute und vor allem Gesundheit,
euer Patrick

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

Betreff
Datum
Anwender
Anzeige
AW: ListBox mit Suche, falsche Tabellenzelle
30.03.2020 22:34:16
Barbara
Hi Patrick
Probier mal diese Zeile:
x = .Columns(1).Find(Trim(Label5.Caption)).Row
Füge sie in der Maske zum Bearbeiten gleich unter
Public Sub CommandButton1_Click()
Tabelle7.Unprotect
With Tabelle7
ein.
Damit wird die richtige Zeile festgestellt. Habe aber nicht auf Nebenwirkungen getestet.
Hoffe, es wirkt.
LGB
AW: ListBox mit Suche, falsche Tabellenzelle
30.03.2020 22:56:24
Patrick
Hallo Barbara,
da hat sich das späte Reinschauen nochmal gelohnt. Habe es gerade getestet und funktioniert einwandfrei ! Super, vielen Dank für die schnelle und kompetente Rückmeldung :)
Schönen Abend noch !
Gruß Patrick
Anzeige
AW: ListBox mit Suche, falsche Tabellenzelle
30.03.2020 23:15:13
Patrick
Hallo nochmal,
ich hätte bei Gelegenheit nochmal ein kleines Attentat auf euch vor. Und zwar würde ich gerne meine einzelnen Tabellen mit jeweils einer ComboBox auf dem dementsprechenden Blatt filtern.
D.h. ich würde gerne die Combobox als Filterfunktion nutzen, es soll folgende Filter beinhalten:
Alle anzeigen
14-01
14-03
20-1
20-10
20-2
20-20
20-3
20-30
41-2
43-1
43-2
43-3
201-S
204-0
204-2
210-1
210-2
Für alle weiteren Blätter und Tabellen sollte ich mich anhand des Codes orientieren können.
MFG Patrick
AW: ListBox mit Suche, falsche Tabellenzelle
30.03.2020 23:35:16
Patrick
Hallo Barbara,
musste jetzt leider doch einen Fehler feststellen beim Bearbeiten.
Wenn ich in der Suche "3-400-E" eingebe, es öffne, bearbeite und anschließend übernehmen möchte zeigt er mir folgenden fehler an:
Userbild
Userbild
Anzeige
AW: ListBox mit Suche, falsche Tabellenzelle
31.03.2020 20:10:16
Patrick
Guten Abend zusammen,
habe selbst nochmal probiert mit ein bisschen Tüftelei, leider ohne Erfolg.
Problem besteht also weiterhin.
Gruß Patrick
AW: ListBox mit Suche, falsche Tabellenzelle
02.04.2020 22:59:12
Barbara
Hi Partrick,
habe Deine Bemühungen nach einer Lösung gesehen, bin aber nicht dazu gekommen zu antworten.
Aber jetzt hat Du ja die Lösung.
Können auch gerne mailen oder skypen.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige