Evento Change
Se produce cuando el usuario final cambia la selección en un cuadro combinado de la barra de comandos.
Private Sub CommandBarComboBox_Change
(ByVal Ctrl As CommandBarComboBox)
Comentarios
El evento Change se reconoce mediante el objeto CommandBarComboBox. Para devolver el evento Change de un control CommandBarComboBox específico, utilice la palabra clave WithEvents para declarar una variable y, a continuación, establezca la variable en el control CommandBarComboBox. Cuando se active el evento Change, éste ejecutará la macro o el código que se especificó con la propiedad OnAction del control.
Ejemplo
El ejemplo siguiente crea una barra de comandos con un control CommandBarComboBox que contiene cuatro selecciones. El cuadro combinado corresponde a la interacción del usuario mediante el evento CommandBarComboBox_Change.
Private ctlComboBoxHandler As New ComboBoxHandler
Sub AddComboBox()
Set HostApp = Application
Dim newBar As Office.CommandBar
Set newBar = HostApp.CommandBars.Add(Name:="Test CommandBar", Temporary:=True)
Dim newCombo As Office.CommandBarComboBox
Set newCombo = newBar.Controls.Add(msoControlComboBox)
With newCombo
.AddItem "First Class", 1
.AddItem "Business Class", 2
.AddItem "Coach Class", 3
.AddItem "Standby", 4
.DropDownLines = 5
.DropDownWidth = 75
.ListHeaderCount = 0
End With
ctlComboBoxHandler.SyncBox newCombo
newBar.Visible = True
End Sub
El ejemplo anterior se basa en el código siguiente, que se almacena en un módulo de clase en el proyecto VBA.
Private WithEvents ComboBoxEvent As Office.CommandBarComboBox
Public Sub SyncBox(box As Office.CommandBarComboBox)
Set ComboBoxEvent = box
If Not box Is Nothing Then
MsgBox "Synced " & box.Caption & " ComboBox events."
End If
End Sub
Private Sub Class_Terminate()
Set ComboBoxEvent = Nothing
End Sub
Private Sub ComboBoxEvent_Change(ByVal Ctrl As Office.CommandBarComboBox)
Dim stComboText As String
stComboText = Ctrl.Text
Select Case stComboText
Case "First Class"
FirstClass
Case "Business Class"
BusinessClass
Case "Coach Class"
CoachClass
Case "Standby"
Standby
End Select
End Sub
Private Sub FirstClass()
MsgBox "You selected First Class reservations"
End Sub
Private Sub BusinessClass()
MsgBox "You selected Business Class reservations"
End Sub
Private Sub CoachClass()
MsgBox "You selected Coach Class reservations"
End Sub
Private Sub Standby()
MsgBox "You chose to fly standby"
End Sub