Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dropdownfeld erneut anwählen
#1
Hallo Zusammen,
ich habe ein Dropdownmenüfeld erstellt über das ich verschiedene (nicht alle) Tabellen anwählen kann, funktioniert auch Super.
ABER: 
Wähle ich zum Beispiel Tab 24, geht diese auf, allerdings kann ich die Tab nicht erneut anwählen (da passiert nix). Erst wenn ich über das Dropdownmenü eine beliebige andere Tab ausgewählt habe funktioniert der "Sprung" zu Tab 24 auch wieder. Was ist in meiner Anweisung Falsch ???

Private Sub MassenAR_Change()

    Dim sht As String

    sht = Worksheets("Deckblatt").MassenAR.Value
    Worksheets(sht).Activate

End Sub


Vielen Dank für Eure Hilfe
Norbert
Antworten Top
#2
Wenn du nochmal den selben Eintrag wählst, dann ändert sich ja nichts, ergo wird auch kein Changeereignis ausgelöst. Ergänze den Code so, dass nach eefolgter Auswahl die Combobox geleert wird. Beachte dabei, dass du dafür mit Application.EnableEvents = False arbeiten musst, sonst löst du wieder ein Changeereignis aus. Danach wieder auf True setzen.
Schöne Grüße
Berni
Antworten Top
#3
Hallo Berni,
vielen Dank schon mal für die Info. Könntest Du mir bei dem Code helfen, ich bekomme es einfach nicht hin.

Vielen Dank
Norbert
Antworten Top
#4
Hallo Norbert,

entschuldige, ich habe vergessen, dir zu antworten. Bittesehr

Code:
Private Sub MassenAR_Change()
Dim sht As String

sht = Worksheets("Deckblatt").MassenAR.Value
Worksheets(sht).Activate

Application.EnableEvents = False
Worksheets("Deckblatt").MassenAR.ClearContents
Application.EnableEvents = True

End Sub
Statt
Code:
Worksheets("Deckblatt").MassenAR.ClearContents
könnte unter Umständen auch
Code:
Worksheets("Deckblatt").MassenAR.Clear
oder
Code:
Worksheets("Deckblatt").MassenAR.Value = ""
passend sein, da ich deine Gegebenheiten nicht kenne.
Schöne Grüße
Berni
Antworten Top
#5
Hallo Berni,
ist überhaupt kein Problem, ich bin froh wenn mir jemand helfen kann.
Deine Lösung funktioniert fast richtig.
Mit 
Worksheets("Deckblatt").MassenAR.Value = ""

oder

Worksheets("Deckblatt").MassenAR.Clear

wechselt excel zur gewünschten Tabelle und lässt sich auch mehrmals anwählen, so wie es sein soll ABER
es kommt immer erst das Visual Basic Fenster mit Laufzeitfehler 9,  Index außerhalb des gültigen Bereiches. Ich klicke auf Beenden, die Tabelle ist offen und lässt sich auch wieder auf dem Deckblatt erneut anwählen und die gleiche Meldung kommt wieder. Wie ändere ich das noch ????? 

Mit
 Worksheets("Deckblatt").MassenAR.ClearContents   funktioniert es nicht.

Wenn Du mir hier noch weiterhelfen könntest, wäre Super. Lass Dir ruhig Zeit.

Vielen Dank Norbert
Antworten Top
#6
Lade eine Beispielmappe hoch, dann kann ich testen. Sonst wird das ein sinnlos langer Thread.
Schöne Grüße
Berni
Antworten Top
#7
Hi Berni,
hier die Datei, es handelt sich um die Dropdownfelder auf dem Deckblatt.

Danke
Gruß Norbert


Angehängte Dateien
.xlsm   xxxMassen mit Kalkulator vers 09.05.2020.xlsm (Größe: 740,31 KB / Downloads: 2)
Antworten Top
#8
Hallo Norbert,

ich hatte nicht bedacht, dass EnableEvents nicht für Formularsteuerelemente funktioniert. Daher wurde jedesmal mit dem Löschen des Inhalts der Combobox der Code ein zweites Mal ausgeführt. Der Blattname war dann "" (also leer) und damit kann Excel nichts anfangen. Das hat den Fehler verursacht.

Du brauchst eine globale Variable, wie im Beispiel mit "Abbruch" angeführt

Code:
Public Abbruch As Boolean


Private Sub MassenAR_Change()
Dim sht As String

If Abbruch Then
    Abbruch = False
    Exit Sub
End If

sht = Worksheets("Deckblatt").MassenAR.Value
Worksheets(sht).Activate

Abbruch = True
Worksheets("Deckblatt").MassenAR.Value = ""

End Sub

Das musst du für jede Combobox so machen. Es reicht aber die eine globale Variable, die kannst du immer verwenden.
Schöne Grüße
Berni
Antworten Top
#9
Hallo Berni,
Vielen Vielen Dank für Deine Mühe hat Super funktioniert.

Gruß Norbert
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste