Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Combobox - Liste dynamisieren

20 views
Skip to first unread message

Götz Alles

unread,
Jul 27, 2004, 10:20:18 AM7/27/04
to
Hallo zusammen,

ich würde gerne den (in der NG erstellten) folgenden Code
dynamisieren:
+++
Private Sub cboDatum_Change()

With Worksheets(Tabelle2.Name)
.CboDatum.ListFillRange = _
"Historie_Anmerkungen!A3:A30"
CboDatum = Format(CboDatum, "DD MMM YY ")
.Range("A63") = CDate(CboDatum)
End With

End Sub
+++
Da immer neue einträge hinzukommen, ist die starre
Anweisung "Historie_Anmerkungen!A3:A30" nicht so gut.

Mit fogendem Code
+++
With Worksheets(Tabelle2.Name)
.CboDatum.ListFillRange = "Historie_Anmerkungen!A3:A"
& .Range("A3").End(xlDown).Row
CboDatum = Format(CboDatum, "DD MMM YY ")
.Range("A63") = CDate(CboDatum)
End With
+++
erhalte ich allerdings nur die ersten beiden Einträge der
Quellliste (also Inhalt A3 und A4). Mit ".End(xlDown)"
müßte es imho doch aber die ganze Liste sein, oder nicht?

Ich bin für jeden Hinweis dankbar und danke Euch schon
einmal im Voraus.

cu
Götz
+++
Excel 2000

Melanie Breden

unread,
Jul 27, 2004, 11:16:29 AM7/27/04
to
Hallo Götz,

Götz Alles schrieb:

> ich würde gerne den (in der NG erstellten) folgenden Code
> dynamisieren:

> Mit fogendem Code


> +++
> With Worksheets(Tabelle2.Name)
> .CboDatum.ListFillRange = "Historie_Anmerkungen!A3:A"
> & .Range("A3").End(xlDown).Row
> CboDatum = Format(CboDatum, "DD MMM YY ")
> .Range("A63") = CDate(CboDatum)
> End With
> +++
> erhalte ich allerdings nur die ersten beiden Einträge der
> Quellliste (also Inhalt A3 und A4). Mit ".End(xlDown)"
> müßte es imho doch aber die ganze Liste sein, oder nicht?
>
> Ich bin für jeden Hinweis dankbar und danke Euch schon
> einmal im Voraus.

ohne es getestet zu haben, müsste es heißen:
.CboDatum.ListFillRange = "Historie_Anmerkungen!A3:A"
& .Range("A65536").End(xlUp).Row

Allerdings wird durch die With-Anweisung die letzte Zeile
des angegebenen Blattes herangezogen, nicht die von "Historie_Anmerkungen".
Dann müsste es lauten:

With Worksheets(Tabelle2.Name)
.CboDatum.ListFillRange = "Historie_Anmerkungen!A3:A" _
& Worksheets("Historie_Anmerkungen").Range("A65536").End(xlUp).Row
CboDatum.Text = Format(CboDatum.Text, "DD MMM YY ")


.Range("A63") = CDate(CboDatum)
End With

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#


Götz Alles

unread,
Jul 28, 2004, 4:56:29 AM7/28/04
to
Hallo Melanie,

>ohne es getestet zu haben, müsste es heißen:
> .CboDatum.ListFillRange = "Historie_Anmerkungen!A3:A"
> & .Range("A65536").End(xlUp).Row
>
>Allerdings wird durch die With-Anweisung die letzte Zeile
>des angegebenen Blattes herangezogen, nicht die
von "Historie_Anmerkungen".
>Dann müsste es lauten:
>
>With Worksheets(Tabelle2.Name)
> .CboDatum.ListFillRange = "Historie_Anmerkungen!A3:A"
_
> & Worksheets("Historie_Anmerkungen").Range
("A65536").End(xlUp).Row
> CboDatum.Text = Format(CboDatum.Text, "DD MMM YY ")
> .Range("A63") = CDate(CboDatum)
>End With

Wieder einmal perfekt! :-)

Vielen herzlichen Dank für die Hilfe.

cu
Götz

Felix Gierke

unread,
Jul 28, 2004, 12:29:47 PM7/28/04
to
Hallo Götz und Melanie,

hab mit Interesse euere Lösung gelesen und auch gleich mal
ausprobiert, hier noch eine andere Möglichkeit mit einem
dynamischen Bereich:

Name "DatumsReihe" definieren mit:
=Historie_Anmerkungen!$A$3:BEREICH.VERSCHIEBEN
(Historie_Anmerkungen!$A$3;ANZAHL2(Historie_Anmerkungen!
A3:A65536)-1;0;1)

Private Sub Worksheet_Activate()
cboDatum.ListFillRange = "DatumsReihe"
' ...
End Sub

Dieser dynamische Bereich läßt sich auch ím
Eigenschaftsfenster der ComboBox eintragen.

Besser, die Box wird schon dann neu gefüllt,
wenn "Tabelle2" wieder aktiviert wird, nachdem man ein
neues Datum in "Historie_Anmerkungen" eingetragen hat.

Viel Spaß und Gruß,
Felix

0 new messages