Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
372to376
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
372to376
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

aktive Listbox finden

aktive Listbox finden
01.02.2004 16:07:13
Markus
Hallo zusammen
Wie kann ich aus einem Userform mit 5 Listboxen ausfindig machen welche den Focus hat.
Ich starte aus einer der 5 Listboxen eine zweite Userform und möchte nun nochmal abfragen (oder einfach auf Nummer sicher gehen)von welcher Listbox der auslöser kam.
Gruss Markus

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aktive Listbox finden
01.02.2004 19:09:05
Nepumuk
Hallo Markus,
selbst wenn du die Listboxen zu einer neuen Klasse zusammengefasst hast, bekommst du doch den Namen der Box in der Objektvariablen geliefert. Damit kannst du einer öffentlichen Variablen eine eindeutige Nummer zuweisen. Wenn du jedes Click - Ereignis einzeln verarbeitest, ist es das selbe Prinzip.
Beispiel:
In einem Standardmodul:
Public intListbox as Integer
und im Klassenmodul des Userforms:

Option Explicit
Private Sub ListBox1_Click()
intListbox = 1
End Sub
Private Sub ListBox2_Click()
intListbox = 2
End Sub
Private Sub ListBox3_Click()
intListbox = 3
End Sub


Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk
Anzeige
AW: aktive Listbox finden
01.02.2004 20:01:54
Markus
Hallo Nepumuk
Das geht natürlich auch.
Aber ich hatte mir gedacht ob ich irgendwie über die Eigenschaft oder so
auf die Listbox zugreifen kann die unter der geöffneten Userform liegt. So Quasi welche Listbox den Focus hat.
Danke
Gruss Markus
p.s. viele Wege führen zum Ziel
AW: aktive Listbox finden
01.02.2004 19:15:03
GraFri
Hallo
Vielleicht das, was du suchst. Könnte vermutlich auch einfacher gelöst werden.


'----------------------------------------------------------
'UserForm
Option Explicit
Private oControlArray()         As clsControlArray
Private Const clControlCount    As Long = 5 'Anzahl der ListBoxen
Private NewListBox              As Control
Dim n
Private Sub UserForm_Initialize()
Dim a                           As Long
Dim objAlle                     As msforms.Control
'Füllen der Listboxen
For n = 1 To 5
    ListBox1.AddItem n
    ListBox2.AddItem n * 2
    ListBox3.AddItem n * 3
    ListBox4.AddItem n * 4
    ListBox5.AddItem n * 5
Next n
 
a = 1
For Each objAlle In Me.Controls
    If TypeName(objAlle) = "ListBox" Then
        ReDim Preserve oControlArray(1 To a)
        Set NewListBox = Controls(objAlle.Name)
        Set oControlArray(a) = New clsControlArray
        oControlArray(a).Initialise NewListBox, a
        a = a + 1
    End If
Next objAlle
End Sub
'----------------------------------------------------------
'----------------------------------------------------------
'Klassenmodul Name 'clsControlArray
Option Explicit
Option Compare Text
Private WithEvents zoListBox        As msforms.ListBox
Private zlIndex As Long

Private Sub zoListBox_Click()
    MsgBox "ListBox" & zlIndex & " wurde geklickt..." & Chr(13) & _
    "Gewählter Eintrag der Listbox " & zoListBox.Text, vbInformation
End Sub
Private Sub Class_Terminate()
    Set zoListBox = Nothing
End Sub
Sub Initialise(oControl As Object, lControlIndex As Long)
    zlIndex = lControlIndex
    Select Case TypeName(oControl)
    Case "ListBox"
        Set zoListBox = oControl
    Case Else
        Stop
    End Select
End Sub
Property Get Index() As Long
    Index = zlIndex
End Property
Function Control(sName As StringAs Object
    Select Case sName
    Case "ListBox"
        Set Control = zoListBox
    Case Else
        Stop
    End Select
End Function
'----------------------------------------------------------


     Code eingefügt mit Syntaxhighlighter 2.5

Mit freundlichen Grüßen, GraFri
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige