Comboboxen verschwunden?
onkelbobby
ich habe vor einiger Zeit mit Hilfe aus diesem Forum eine Datei mit diversen Makros erstellt.
Unter anderem werden durch Comboboxen Daten aus einer anderen Tabelle eingefügt. Mehrere Mitarbeiter arbeiten mit je einer dieser (gleichartigen) Dateien. Jetzt kommt es immer wieder zu dem Phänomen, dass die Comboboxen entweder zusammenschrumpfen (sind im Entwurfsmodus dann aber noch zu erkennen und ich kann die dann wieder größer ziehen) oder wie in einem jetzigen Fall scheinbar gänzlich verschwinden.
Bei mir selbst ist das noch nie aufgetreten, deshalb scheint es sich um einen "Bedienfehler" bzw. eine unerwartete Prozedur des Users zu handeln.
Eine der drei Comboboxen erscheinen, sobald ein Feld in Spalte "A", "R" oder "X" angeklickt wird (Code siehe unten). Das Befüllen der Combobox geschieht durch ein anderes Makro.
Beim Erstellen der Datei habe ich die drei Comboboxen anhand der Steuerelement-Toolbox per Hand angelegt. Die drei Comboboxen scheinen auch noch vorhanden zu sein. Wenn ich eine neue Combobox anlege, wird unter Eigenschaften "ComboBox4" angezeigt.
Meine Fragen: Wie kann ich verhindern, dass die Größe der Combobox sich verändert? Wie finde ich die vorhandenen Comoboxen und kann deren Größe (dauerhaft) ändern?
Hier mein Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim varMerker1 As Variant, varMerker2 As Variant, varMerker3 As Variant
Dim lngIndex As Long
If Target.Row > 3 And Target.Cells.Count = 1 Then
Select Case Target.Column
Case 1 'Spalte 1
varMerker1 = Target.Value
varMerker2 = Target.Offset(0, 1).Value
Me.ComboBox2.Visible = False
Me.ComboBox3.Visible = False
With Me.ComboBox1
.Top = Target.Offset(1, 0).Top
.Left = Target.Left
.LinkedCell = Target.Address
If varMerker1 "" Then
For lngIndex = 0 To .ListCount - 1
If .List(lngIndex, 0) = varMerker1 And _
.List(lngIndex, 1) = varMerker2 Then
.ListIndex = lngIndex
Exit For
End If
Next
Else
.ListIndex = -1
End If
.Visible = True
End With
Case 18
varMerker1 = Target.Value 'Name
varMerker2 = Target.Offset(0, 1).Value 'Vorname
Me.ComboBox1.Visible = False 'andere Box ausblenden
Me.ComboBox3.Visible = False 'andere Box ausblenden
With Me.ComboBox2
.Top = Target.Offset(1, 0).Top
.Left = Target.Left
.LinkedCell = Target.Address
If varMerker1 "" Then
For lngIndex = 0 To .ListCount - 1
If .List(lngIndex, 0) = varMerker1 And _
.List(lngIndex, 1) = varMerker2 Then
.ListIndex = lngIndex
Exit For
End If
Next
Else
.ListIndex = -1
End If
.Visible = True
End With
Case 24
varMerker1 = Target.Value
varMerker2 = Target.Offset(0, 3).Value
Me.ComboBox1.Visible = False 'andere Box ausblenden
Me.ComboBox2.Visible = False 'andere Box ausblenden
With Me.ComboBox3
.Top = Target.Offset(1, 0).Top
.Left = Target.Left
.LinkedCell = Target.Address
If varMerker1 "" Then
For lngIndex = 0 To .ListCount - 1
If .List(lngIndex, 0) = varMerker1 And _
.List(lngIndex, 1) = varMerker2 Then
.ListIndex = lngIndex
Exit For
End If
Next
Else
.ListIndex = -1
End If
.Visible = True
End With
Case Else
Me.ComboBox1.Visible = False
Me.ComboBox2.Visible = False
Me.ComboBox3.Visible = False
End Select
End If
End Sub