Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

2 Kombinationsfelder aus Tabelle





Frage

Hallo Leute, ich versuche es kurz zu beschreiben und hoffe, dass ihr wisst, was ich will. Ich habe eine VBA-Anwendung unter Excel programmiert. Es handelt sich um ein UserForm. Dort sollen 2 Kombinationsfelder verfügbar sein. Ich habe eine Datentabelle Beispiel: Jahr/Monat ------- Jan Feb Mrz Apr Mai ....... 2004 10 10 12 13 17 2005 11 11 14 17 18 2006 13 14 17 17 20 Ich möchte nun ein Kombinationsfeld für das Jahr, ein Kombinationsfeld für den Monat Wenn ich nun z.B. 2004 und Apr auswähle, dann möchte ich gerne den Wert, der an dieser Stelle in der Tabelle steht auslesen und verarbeiten können. Der Einfachheit halber sage ich mal, dass ich ihn einfach ausgeben möchte, den Rest bekomme ich hin. Was habe ich geschafft: Ich weiß, wie ich die Kombinationsfelder mit den Daten aus der Tabelle (also die Jahreszahlen und den Monaten) füllen kann ohne dies von Hand einzutragen. Wo hängt es: Ich weiß nicht, wie ich den Wert aus der Tabelle auslesen kann, abhängig von der Auswahl in den Feldern. Ich hoffe, dass mir jemand helfen kann. Danke und Gruß, Reo

Antwort 1 von Kauz1

Hallo Reo

Schubs die Werte vom Listindex der Kombifelder in Variablen, und benutze diese, um auf die Zelle zuzugreifen.

Private Sub CommandButton1_Click()
z = ComboBox1.ListIndex ' Das Jahr
s = ComboBox2.ListIndex ' Der Monat
MsgBox z & " " & s
MsgBox "Jahr= " & ComboBox1.Value & " Monat= " & ComboBox2.Value & " Wert= " & Sheets("Tabelle1").Cells(z + 3, s + 7)
End Sub

Die +3 und +7 legen die Verschiebung in Zeile und Spalte zur Lage der Datenmatrix fest.
Achtung der erste Eintrag eines Kombifeldes hat den Listindex 0.

Falls das noch nicht ausführlich genug ist, dann Morgen mehr.

Gruß Andreas

Antwort 2 von Beverly

Hi Reo,

eine andere Möglichkeit ohne ListIndex

Private Sub CommandButton1_Click()
Dim raZelle1 As Range
Dim raZelle2 As Range
With Worksheets("Tabelle1")
Set raZelle1 = .Range("A:A").Find(ComboBoxJahr)
Set raZelle2 = .Range("B1:IV1").Find(ComboBoxMonat)
MsgBox .Cells(raZelle1.Row, raZelle2.Column)
End With
End Sub

Jahre stehen in Spalte A, Monate in Zeile 1.

Bis später,
Karin

Antwort 3 von Reo

Also erstmal vielen Dank euch beiden.
Ich bin leider schon lange raus aus dem Thema und ich weiß schon einiges nicht mehr.

Verratet mir bitte nochmal, wie man am besten die ComboBoxen mit Daten füttert.

Ich möchte die Daten ja aus der Tabelle auslesen.
Also ComboBox1 mit dem Jahr (also die Spalte 1)
und die ComboBox2 mit dem Monat (also die Zeile 1)

Irgendwie weiß ich nicht mehr, wie ich das damals hinbekommen hatte. Sorry, ist sicher ne dumme Frage, aber wie gesagt, bin etwas raus aus dem Stoff.

Wenn ich das hinbekommen habe, dann bin ich sicher, dass ich mit dem Rest, der oben steht klar komme. Das sieht auf jeden Fall schonmal sehr verständlich für mich aus.


Also vielen Dank.

Antwort 4 von Beverly

Hi Reo,

Private Sub UserForm_Activate()
    Dim raBereich As Range
    Dim inZaehler As Long
    Set raBereich = Range("A" & 2 & ":A" & IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count))
    ComboBoxJahr.RowSource = raBereich.Address
    For inZaehler = 2 To IIf(IsEmpty(Cells(1, Columns.Count)), Cells(1, Columns.Count).End(xlToLeft).Column, Columns.Count)
        ComboBoxMonat.AddItem Cells(1, inZaehler)
    Next inZaehler
    Set raBereich = Nothing
End Sub


Bis später,
Karin

Antwort 5 von Reo

Danke. Ich habe es hinbekommen. Jetzt geht alles genau so, wie ich wollte. Vielen Dank für die guten und sehr schnellen Tipps.