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

Formularsteuerelement DropDown

Formularsteuerelement DropDown
16.02.2023 14:53:33
MMRH
Hallo Allerseits,
ich habe eine Excel-Datei mit mehreren Worksheets.
Eines dieser Worksheets kann mehrfach kopiert vorkommen. In dem original Sheet sind mehrere Formulartseuerelemente (DropDown), die die Bezeichnung "Drop Down 11" oder "Drop Down 20" haben.
Wenn dieses Blatt kopiert wird, erhalten die Forumularsteuerelemente neue Namen. Z.B. "Drop Down 30" etc..
Ich habe einen Code, der auf allen Blättern das gleiche tut, da diese insgesamt inhaltsgleich sind. Jedoch bricht der Code ab, da er nicht auf die neuen Bezeichnungen der kopierten Blätter eingespielt ist.
Wenn er z.B. im original.Worksheet mit
Set ws = ActiveSheet
Set dd = ws.DropDowns("Dropdown 11")
arbeitet, funktioniert das nicht im kopierten.Worksheet, welches "Dropdown 30" erwartet.
Ich benötige also einen Code der zuerst erkennt, wie die korrekte Bezeichnung des ersten Formularsteuerelements im ersten Blatt ist, dann im zweiten, dann im dritten und später des zweiten Formularsteuerelements im ersten Blatt, dann im zweiten, dann im dritten etc.
Dank im Voraus.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formularsteuerelement DropDown
16.02.2023 15:21:45
onur
Nimm ActiveX - dann bleiben nicht nur die Namen erhalten, sondern auch die Codes, da sie mitkopiert werden.
AW: Formularsteuerelement DropDown
16.02.2023 15:29:47
MMRH
Hi Onur,
das liegt leider nicht in meiner Hand. Es ist so gesetzt.
Danke.
AW: Formularsteuerelement DropDown
16.02.2023 15:31:22
onur
Tja dann noch viel Glück....
AW: Formularsteuerelement DropDown
17.02.2023 09:17:35
MMRH
Hallo,
ich kann mit diesem Code herausfinden, wie EINE Drop-Down Box (Formularsteuerelement) auf dem Sheet heißt und die Box ansprechen.
Das ist der Code:

Dim ws As Worksheet
Dim shp As Shape
Dim firstDropdownName As String
Dim i As Integer
Dim ddb() As String
Set ws = ActiveSheet
For Each shp In ws.Shapes
    ' Check if the shape is a form control
    If shp.Type = msoFormControl Then
        ' Check if the form control is a drop-down or a combo box
        If shp.FormControlType = xlDropDown Then
            ' Get the name of the form control
            firstDropdownName = shp.name 'Liefert "Drop Down 20", nötig ist aber "DropDown 20", daher Aufteilung über dbb und Mitnahme des 2. von 3 Bestandteilen   des Arrays.
               'Den Namen aufteilen
                ddb = Split(firstDropdownName, " ")
            Exit For
        End If
    End If
Next shp
'Herausfinden, wie das erste Label heißt - Ende
überschrift = oldws.Cells(90, 2).Value
        'Deklarieren
            Dim dd As Object
        'Bestimmen
            Set ws = ActiveSheet
            Set dd = ws.DropDowns("Dropdown " & ddb(2))
Das klappt soweit gut. Ich habe drei gleichartige Sheets, die sich nur darin unterscheiden, wie die EINE und erste Drop Down Box bezeichnet ist.
Im nächsten Schritt muss ich aber mit Blättern arbeiten, die mehrere Boxen haben. Daher müsste ich ein Möglichkeit haben, nicht den Namen der ersten Box, sondern im späteren Codeverlauf auch den Namen der zweiten, dritten etc. Box herauszufeinden.
Ist es möglich den ersten "Fund" zu überspringen? Danke für alle Ideen.
Mein erster Ansatz ist die Arbeit mit Indexnummern. Jedoch drängt die Zeit und ich bin für jeden konstruktiven Input dankbar.
Grüße
Anzeige
AW: Formularsteuerelement DropDown
17.02.2023 13:08:29
Mullit
Hallo,
Du müsstest die Indizes nochmal in einem Array sammeln und die Schleife ohne exit durchlaufen lassen....
etwas Vorsicht geboten, da jetzt die Dropdowns nach Erstellreihenfolge durchgeg. werden, nicht nach Position...dafür wär sowas wie .TopLeftCell nötig...
Option Explicit
Sub test()
 
Dim ws As Worksheet
Dim shp As Shape
Dim firstDropdownName As String
Dim i As Integer
Dim ddb() As String
Dim avntIndizes As Variant
Dim ialngIndex As Long
Set ws = ActiveSheet
For Each shp In ws.Shapes
    ' Check if the shape is a form control
    If shp.Type = msoFormControl Then
        ' Check if the form control is a drop-down or a combo box
        If shp.FormControlType = xlDropDown Then
            ' Get the name of the form control
            firstDropdownName = shp.Name 'Liefert "Drop Down 20", nötig ist aber "DropDown 20", daher Aufteilung über dbb und Mitnahme des 2. von 3 Bestandteilen   des Arrays.
               'Den Namen aufteilen
                ddb = Split(firstDropdownName, " ")
                ReDim avntIndizes(ialngIndex)
                avntIndizes(ialngIndex) = Split(firstDropdownName, " ")
                ialngIndex = ialngIndex + 1
        End If
    End If
Next shp
'Herausfinden, wie das erste Label heißt - Ende
'''überschrift = oldws.Cells(90, 2).Value
        'Deklarieren
            Dim dd As Excel.DropDown
        'Bestimmen
            Set ws = ActiveSheet
            Set dd = ws.DropDowns("Dropdown " & avntIndizes(2)(2))
            
            MsgBox dd.Name
End Sub
Gruß, Mullit
Anzeige
AW: Formularsteuerelement DropDown
17.02.2023 13:14:04
Mullit
...uups sorry, war noch n Stockfehler drin....
Option Explicit
Sub test()
 
Dim ws As Worksheet
Dim shp As Shape
Dim firstDropdownName As String
Dim i As Integer
Dim ddb() As String
Dim avntIndizes() As Variant
Dim ialngIndex As Long
Set ws = ActiveSheet
For Each shp In ws.Shapes
    ' Check if the shape is a form control
    If shp.Type = msoFormControl Then
        ' Check if the form control is a drop-down or a combo box
        If shp.FormControlType = xlDropDown Then
            ' Get the name of the form control
            firstDropdownName = shp.Name 'Liefert "Drop Down 20", nötig ist aber "DropDown 20", daher Aufteilung über dbb und Mitnahme des 2. von 3 Bestandteilen   des Arrays.
               'Den Namen aufteilen
                ddb = Split(firstDropdownName, " ")
                ReDim Preserve avntIndizes(ialngIndex)
                avntIndizes(ialngIndex) = Split(firstDropdownName, " ")
                ialngIndex = ialngIndex + 1
        End If
    End If
Next shp
'Herausfinden, wie das erste Label heißt - Ende
'''überschrift = oldws.Cells(90, 2).Value
        'Deklarieren
            Dim dd As Excel.DropDown
        'Bestimmen
            Set ws = ActiveSheet
            Set dd = ws.DropDowns("Dropdown " & avntIndizes(2)(2))
            
            MsgBox dd.Name
End Sub
Gruß, Mullit
Anzeige
AW: Formularsteuerelement DropDown
17.02.2023 15:54:10
Mullit
...und so noch besser....
Option Explicit
Sub test()
 
Dim ws As Worksheet
Dim shp As Shape
Dim firstDropdownName As String
Dim i As Integer
Dim ddb() As String
Dim astrIndizes() As String
Dim ialngIndex As Long
Dim dd As Excel.DropDown
Set ws = ActiveSheet
For Each shp In ws.Shapes
    ' Check if the shape is a form control
    If shp.Type = msoFormControl Then
        ' Check if the form control is a drop-down or a combo box
        If shp.FormControlType = xlDropDown Then
            ' Get the name of the form control
            firstDropdownName = shp.Name 'Liefert "Drop Down 20", nötig ist aber "DropDown 20", daher Aufteilung über dbb und Mitnahme des 2. von 3 Bestandteilen   des Arrays.
               'Den Namen aufteilen
                ddb = Split(firstDropdownName, " ")
                ReDim Preserve astrIndizes(ialngIndex)
                astrIndizes(ialngIndex) = ddb(2)
                ialngIndex = ialngIndex + 1
        End If
    End If
Next shp
'Herausfinden, wie das erste Label heißt - Ende
'''überschrift = oldws.Cells(90, 2).Value
        'Deklarieren
            
        'Bestimmen
            Set ws = ActiveSheet
            Set dd = ws.DropDowns("Dropdown " & astrIndizes(2))
            
            MsgBox dd.Name
End Sub
Gruß, Mullit
Anzeige
AW: Formularsteuerelement DropDown
20.02.2023 11:17:15
MMRH
Hi. vielen Dank.
Ich werde erst einmal nicht dazu kommen es testen zu können. Aber ich versuche Bescheid zu geben.
Danke dennoch.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige