![]() |
Betrifft: ComboBoxDaten in Abhängigkeit filtern o. Userform
von: Andreas
Hallo Excelexperten,
Nach langem erfolglosen suchen möchte ich nun bei euch mein glück versuchen.
habe folgende frage:
situation. tabelle1 hat spalte a nummern, b sind bezeichnungen, e bis... sind monate, pro monat 4 spalten
zu jeder bezeichnung steht in zeile und spalte eines monats ein x oder nicht (ja/nein) sozusagen
so in tabelle 2 habe ich ein combifeld, in dem ich monat anwählen kann (aus tabelle 3, Kalender)
in spalte a sind dann die tage runterwärts pro zeile drin.
nun habe ich für jeden tag (pro Zeile) in spalte i combiboxen angelegt. mit denen kann ich dann auf die nummern und bezeichnungen in Tabelle 1 zugreifen und die Auswahl in die zeilen setzen.(mit ListFillRange)
Mein problem ist nun, das die nummern und bezeichnungen nach dem gewählten monat gefiltert werden sollen und da noch zusätzlich nur die mit dem "x". und die in den Combiboxen der zeilen ausgegeben werden.
hoffe es ist verständlich (mein 1. Versuch)und jemand hat eine idee...vielen dank schon mal im voraus
Gruß an die Excel-freunde....andreas
![]() |
Betrifft: AW: ComboBoxDaten in Abhängigkeit filtern o. Userform
von: fcs
Geschrieben am: 21.05.2008 11:44:12
Hallo Andreas,
die meiner Meinung nach beste Lösung ist, die für den gewählten Monat relevanten Nummern/Bezeichnungen in ein separates Blatt zu übertragen und den Listenauswahlbereich mit einem Namen zu versehen. Dieser Name wird dann in den Comboboxen in Spalte I als ListFillRange verwendet.
Die Makros zur Aktualiserung der Auswahlliste werden vom Change-Ereignis der Monats-Combobox gestartet.
Alternativ könnte man auch die AddItem-Methode verwenden, um die ComboBoxen mit der Auswahlliste zu füllen. Dann muss man jedoch dafür sorgen, dass die Liste zum richtigen zeitpunkt mit Daten versorgt wird. Außerdem wird es kopliziert den Inhalt einer verknüpften Zelle zu verwalten, da die Auswahllisten beim Öffnen der datei leer sind.
Hier eine Beispieldatei, die in etwa auf deine Fragestellung zugeschnitten ist.
https://www.herber.de/bbs/user/52508.xls
Gruß
Franz
![]() |
Betrifft: AW: ComboBoxDaten in Abhängigkeit filtern o. Userf
von: Andreas
![]() |
Betrifft: AW: ComboBoxDaten in Abhängigkeit filtern o. Userf
von: fcs
Geschrieben am: 22.05.2008 04:08:25
Hallo Andres,
ich hab mir den Link auf diesen Thread gespeichert, so dass ich einfach checken kann, ob noch weiter Fragen sind.
Wäre aber hilfreich, wenn du mir ggf. zusätzlich eine kleine E-Mail schickst, dass noch Fragen sind.
Die E-Mail-Adresse findest du unter Forums-Seiten--Profile--Profilliste Name: fcs
Gruß
Franz
![]() |
Betrifft: AW: ComboBoxDaten in Abhängigkeit filtern o. Userf
von: Andreas
Private Sub ComboBox1_Change() 'Combobox mit Monatsauswahl
'Setzen der Tabellen-Objekte
Set objWksData = Worksheets(strDaten)
Set objWksAuswahl = Worksheets(strAuswahl)
'Auswahlliste Aktualisieren
Call AuswahllisteMonat(Me.ComboBox1.Value)
'Listfillrange der Comboboxen in Spalte I aktualisieren
Call ListFillRangeCombos_I("Auswahl.Bezeichnung")
End Sub
weiß nicht welche variable er meint und wo die definiert werden muß. markiert ist immer das "(strDaten)"
vieleicht hab ich nur falsch reinkopiert...
danke im Voraus
Gruß andreas
![]() |
Betrifft: AW: ComboBoxDaten in Abhängigkeit filtern o. Userf
von: fcs
Geschrieben am: 24.05.2008 21:32:07
Hallo Andreas,
sieht so aus, als ob du die Deklaration der Variablen und Konstanten nicht komplett kopiert hast.
Option Explicit
'Konstanten im Blatt mit den Auswahldaten
Private Const strDaten As String = "Tabelle1" 'Tabellenblatt-Name (Blatt mit den "X")
Private Const lngDataZ1 As Long = 3 '1. Zeile mit Nummer
Private Const lngSpJanuar As Long = 5 'Nummer der Spalte mit x im Monat Januar
Private Const lngSpMonat As Long = 4 'Anzahl Spalten je Monat
'Konstanten im Blatt mit den ComboListen (nur erforderlich für Zwischenspeicherbuttons)
Private Const lngEinZ1 As Long = 3 'Zeile der 1. Combobox in Spalte I
'Konstanten im Blatt mit den Auswahllisten
Private Const strAuswahl As String = "Kalender" 'Tabellenblatt-Name
Private Const lngAuswNummer As Long = 3 'Spalte mit Nummer in Auswahlliste
Private Const lngAuswZ1 As Long = 3 '1. Zeile der Auswahlliste
'Objektvariablen für die Tabellenblätter
Private objWksData As Worksheet 'Tabellenblatt mit Auswahldaten
Private objWksEingabe As Worksheet 'Tabellenblatt mit Comboboxen (nur für Zwischenspeicher- _
Buttons)
Private objWksAuswahl As Worksheet 'Tabellenblatt mit Auswahllisten
Private arrSpalteI() 'Array zum Zwischenspeichern der Werte in Spalte
Der Ort wo du die Prozedurn hinkopiert hast schein OK zu sein. Im VBA-Editor unter dem Blatt mit den Komboboxen. Du kannst strDaten aber auch ersetzen durch den Namen des Tabellenblatts mit den X für die Monate in Anführungszeichen
Set objWksData = Worksheets(strDaten)
Set objWksData = Worksheets("TabelleXYZ")
Gruß
Franz
![]() |
Betrifft: AW: ComboBoxDaten in Abhängigkeit filtern o. Userf
von: Andreas
![]() |
Betrifft: AW: ComboBoxDaten in Abhängigkeit filtern o. Userf
von: fcs
Geschrieben am: 25.05.2008 14:21:50
Hallo Andreas,
zur Erfassung aller 4 Spalten eines Monats muss noch eine weitere Prüfschleife eingebaut werden.
siehe Änderung im Anschluss.
Die Buttons zum Zwischenspeichern sind nur dann relevant, wenn du den Monat wechseln und anschließend die Werte des vorherigen Monats eintragen möchtest.
Gruß
Franz
Private Sub AuswahllisteMonat(strMonat As String)
'Aktualisert die Auswahlliste für den Monat entsprechend den gesetzten "x"
Dim intMonat As Integer, intI As Integer
Dim lngZeile As Long, lngZeileAusw As Long, lngSpalteX As Long
With objWksAuswahl
'Alte Daten der Auswahlliste löschen
.Range(.Cells(lngAuswZ1, lngAuswNummer), _
.Cells(lngAuswZ1, lngAuswNummer).End(xlDown).Offset(0, 1)).ClearContents
lngZeileAusw = lngAuswZ1 - 1
.Cells(lngAuswZ1 - 2, lngAuswNummer + 1).Value = strMonat
End With
With objWksData
'X-Spalte des Monats bestimmen, dazu müssen Monatsnamen als Langname (z.B. März) _
eingegeben sein, sonst Festlegung der Variablen intMonat per Select Case erforderlich.
intMonat = Month(CDate("1." & strMonat & " " & Year(Date)))
lngSpalteX = lngSpJanuar + (intMonat - 1) * lngSpMonat
'Prüfen der Zeilen für den Monat auf Eintrag "x"
For lngZeile = lngDataZ1 To .Cells(.Rows.Count, 1).End(xlUp).Row
'4 Spalten des Monats abarbeiten
For intI = 0 To 3
If LCase(.Cells(lngZeile, lngSpalteX + intI).Value) = "x" Then
lngZeileAusw = lngZeileAusw + 1
objWksAuswahl.Cells(lngZeileAusw, lngAuswNummer) = _
.Cells(lngZeile, 1).Value 'Nummer
objWksAuswahl.Cells(lngZeileAusw, lngAuswNummer + 1) = _
.Cells(lngZeile, 2).Value 'Bezeichnung
Exit For
End If
Next
Next
End With
'Bereich für Name "Auswahl.Bezeichnung" neu setzen
With objWksAuswahl
Application.Names("Auswahl.Bezeichnung").RefersTo = "='" & .Name & "'!" _
& .Range(.Cells(lngAuswZ1, lngAuswNummer), .Cells(lngZeileAusw, lngAuswNummer + 1)). _
Address
End With
End Sub
![]() |
Betrifft: AW: ComboBoxDaten in Abhängigkeit filtern o. Userf
von: Andreas
![]() |