Herbers Excel-Forum - das Archiv
Name für spalten definieren

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

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