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
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#
>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
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