Registriert seit: 08.02.2017
Version(en): 2016
Hallo!
Ich möchte in einer Combobox.List Jahreszahlen beginnen mit dem Jahr 2007 bis zum aktuellen (2023) angezeigt bekommen.
Auf jeden Fall soll das aktuelle Jahr ganz oben und das älteste Jahr (2007) ganz unten angezeigt werden.
Kann mir da bitte jemand helfen?
LG
Thomas
Excel Version 2016
00202
Nicht registrierter Gast
Moin,
eine Möglichkeit:
Code:
Option Explicit
Private Sub UserForm_Activate()
Dim lngIndex As Long
For lngIndex = Year(Now) To 2007 Step -1
ComboBox1.AddItem lngIndex
Next lngIndex
ComboBox1.ListIndex = 0
End Sub
Registriert seit: 08.02.2017
Version(en): 2016
07.09.2023, 11:26
(Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2023, 11:26 von dertommy.)
Hallo!
Danke sehr für deine rasche Hilfe.
Ich habe nun deinen Code bei mir integriert, habe aber nun folgendes Problem.
Der Befehl " MsgBox ComboBox2.Value" wird nun zweimal aufgerufen. Einmal beim Öffnen der Userform und dann nochmal, wenn ich etwas in der Liste auswähle.
Ich hätte es nur gerne, wenn ich etwas aus der Liste auswähle und nicht schon beim Öffnen der Userform.
Anbei nun mein Code:
Code:
Private Sub UserForm_Activate()
Dim lngIndex As Long
For lngIndex = Year(Now) To 2007 Step -1
ComboBox2.AddItem lngIndex
Next lngIndex
ComboBox2.ListIndex = 0
End Sub
Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
Call SetComboBoxHook(ComboBox1)
End Sub
Private Sub ComboBox1_LostFocus()
Call RemoveComboBoxHook
End Sub
Private Sub ComboBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
Call SetComboBoxHook(ComboBox2)
End Sub
Private Sub ComboBox2_LostFocus()
Call RemoveComboBoxHook
End Sub
Private Sub ComboBox2_Change()
MsgBox ComboBox2.Value
End Sub
Ich hoffe, dass mir noch jemand helfen kann.
LG
Excel Version 2016
00202
Nicht registrierter Gast
Moin,
dann so:
[attachment=49404]
Registriert seit: 29.09.2015
Version(en): 2030,5
07.09.2023, 15:18
(Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2023, 15:18 von snb.)
Code:
Private Sub UserForm_Initialize()
ComboBox1.List=[index(row(2007:2023),)]
End Sub
Registriert seit: 08.02.2017
Version(en): 2016
08.09.2023, 06:22
(Dieser Beitrag wurde zuletzt bearbeitet: 08.09.2023, 06:23 von dertommy.)
Hallo Case!
Kannst du mir bitte den Code hier online stellen, ich kann die Datei leider nicht öffnen?
LG
Thomas
Excel Version 2016
Registriert seit: 08.02.2017
Version(en): 2016
Hallo snb!
Danke für den Code, welcher auch funktioniert.
Nur will ich nicht fix das Jahr 2023 drinnen stehen haben, sondern das aktuelle Jahr. Damit dann nächstes Jahr automatisch 2024 genommen wird. 2007 kann fix drinnen stehen.
Excel Version 2016
00202
Nicht registrierter Gast
Moin,
jup:
Code:
Option Explicit
Dim blnTMP As Boolean
Private Sub UserForm_Activate()
Dim lngIndex As Long
blnTMP = False
For lngIndex = Year(Now) To 2007 Step -1
ComboBox1.AddItem lngIndex
Next lngIndex
ComboBox1.ListIndex = 0
blnTMP = True
End Sub
Private Sub ComboBox1_Change()
If blnTMP Then
MsgBox "Change..."
End If
End Sub
Registriert seit: 29.09.2015
Version(en): 2030,5
@Case
Nicht
Code:
Private Sub UserForm_Activate()
Doch
Code:
Private Sub UserForm_Initialize()
00202
Nicht registrierter Gast
Moin,
@ snb
Ik neem altijd de "Activate event ". Eigenlijk hangt het altijd af van de manier van werken. Ik heb vaak mensen gezien die met de "Initialize event" werken en zich dan realiseren dat het maar één keer werkt als ze de UserForm starten. Ik gebruik het alleen voor grote eenmalige acties. Ik negeer het voor kleine loops.