Combobox aktiviert sich beim Klicken auf Zelle
Betrifft: Combobox aktiviert sich beim Klicken auf Zelle
von: Daniel
Geschrieben am: 03.09.2014 11:59:02
Hallo zusammen,
Ich habe wiedermal eine Frage:
Ich habe auf einem Worksheet 4 Comboboxen (ActiveX Element) die mit 1 Code hinterlegt wurden. Jedes dieser Comboboxen hat eine bestimmte Anzahl an Listenelementen, d.h. je nach dem welche Kombination dieser Listenelement ich anwähle, stellt sich im Worksheet 1 bestimmtes Szenario für eine bestimmte Rechnung, die ich dann durchführen möchte, ein. Zum Beispiel werden bestimmte Comboboxen unsichtbar/sichtbar gemacht (d.h. visible = False/True), bestimmte Zeilen werden versteckt (Hidden) etc.
Problem: Wenn ich die gewünschten Listenelemte in den Comboboxen anwähle verschwinden zuerst die Comboboxen und das gewünschte Szenario erscheint dann erst wenn ich eine Zelle anklicke. Allerdings holpert das Tool später ein bisschen, wenn ich dann die eigentliche Rechnung laufen lasse. Es hat bestimmt was mit diesen Comboboxen bzw. mit dem hinterlegten Code zu tun, das habe ich zig mal ausprobiert.
Könnt ihr mir weiterhelfen? Wisst Ihr um was es geht?
Könnte es sein, dass sich das Problem ergibt, wenn ich eine Combox unsichtbar mache und das Programm nochmals die schon unsichtbare Combobox wieder unsichtbar machen möchte (dies ist so programmiert zurzeit) Probleme kriegt?
Als Beispiel hier ein Auschnitt des Codes:
'Templates ist ein Sheet im Workbook1, Calculation ein anderes Sheet im selben Workbook1
If Sheets("Templates").Range("R7").Value = "Effect" Then
Sheets("Calculation").Range("F30:I30").Value = "Is the an effect 1 or an effect 2?"
Sheets("Calculation").OLEObjects("OtherThanEffect").Visible = True
If Sheets("Templates").Range("R10").Value = "effect 1" Then
Sheets("DNEL Calculation Animal Data").OLEObjects("Dose 1").Visible = False
Sheets("DNEL Calculation Animal Data").OLEObjects("Dose 2").Visible = True
ElseIf Sheets("Templates").Range("R10").Value = "OtherThanEffect" Then
Sheets("DNEL Calculation Animal Data").OLEObjects("Dose 1").Visible = True
Sheets("DNEL Calculation Animal Data").OLEObjects("Dose 2").Visible = False
End If
Sheets("Calculation").OLEObjects("Dose 3").Visible = False
Sheets("Calculation").Rows("60:66").Hidden = False
Sheets("Calculation").Range("B67").Value = "4. Experimental animal"
Sheets("Calculation").Rows("108:112").Hidden = False
Sheets("Calculation").Rows("113:120").Hidden = True
End If
Ich danke für Eure Hilfe,
Daniel
 |
Betrifft: AW: Combobox aktiviert sich beim Klicken auf Zelle
von: fcs
Geschrieben am: 03.09.2014 16:01:13
Hallo Daniel,
in Arbeitsmappen in denen Ereignismakros integriert sind ist es ratsam, die Ereignismakros während der Makroaausführung vorübergehend zu deaktivieren, damit es nicht zu rekursiven Aufrufen und ggf. Endlosschleifen kommt.
Bei Comoboxen kann das Change_Ereignis ausgelöst werden, wenn Zeilen ein-/ausgeblendet werden.
Leider wird diese Ereignis mit der der generellen Deaktivierung nicht deaktiviert.
Man muss sich selebr darum kümmern, dass wiederholte Starts der Ereignismakros verhindert werden. Dies kann man mit einer Steuervariablen ereichen, die dazu führt das beim 2. Strat des Ereignismakros dieses sofort wieder verlassen wird.
Nachfolgend Beispiele:
Gruß
Franz
'Code in beliebiegem Modul speziell Tabellenblatt modul
Option Explicit
Private bolAktion As Boolean 'Moldulweit deklarierte Variable
Sub aaTest()
'Variablendeklaration
Dim StatusCalc As Long
If bolAktion = True Then Exit Sub
'Makrobremsen zurücksetzen
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = True
.ScreenUpdating = True
End With
'hier der eigentliche Code der ausgeführt werden soll
'...
'...
'Makrobremsen zurücksetzen
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
bolAktion = False
End Sub
Private Sub ComboBox1_Change()
If bolAktion = True Then Exit Sub
bolAktion = True
'Makrobremsen lösen
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
MsgBox "CB1 Changed"
If Range(Rows(13), Rows(15)).Hidden = True Then
Me.ComboBox1.Visible = True
Range(Rows(13), Rows(15)).Hidden = False
Else
Range(Rows(13), Rows(15)).Hidden = True
Me.ComboBox1.Visible = False
End If
'Makrobremsen zurücksetzen
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
bolAktion = False
End Sub
Private Sub CommandButton1_Click()
If bolAktion = True Then Exit Sub
bolAktion = True
'Variablendeklaration
Dim StatusCalc As Long
'Makrobremsen lösen
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
If Range(Rows(13), Rows(15)).Hidden = True Then
Me.ComboBox1.Visible = True
Range(Rows(13), Rows(15)).Hidden = False
Else
Range(Rows(13), Rows(15)).Hidden = True
Me.ComboBox1.Visible = False
End If
'Makrobremsen zurücksetzen
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
bolAktion = False
End Sub
 |
Betrifft: AW: Combobox aktiviert sich beim Klicken auf Zelle
von: Daniel
Geschrieben am: 03.09.2014 16:49:00
Hallo Franz,
Danke für die ausführliche Antwort, werde mich nun dahinterklemmen um das zu verstehen.
Ich habe weiterhin herausgefunden, dass wenn ich den Browserverlauf lösche, die Comboboxen wieder einigermassen funktionieren. Hat das einen Zusammenhang mit dem was Du gerade geschrieben hast?
Danke!
Liebe Grüsse,
Daniel
Beiträge aus den Excel-Beispielen zum Thema "Combobox aktiviert sich beim Klicken auf Zelle"