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

ListBox.Selected Updated nicht...

ListBox.Selected Updated nicht...
24.04.2017 16:07:14
Max2
Hallo Leute,
ich habe eine Suchfunktion in meiner UserForm.
Werden mehrere Daten gefunden die ähnlich wie die Eingabe sind,
wird eine UserForm mit ListBox und Button geladen.
In die Listbox trage ich alle gefundenen Daten ein und per Knopfdruck
sollen dann die Daten des Ausgewählten Items, in eine andere UF übetragen werden.
Beim ersten mal klappt das Wunderbar, doch beim zweiten mal Updated er nicht
das .Selected, er sucht also immer noch nach dem vorigen .Selected
Wisst ihr woran das liegt und was ich machen muss, damit er es updated?
Hier ein wenig Code:

Option Explicit
Private Sub UserForm_Initialize()
Me.Caption = "Datensätze wie: " & UserForm1.TextBox2.Value
Call Main_Controls(Me)
End Sub
Private Sub CommandButton1_Click()
Dim suche As String
boolFound = False
Call get_selected_Item_from_List(suche)
Call what_is_User_looking_for(suche)
If boolFound Then Call Main_Auftrag_wie_Daten_holen
End Sub
Function get_selected_Item_from_List(ByRef itemToSearch As String)
Dim i As Long
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
itemToSearch = .List(i)
End If
Next i
End With
End Function
Die im Code genannten Unterfunktionen sind für diese Problemstellung nicht relevant,
deshalb auch hier nicht zu sehen.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Gelöst
24.04.2017 16:58:37
Max2

Option Explicit
Private index As Long
Private Sub UserForm_Initialize()
Me.Caption = "Datensätze wie: " & UserForm1.TextBox2.Value
Call Main_Controls(Me)
End Sub
Private Sub CommandButton2_Click()
Unload UserForm4
End Sub
Private Sub ListBox1_Click()
index = ListBox1.ListIndex
End Sub
Function get_selected_Item_from_List(ByRef itemToSearch As String)
Dim i As Long
With Me.ListBox1
itemToSearch = .List(index)
End With
End Function

AW: ListBox.Selected Updated nicht...
24.04.2017 17:12:34
onur
get_selected_Item_from_List ist deine variable, die du durch die funktion ändern lassen musst, und nicht itemToSearch - d.h. die funktion muss den wert ausgeben, wenn du z.B. schreibst x=get_selected_Item_from_List().
Function get_selected_Item_from_List()
Dim i As Long
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
get_selected_Item_from_List= .List(i)
End If
Next i
End With
End Function

Abngesehen davon:
Eine Funktion muss in einem MODUL stehen und wird NICHT mit CALL aufgerufen, sondern wie oben bereits beschrieben.
Auserdem kanst du das Listbox_Change-Ereignis benutzen, um auf änderungen in der Listbox abzufangen.
Du solltest, bevor du mit VBA anfängst, dir mal ein Buch dazu kaufen und es durchlesen.
Anzeige
AW: ListBox.Selected Updated nicht...
24.04.2017 17:46:49
Max2
Hallo,
danke für deine Hilfe.
Das man das eigentlich nicht tut ist mir bewusst, nur muss ich die Funktionen die ich mit Call aufrufe,
mehrmals in verschiedenen Modulen verwenden.
Ich habe 6 UserFormen und einen Haufen Tabellen.
Mein Code muss tausend Sachen machen und teilweise auch mehrmals das scheinbar gleiche
an anderer stelle und leicht anders.
Da ich mir gleich einen Kopfschuss geben kann wenn ich alles in ein Modul schreibe, da ich dann
überhaupt nichts mehr finde, rufe ich diese Funktionen lieber mit Call auf.
Würde ich die Funktionen mehrmals abschreiben und mit anderem Namen versehen, wäre mein Code
Redundant wie Hölle und das sollte man nun wirklich vermeiden.
Ich habe eine Funktion die mir die Letzte Zeile aus einer angegebenen Spalte holt.
Diese Funktion benutze ich x male, in 3 Modulen.
Die selbe Funktion 3mal zu schreiben wäre Schwachsinn.
Die Module zusammen zu fassen wäre auch Schwachsinn, da Sie jeweils vollkommen
unterschiedliche Dinge verrichten.
Anzeige
AW: ListBox.Selected Updated nicht...
24.04.2017 18:16:46
onur
Hi Max2
Was ich nicht verstehe:
Warum mus es eine funktion sein und nicht eine Sub?
Eine public deklarierte Sub (ebenso function) in einem modul kannst du von überall aufrufen und brauchst sie deshalb nicht 3x schreiben..
Nix für ungut, aber ich habe langsam den Eindruck, dass du eigentlich weder weisst, was eine Funktion oder ein Modul überhaupt ist noch wofür sie gut sind.
Wie gesagt kauf dir ein Buch oder schaue dir die Hilfe-Dateien an.
Gruß
Onur
Danke für Kritik!
25.04.2017 08:06:08
Max2
Hallo,
ich gebe zu, ich sollte mir wirklich mal ein Buch holen.
Habe vor wenigen Monaten angefangen mir das ganze selbst bei zu bringen, auch mit Hilfe
dieses Forums.
Dementsprechend sind meine Fertigkeiten und Kenntnisse.
Danke für deine Kritik!
Werde mich versuchen zu bessern :)
Anzeige
AW: ListBox.Selected Updated nicht...
24.04.2017 17:16:48
ChrisL
Hi Max
Inzwischen ist der Beitrag zwar erledigt, aber da ich die Beispiele schon geschrieben habe...
Sub t()
MsgBox "Mein Rückgabewert:" & MeineFkt(Eingabewert)
End Sub

Function MeineFkt(Eingabewert As String) As String
MeineFkt = "x"
End Function

______________________________
Sub t()
Call MeineProzedur(Eingabewert)
End Sub

Sub MeineProzedur(Eingabewert As String)
' Mach etwas mit Eingabewert, ohne Rückgabe
End Sub

cu
Chris
Anzeige
Danke für deine Hilfe...owT
24.04.2017 17:35:15
Max2

Gerne aber...
24.04.2017 17:58:44
ChrisL
Hi Max
Mein Muster war als Ergänzung zu onur gedacht und scheinbar hast du es nicht ganz verstanden.
Dein Beispiel mit der "letzten Zeile" ist m.E. legitim und davon will ich dich auch nicht abhalten, aber der Aufruf erfolgt doch nicht mit Call?
z.B.
Sub t()
x = FktLetzteZeile(Worksheets("Tabelle1"))
End Sub

Function FktLetzteZeile(WS As Worksheet) As Long
FktLetztZeile = WS.Cells(Rows.Count, 1).End(xlup).Row
End Function

cu
Chris
Da hast du vollkommen recht owT
24.04.2017 18:24:22
Max2

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige