Anzeige
Archiv - Navigation
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
968to972
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wie verschiebe ich Combobox (Datei von fcs)

Wie verschiebe ich Combobox (Datei von fcs)
16.04.2008 14:44:30
fcs)
Hallo,
der user fcs war so nett und hat mir ein Makro für mein Problem zur Verfügung gestellt. Komme soweit auch ganz gut klar. Nur möchte ich jetzt die Combobox zwei um einge Spalten nach rechts verschieben (momentan Spalte G, soll aber in Spalte N).
Ich kann in diesem Code nichts finden, was auf die Positionierung der Box hinweist. Kann mir jemand helfen?
Hier der Code:
Option Explicit
Private arrComboBox1() 'Array-Variable für Auswahldaten der Combobox 1
Private arrComboBox2() 'Array-Variable für Auswahldaten der Combobox 2

Private Sub ComboBox1_Change()
Dim intI
With Me.ComboBox1
If .LinkedCell = "" Then
Else
If .ListIndex  -1 Then
'restliche Spalten des gewählten Eintrags in die Tabelle eintragen.
For intI = 1 To 9
Me.Range(.LinkedCell).Offset(0, intI).Value = .List(.ListIndex, intI)
Next
End If
End If
End With
End Sub



Private Sub ComboBox2_Change()
Dim intI
With Me.ComboBox2
If .LinkedCell = "" Then
Else
If .ListIndex  -1 Then
'restliche Spalten  des gewählten Eintrags in die Tabelle eintragen.
For intI = 1 To 4
Me.Range(.LinkedCell).Offset(0, intI).Value = .List(.ListIndex, intI)
Next
End If
End If
End With
End Sub


' ################################################################
' Beim Aktivieren des Tabellenblattes Vertretungen werden jeweils die _
Auswahllisten für die beiden ComboBoxen aktualisiert.


Private Sub Worksheet_Activate()
Dim objBereich As Range
Const lngSpalteBereich As Long = 35 'Linke Spalte des Hilfsbereiches
Range("A2").Select
Call ComboBox1Daten 'Datenaktualisieren
'Daten zum Sortieren in temporären Bereich rechts von Spalte AI schreiben
With Me
Set objBereich = .Range(.Cells(1, lngSpalteBereich), .Cells(UBound(arrComboBox1, 1), _
lngSpalteBereich + UBound(arrComboBox1, 2) - 1))
End With
With objBereich
.Value = arrComboBox1
'Sortieren nach Bezirk, Menge
.Sort Key1:=.Range("A1"), Order1:=xlAscending, _
key2:=.Range("B1"), order2:=xlAscending, header:=xlNo
Me.ComboBox1.List = .Value 'Array-Daten der Auswahlbox zuweisen
.Clear
End With
Call ComboBox2Daten 'Datenaktualisieren
'Daten zum Sortieren in temporären Bereich rechts von Spalte AI schreiben
With Me
Set objBereich = .Range(.Cells(1, lngSpalteBereich), .Cells(UBound(arrComboBox2, 1), _
lngSpalteBereich + UBound(arrComboBox2, 2) - 1))
End With
With objBereich
.Value = arrComboBox2
'Sortieren nach Name, Vorname
.Sort Key1:=.Range("A1"), Order1:=xlAscending, _
key2:=.Range("B1"), order2:=xlAscending, header:=xlNo
Me.ComboBox2.List = .Value 'Array-Daten der Auswahlbox zuweisen
.Clear
End With
End Sub



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 > 1 And Target.Cells.Count = 1 Then
Select Case Target.Column
Case 1      'Combobox mit Daten aus Blatt Liste wird angezeigt
'Combobox positionieren, linkedCell anpassen und anzeigen
'Werte in der selectierten Zeile für die Zellen merken, _
die den Eintrag eindeutig kennzeichnen
varMerker1 = Target.Value 'ZB
varMerker2 = Target.Offset(0, 1).Value 'Rd
varMerker3 = Target.Offset(0, 3).Value 'Name
Me.ComboBox2.Visible = False 'andere Box ausblenden
With Me.ComboBox1
'Combobox unter selektierter Zelle positionieren und LinkedCell neu festlegen
.Top = Target.Offset(1, 0).Top
.Left = Target.Left
.LinkedCell = Target.Address
If varMerker1  "" Then
'Index des gemerkten Eintrags in der Liste ermitteln
For lngIndex = 0 To .ListCount - 1
'Prüfen, ob alle gemerkten Einträge mit dem Listeneintrag übereinstimmen
If .List(lngIndex, 0) = varMerker1 And _
.List(lngIndex, 1) = varMerker2 And _
.List(lngIndex, 3) = varMerker3 Then
.ListIndex = lngIndex
Exit For
End If
Next
Else
.ListIndex = -1
End If
.Visible = True
End With
Case 7      'Combobox2 mit Daten aus Blatt Aushilfen wird angezeigt
'Werte in der selektierten Zeile für die Zellen merken, _
die den Eintrag eindeutig kennzeichnen
varMerker1 = Target.Value 'Name
varMerker2 = Target.Offset(0, 1).Value 'Vorname
Me.ComboBox1.Visible = False 'andere Box ausblenden
With Me.ComboBox2
'Combobox unter selektierter Zelle positionieren und LinkedCell neu festlegen
.Top = Target.Offset(1, 0).Top
.Left = Target.Left
.LinkedCell = Target.Address
If varMerker1  "" Then
'Index des gemerkten Eintrags in der Liste ermitteln
For lngIndex = 0 To .ListCount - 1
'Prüfen, ob alle gemerkten Einträge mit dem Listeneintrag übereinstimmen
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
End Select
End If
End Sub


Sub ComboBox1Daten()
'Aktualisiert die Daten des Arrays für die Combobox 1 im Blatt Vertretungen
Const intSpalten As Integer = 10 'Anzahl Spalten in der Combo Liste = Spalten im Array
Dim objWs1 As Worksheet
Dim lngZeileListe As Long
Dim lngSpalteListe As Long
Dim lngZeileArr As Long
Dim intSpalteArr As Long
Set objWs1 = Worksheets("Bezirke")
With objWs1
'Anzahl Daten-Zeilen in Liste ermitteln = Zeilen mit Bezirk 0
lngZeileArr = 0
For lngZeileListe = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(lngZeileListe, 1) 0 Then
lngZeileArr = lngZeileArr + 1
End If
Next
'Array-Größe festlegen
ReDim arrComboBox1(1 To lngZeileArr, 1 To intSpalten)
'Daten aus der Liste auslesen und in das Array schreiben
lngZeileArr = 0
For lngZeileListe = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(lngZeileListe, 1) 0 Then
lngZeileArr = lngZeileArr + 1
For intSpalteArr = 1 To intSpalten
'Für jede Spalte der Combobox wird festgelegt, _
aus welcher Spalte der Tabelle der Wert ausgelesen wird
Select Case intSpalteArr
Case 1: lngSpalteListe = 3
Case 2: lngSpalteListe = 4
Case 3: lngSpalteListe = 18
Case 4: lngSpalteListe = 20
Case 5: lngSpalteListe = 2
Case 6: lngSpalteListe = 13
Case 7: lngSpalteListe = 14
Case 8: lngSpalteListe = 15
Case 9: lngSpalteListe = 16
Case 10: lngSpalteListe = 17
Case Else
lngSpalteListe = 0
MsgBox "Fehler, für Spalte " & intSpalteArr & " wurde noch kein Case-Fall definert"
End Select
If lngSpalteListe 0 Then
arrComboBox1(lngZeileArr, intSpalteArr) = .Cells(lngZeileListe, lngSpalteListe).Value
End If
Next
End If
Next
End With
End Sub


Sub ComboBox2Daten()
'Aktualisiert die Daten des Arrays für die Combobox 2 im Blatt Vertretungen
Const intSpalten As Integer = 5 'Anzahl Spalten in der Combo Liste = Spalten im Array
Dim objWs1 As Worksheet
Dim lngZeileListe As Long
Dim lngSpalteListe As Long
Dim lngZeileArr As Long
Dim intSpalteArr As Long
Set objWs1 = Worksheets("Aushilfen")
With objWs1
'Anzahl Daten-Zeilen in Liste ermitteln = Zeilen mit Wert in Spalte A ab Zeiel 2
lngZeileArr = 0
For lngZeileListe = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(lngZeileListe, 1) "" Then
lngZeileArr = lngZeileArr + 1
End If
Next
'Array-Größe festlegen
ReDim arrComboBox2(1 To lngZeileArr, 1 To intSpalten)
'Daten aus der Liste auslesen und in das Array schreiben
lngZeileArr = 0
For lngZeileListe = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(lngZeileListe, 1).Value "" Then
lngZeileArr = lngZeileArr + 1
For intSpalteArr = 1 To intSpalten
'Für jede Spalte der Combobox wird festgelegt, _
aus welcher Spalte der Tabelle der Wert ausgelesen wird
Select Case intSpalteArr
Case 1: lngSpalteListe = 1
Case 2: lngSpalteListe = 2
Case 3: lngSpalteListe = 3
Case 4: lngSpalteListe = 4
Case 5: lngSpalteListe = 5
Case Else
lngSpalteListe = 0
MsgBox "Fehler, für Spalte " & intSpalteArr & " wurde noch kein Case-Fall definert"
End Select
If lngSpalteListe 0 Then
arrComboBox2(lngZeileArr, intSpalteArr) = .Cells(lngZeileListe, lngSpalteListe).Value
End If
Next
End If
Next
End With
End Sub


1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie verschiebe ich Combobox (Datei von fcs)
16.04.2008 17:14:00
fcs)
Hallo onkelbobby,
die Spalte in der die Combox angezeigt wird und Daten einträgt wird in der Prozedur

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)


mit der Case-Anweisung festgelegt
Du muss Case 7 in Case 14 ändern um Spalte G statt N als Anzeige-Spalte für die Combobox zu erhalten.


Case 14      'Combobox2 mit Daten aus Blatt Aushilfen wird angezeigt
'Werte in der selektierten Zeile für die Zellen merken, _
die den Eintrag eindeutig kennzeichnen


Alles andere sollte dann weiter ohne Probleme funktionieren.
Gruß
Franz

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige