2 Kombinationsfelder aus Tabelle
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 schreiben
Antwort 1 von Kauz1 vom 15.06.2019, 04:54 Options
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 vom 15.06.2019, 06:08 Options
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 vom 15.06.2019, 23:55 Options
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 vom 16.06.2019, 08:59 Options
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 vom 16.06.2019, 13:10 Options
Danke. Ich habe es hinbekommen. Jetzt geht alles genau so, wie ich wollte. Vielen Dank für die guten und sehr schnellen Tipps.