2 Comboxen Change-Ereignisse in einem Makro
18.08.2005 13:37:36
Moe
Die beiden ComboBoxen sind mit einer Tabelle verknüpft und man kann jeweils 1 Wert auswählen, dann wird ein Diagram erstellt und man kann beide Werte optisch vergleichen.
Nun mein Problem: ich habe die Beiden Comboboxen über die Funktion "Makro zuweisen" jeweils mit einem Sub verbunden der die Auswahl zurückgibt. Wenn man aber das Excel Dokument kopiert, sind die Comboboxen noch mit dem Makro des alten Dokuments verbunden deshalb will ich das über Combobox_change machen. Mit einer Combox ist das auch kein Problem, doch ich schaffe es nicht auch ein change Ereignis für die zweite Combobox zu schreiben da das Makro immer nur feststellt, dass eine Combobox verändert wurde, aber nicht erkennt welche. Ich füge den Code den ich schon habe hier mit an und bitte um die Hilfe der erfahrenen Makroprogramierer. Vielen Dank schon an dieser Stelle.
MfG
Moe
Modul1:
Sub ComboBoxCreator()
'Erstes ComboBoxfeld erstellen
ThisWorkbook.Activate
Worksheets(1).Activate
Set newBar = Application.CommandBars.Add(Name:="TestVergleicherCommandBar")
Dim Combo1 As Office.CommandBarComboBox
Set Combo1 = newBar.Controls.Add(Type:=msoControlComboBox, ID:=1)
With Combo1
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 6 To iRowL
If Not IsEmpty(Cells(iRow, 1)) Then
.AddItem Cells(iRow, 1).Value
End If
Next iRow
.DropDownWidth = 200
.ListHeaderCount = 0
End With
ctlComboBoxHandler.SyncBox Combo1
'Zweites ComboBoxfeld erstellen
ThisWorkbook.Activate
Worksheets(1).Activate
Dim combo2 As Office.CommandBarComboBox
Set combo2 = newBar.Controls.Add(Type:=msoControlComboBox, ID:=1)
With combo2
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 6 To iRowL
If Not IsEmpty(Cells(iRow, 1)) Then
.AddItem Cells(iRow, 1).Value
End If
Next iRow
.DropDownWidth = 200
.ListHeaderCount = 0
End With
CBH.SyncBox4 combo2
End Sub
Klassenmodul("ComboBoxEvent"):
Private WithEvents ComboBoxEvent As Office.CommandBarComboBox
Public Sub SyncBox(box As Office.CommandBarComboBox)
Set ComboBoxEvent = box
If Not box Is Nothing Then
MsgBox "Synced1 " & box.Caption & " ComboBox events."
End If
End Sub
Public Sub SyncBox4(box As Office.CommandBarComboBox)
Set ComboBoxEvent2 = box
If Not box Is Nothing Then
MsgBox "Synced2 " & 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)
MsgBox ("Erste ComboBox verändert")
End Sub
Private Sub ComboBoxEvent2_Change(ByVal Ctrl As Office.CommandBarComboBox)
MsgBox ("Zweite ComboBox verändert")
End Sub