Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

ComboBoxDaten in Abhängigkeit filtern o. Userform

Betrifft: ComboBoxDaten in Abhängigkeit filtern o. Userform von: Andreas
Geschrieben am: 20.05.2008 23:17:22

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
Geschrieben am: 21.05.2008 23:46:49

Hallo Franz
erst mal vielen vielen dank für deine Mühe und Antwort
die beispielmappe sieht auf den ersten blick super aus, fast so wie meine
respekt, hatte nicht gedacht, das meine erklärung ausreicht

ich werde die mappe, bzw die Makros bei mir testen, wird aber etwas dauern, bin halt noch anfänger mit
so was, und geb dir dann noch mal kurz info wie es klappt...

kurze frage noch dazu, wenn ich etwas länger brauche, siehst du meine antwort oder rückfrage dann noch?

ich hoffe es, denn ich kann nachfragen noch nicht ausschließen.
nochmals danke und lob an das forum, ist ne super sache
gruß an alle
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
Geschrieben am: 24.05.2008 18:35:10

Hallo Franz

Habe alle Code in meine Mappe kopiert, hoffe an die richtigen stellen, und dementsprechend angepasst.
auch die Bereichsnamen und Eigenschaften der Felder/Boxen hab ich angepasst.

jetzt macht er aber bei der monatswahl immer Fehler, geht in den code und sagt Variable nicht definiert.
und zwar bei demfolgenden Makro , das hab ich in das Blatt mit der Monatscombobox kopiert.
'Ereignismakros im Tabellen-Blatt

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
Geschrieben am: 24.05.2008 22:00:07

Hallo Franz

Da hast du recht, habe in der zwischenzeit weiterprobiert und dann rausgefunden, das ich zwar alles kopiert habe, aber immer in die unterschiedlichen Tabellenblätter...wie halt die anmerkung dahinter stand...
also zu auswahllisten usw. hab dann alles wie in der Beispieltabelle in die Comboliste getan und es ging...

aber nun hab ich das nächste kleine problem entdeckt, er zeigt mir nicht alle daten; die mit "X" sind; je monat an.
ich hab ja pro monat 4 Spalten (quasi für jede Woche im Monat eine)... und die "X" sind nicht nur in der ersten spalte eines monats..... ; es gibt auch bezeichnungen, wo in der zeile in allen 4 spalten des monats ein x steht, (diese sache ist so zu sagen jede woche vertreten)

was muß ich jetzt noch ändern, das die alle gefunden werden?
wenn ich den mai zum Bsp. nehme, sehe ich 6 auswahldaten, aber in der Tabelle sind es 24...

vielen dank ,hoffe du kannst mir nochmal helfen

achso, frage noch zu den Buttons zum Speichern, brauche ich die oder kann man die auch weglassen?

viele grüße (auch ans gesamte forum)
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
Geschrieben am: 25.05.2008 22:54:54

Hallo Franz

Das funktioniert ja wunderbar, habe das makro geändert und alles getestet. alles super

auch wenn ich den ganzen code noch nicht ganz verstehe, aber ich hab wieder etwas dazu gelernt...

möchte mich herzlichst bei dir für deine Hilfe und Mühe bedanken.
wenn ich wieder was brauche, werde ich mit sicherheit hier suchen oder fragen

Vielen dank nochmal
gruß andreas


 

Beiträge aus den Excel-Beispielen zum Thema "ComboBoxDaten in Abhängigkeit filtern o. Userform"