Name für spalten definieren

Bild

Betrifft: Name für spalten definieren
von: Frank S.
Geschrieben am: 18.11.2003 21:46:45

Hallo,
ich habe da mal ein Problem.
Ich habe ein Makro erstellt welches unter Excel auch sehr gut klappt.


Dim anzahl, tabelle As String
anzahl = Trim(Str(Cells(Rows.Count, 1).End(xlUp).Row))
tabelle = "=Tabelle1!R1C1:R" + anzahl + "C5"
ActiveWorkbook.Names.Add Name:="daten", RefersToR1C1:= _
tabelle


Dieses Makro definiert für die Spalten A bis E und für alle beschriebenen Zeilen
einen Namen "daten".

Nun möchte ich aber dieses Makro direkt mit einem Visual Basic Programm ausführen. Der Code ist fast analog:


Dim xlbook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim anzahl As String
Dim tabelle As String

Set xlbook = GetObject(filename.Text)
Set xlSheet = xlbook.Worksheets("Tabelle1")

anzahl = Trim(Str(xlSheet.Cells(xlSheet.Rows.Count, 1).End(xlUp).Row))
tabelle = "=Tabelle1!R1C1:R" + anzahl + "C5"
xlbook.Names.Add Name:="daten", RefersToR1C1:=tabelle


Doch dieses Programm hat nicht gewünschten Effekt. Es wird zwar ein Name "daten" definiert, zu sehen in Einfügen->Name->Definieren, jedoch
wird dort als Bezug "=Tabelle1!R1C1:R427C5" angezeigt. Dies hat scheinbar keinen Effekt auf die Spalten.

Bei meinem oberen VBA Makro wird bei Einfügen->Name->Definieren auch daten angezeigt hierbei aber mit dem Bezug =Tabelle1!$A$1:$E$427.
Und dies hat genau den gewünschten Effekt auf die Spalten.

Wenn ich nun versuche für tabelle = "=Tabelle1!R1C1:R" + anzahl + "C5"
durch

tabelle = "=Tabelle1!$A$1:$E$" + anzahl

zu ersetzen funktoniert es nicht da RefersToR1C1:= .. diesen Bezug nicht verarbeitet.

Gibt es einen anderen Weg "=Tabelle1!$A$1:$E$" + anzahl in den Code einzufügen, oder irgendeine andere Möglichkeit über VB meinen Spalten einen Namen zu definieren??

danke

Frank S.

Bild


Betrifft: AW: Name für spalten definieren
von: Frank S.
Geschrieben am: 18.11.2003 22:58:35

Is okay hab es hinbekommen mit:

Dim anzahl As Integer
anzahl = xlSheet.Cells(xlSheet.Rows.Count, 1).End(xlUp).Row
Dim ranget As String
Dim MyNameRange As Name
ranget = "A1:E" + anzahl
Set Currrange = xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(anzahl, 5))
Set MyNameRange = xlbook.Names.Add("daten", Currrange)


Bild

Beiträge aus den Excel-Beispielen zum Thema " Name für spalten definieren"