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

Nachfrage ListBox nächster Wert

Nachfrage ListBox nächster Wert
21.08.2020 10:39:15
Matthias
Guten Morgen Zusammen,
ich habe vor einiger Zeit eine Frage gestellt und super beantwortet bekommen (von Franz). Leider habe ich nicht die Möglichkeit gefunden den Beitrag direkt zu beantworten oder hervorzuholen.
Es war dieser hier: "ListBox nächsten Wert suchen" von Matthias vom 13.11.2019 09:10:11
Wie gesagt funktioniert die Lösung dort super. Leider kann ich die Datei nicht hochladen, da dort wirklich sehr viele vertrauliche Daten drinstehen und ich hoffe ihr könnt mir so helfen.
Ich habe jetzt die Anforderung, dass ich die Funktion in eine andere Exceldatei überführen möchte. Das hat auch ganz gut geklappt bis auf eine Sache.
In der Suchfunktion, die der alte Beitrag ermöglicht ist ein Option Explicit enthalten, worauf ja dann alle Variablen definiert werden müssen. Dies scheint mir nun aber hinderlich zu sein, da es auch einen anderen Bereich betrifft wo dies anscheinend nicht der Fall ist.
Mein Vorgehen bisher:
Alte Datei mit zwei Tabellenblättern und 4 Userforms in neue Datei integriert (mehrere Blätter und UFs).
Tabellenblätter umbenannt und auch im Code angepasst.
Der Fehler wird an dieser Stelle markiert und tritt beim Speichern der Daten auf.
Do While Wettbewerb1.Cells(lZeile, 1).Value  ""

Wettbewerb1 ist markiert und Fehler heißt "Variable nicht definiert"
Das Wettbewerb1 hieß vorher Tabelle1, ist aber wie gesagt alles umbenannt.
Private Sub CommandButton3_Click() 'Speichern Schaltfläche Ereignisroutine
Dim lZeile As Long
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Wir müssen prüfen, ob die ID Spalte auch gefüllt ist!!
If Trim(CStr(TextBoxBundesland.Text)) = "" Then
'Meldung ausgeben
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
'Abbrechen des Speicherroutine
Exit Sub
End If
'Zum Speichern benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Wettbewerb1.Cells(lZeile, 1).Value  ""
'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Column(4) = lZeile Then
'Eintrag gefunden, TextBoxen in die Zellen schreiben
Wettbewerb1.Cells(lZeile, 1).Value = TextBoxBundesland.Text
Wettbewerb1.Cells(lZeile, 2).Value = TextBoxKreis.Text
Wettbewerb1.Cells(lZeile, 3).Value = TextBoxLeistungserbringer.Text
Wettbewerb1.Cells(lZeile, 4).Value = ComboBoxAnbieter.Text
Wettbewerb1.Cells(lZeile, 5).Value = ComboBoxProdukt.Text
Wettbewerb1.Cells(lZeile, 6).Value = TextBoxRettungsmittel.Text
Wettbewerb1.Cells(lZeile, 7).Value = TextBoxDatumEinfuehrung.Text
Wettbewerb1.Cells(lZeile, 8).Value = TextBoxDatumNutzung.Text
Wettbewerb1.Cells(lZeile, 9).Value = TextBoxDatumStand.Text
Wettbewerb1.Cells(lZeile, 10).Value = TextBoxKommentarfeld.Text
Call Sortieren 'Sortieren des Tabellenblattes
Call Wettbewerb 'Aktualisieren der ListBox
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
ListBox1.ListIndex = Listind
Call AnzahlAnbieter
End Sub

Die Suchfunktion sieht so aus und das Option Explicit ist wahrscheinlich das Problem:
Option Explicit
Private arrSelected() As Boolean 'Array mit True/False für Treffer/nicht Treffer in Zeilen
Private Z As Long                'aktueller Treffer-Index im Array
Dim Listind As Integer
Option Compare Text
Private Sub UserForm_Activate()
Me.Top = main.Top + 0
Me.Left = main.Left + 154
End Sub
Private Sub Suche()
Dim i As Integer, ii As Integer
Dim vntList, strTxt As String
strTxt = LCase(TextBoxSuche)
vntList = ListBox1.List
ReDim arrSelected(0 To ListBox1.ListCount - 1)
Z = -1
If strTxt  "" Then
For i = 0 To ListBox1.ListCount - 1
For ii = 0 To ListBox1.ColumnCount - 1
arrSelected(i) = InStr(LCase(vntList(i, ii)), strTxt) > 0
If arrSelected(i) = True Then
If Z = -1 Then Z = i '1. Treffer merken
Exit For
End If
Next
Next
End If
With ListBox1
.ListIndex = Z '1. Treffer markieren
End With
End Sub
Private Sub SucheWeiter()
If Z = -1 Then Exit Sub
Do
Z = Z + 1
If Z > UBound(arrSelected) Then Z = 0
If arrSelected(Z) = True Then
Me.ListBox1.ListIndex = Z
Exit Do
End If
Loop
End Sub
Private Sub SucheZurueck()
If Z = -1 Then Exit Sub
Do
Z = Z - 1
If Z = -1 Then Z = UBound(arrSelected)
If arrSelected(Z) = True Then
Me.ListBox1.ListIndex = Z
Exit Do
End If
Loop
End Sub
'Für den Rückwärtssuchbutton
Private Sub CommandButtonBackward_Click()
If Z = -1 Then
KeinTreffer.Show
Else
Call SucheZurueck
End If
End Sub
'Für den Weitersuchbutton
Private Sub CommandButtonForward_Click()
If Z = -1 Then
KeinTreffer.Show
Else
Call SucheWeiter
End If
End Sub
Private Sub TextBoxSuche_Change()
If ListBox1.ListCount = 0 Then
Hinweis.Show
Else
Call Suche
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode  1 Then
Cancel = 1
End If
End Sub
Vielen Dank für eure Unterstützung.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nachfrage ListBox nächster Wert
21.08.2020 15:28:08
Gerd
Moin Matthias!
Private Sub CommandButton3_Click() 'Speichern Schaltfläche Ereignisroutine
Dim lZeile As Long
Dim Wettbewerb1 As Worksheet
Set Wettberwerb1 = Tabelle1 'oder = Worksheets("Name der Tabelle")

Gruß Gerd
AW: Nachfrage ListBox nächster Wert
24.08.2020 10:35:29
Matthias
Hallo Gerd,
vielen Dank für deinen Tipp. Leider produzierte er aber andere Fehler und die Funktion kam nicht wieder.
Ich habe aber nun alle Bezüge konkreter definiert:
ThisWorkbook.Worksheets("Wettbewerb1")

und nicht nur
Wettbewerb1

Das funktioniert nun, auch wenn ich nicht weiß warum.
Danke trotzdem!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige