Herbers Excel-Forum - das Archiv

Combo VBA

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Combo VBA
von: Stefan

Geschrieben am: 21.12.2006 12:30:28
Hi,
habe folgende Combobox ( nicht über User Form )
Private Sub ComboBox1_Click()
ComboBox1.ListFillRange = ("Listen!A1:A50")
If IsNumeric(Me.ComboBox1.Value) = True Then
Me.Cells(1, 1) = CLng(Me.ComboBox1.Value)
Else
Me.Cells(1, 1) = Me.ComboBox1.Value
End If
Application.Goto Cells(1, WorksheetFunction.Match(Cells(1, 1), Range("b1:iv1"), 0) + 1), True
End Sub

Damit ist es möglich, dass wenn ein bestimmter Wert aus der Box ausgewählt wird, die entsprechende Spalte ( wert steht in Zeile 1 der Spalte )angewählt wird.
Nun habe ich versucht, dass ganze nochmals zu machen (mit einer 2. Combobox) und zwar mit dem Ziel, dass wenn ein entsprechender Wert ausgewählt wird, die richtige Zeile angezeigt wird..
Nur leider schaff ich das irgendwie nicht...
Kann mir da jemand helfen ?
Für eine Antwort wäre sehr dankbar
LG Stefan
Bild

Betrifft: AW: Combo VBA
von: Dani

Geschrieben am: 21.12.2006 14:56:55
Hallo
ungetestet:
Private Sub ComboBox1_Click()
Dim Spalte As Integer
Dim Zeile As Integer
ComboBox1.ListFillRange = ("Listen!A1:A50")
If IsNumeric(Me.ComboBox1.Value) = True Then
Me.Cells(1, 1) = CLng(Me.ComboBox1.Value)
Else
Me.Cells(1, 1) = Me.ComboBox1.Value
End If
ComboBox2.ListFillRange = ("Listen!B1:B50")
If IsNumeric(Me.ComboBox1.Value) = True Then
Me.Cells(1, 2) = CLng(Me.ComboBox2.Value)
Else
Me.Cells(1, 2) = Me.ComboBox2.Value
End If
Spalte = WorksheetFunction.Match(Cells(1, 1), Range("b1:iv1"), 0)
Zeile = WorksheetFunction.Match(Cells(1, 2), Range(Columns(Spalte)))
Application.Goto Cells(Zeile, Spalte)
End Sub

Gutes gelingen
Dani
Bild

Betrifft: AW: Combo VBA
von: Stefan
Geschrieben am: 21.12.2006 15:28:11
Hey...
danke... Leider hats etwas mit der Zeile:
Zeile = WorksheetFunction.Match(Cells(1, 2), Range(Columns(Spalte)))
Da bekomm ich einen Laufzeitfehler...
LG Stefan
Bild

Betrifft: AW: Combo VBA
von: Dani

Geschrieben am: 22.12.2006 08:44:42
Hallo,
versuchs mal mit der Find-Methode
getestet:
Sub Test()
Dim Zeile As Range, Spalte As Range
Set Spalte = Range("B1:IV1").Find(what:=Cells(1, 1), LookAt:=xlWhole)
Set Zeile = Columns(Spalte + 2).Find(what:=Cells(1, 2), LookAt:=xlWhole)
Application.Goto Cells(Zeile.Row, Spalte.Column)
End Sub

Gruss
Dani
 Bild