Anzeige
Archiv - Navigation
1168to1172
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme mit Z1S1-Bezugssystem bei Namen

Probleme mit Z1S1-Bezugssystem bei Namen
Manfred
Hallo zusammen.
ich möchte per VBA-Code einzelne benannte Bereiche (jeweils aus einer Zelle bestehend) selektieren. Die Bereiche habe ich vorher zum Teil per VBA-Code erzeugt und teilweise manuell definiert.
Mit der Funktion Names.RefersTo erhalte ich jetzt sehr unterschiedliche Strings.
Bei den mit VBA erzeugten steht zum Beispiel ="Tabelle1!R1Z1" bei den manuell erzeugten steht aber für die gleiche Zelle =Tabelle1!$A$1. Wenn ich in Excel auf Z1S1-Bezugsart umstelle, wird die gleiche Zelle in Excel mit der Adresse =Tabelle1!Z1S1 angegeben. Per VBA lese ich aber weiterhin =Tabelle1!$A$1 aus.
Wie kann ich diesem Wirrwarr Herr werden. Gibt es vielleicht eine einfachere Funktion mit der ich den ausgewählten Bereich selektieren kann unabhängig von der Schreibweise der RefersTo-Eigenschaft?
Vielen Dank im Voraus!
Manfred

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Range("DeinName").Select o.w.T.
29.07.2010 09:13:18
IngGi
Hallo Manfred,
Range("DeinName").Select
Gruß Ingolf
AW: Range("DeinName").Select o.w.T.
29.07.2010 09:59:51
Manfred
Hallo Ingolf,
das hatte ich natürlich als erstes probiert. Da kommt aber immer die Fehlermeldung:
Laufzeitfehler '1004'
Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen.
Ich verwende folgenden Code:
For Each nme In ThisWorkbook.Names
bname = nme.Name
Range(bname).Select
Next nme
Wenn ich statt der Variable bname direkt den Bereichsnamen (z. B. "alpha") eingebe, funktioniert der Code. Wo könnte der Fehler liegen?
Gruß Manfred
Range(nme).Select
29.07.2010 10:24:07
IngGi
Hallo Manfred,
wozu der Umweg über eine Stringvariable?
Range(nme).Select funktioniert.
Gruß Ingolf
Anzeige
Nachtrag
29.07.2010 10:37:00
Manfred
Jetzt habe ich noch mal mit dem Debugger gearbeitet und festgestellt, dass der Code bei den Bereichsnamen, die ich manuell definiert habe, funktioniert. Der Fehler tritt auf, sobald der erste Bereich, die per VBA-Code erzeugt wurde und als Bezug "Tabelle1!R20C60" enthält, selektiert werden soll.
Erzeugt wurden die Namen mit folgendem Code:
Cells(16, sp).Select
sname = Cells(16, 1) & "." & Cells(1, sp)
zname = ActiveSheet.Name & "!Z" & "16" & "S" & sp
ActiveWorkbook.Names.Add Name:=sname, RefersTo:=zname
Ich habe keine andere Möglichkeit gefunden um bei der .Add-Methode die Variable RefersTo zu definieren.
Gruß
Manfred
Anzeige
Problem gelöst
29.07.2010 11:05:31
Manfred
Hallo Ingolf,
ich habe den Fehler dank deiner Hinweise selbst gefunden. Jetzt läuft alles problemlos.
Gruß
Manfred
AW: Nachtrag
29.07.2010 11:06:51
IngGi
Hallo Manfred,
zu:
sname = Cells(16, 1) & "." & Cells(1, sp)
In der Variablen sname wird der Name des benannten Bereiches zusammengestellt. Die Verwendung eines Punktes oder sonstigen Sonderzeichens im Namen eines definierten Bereiches halte ich für keine gute Idee.
zu:
zname = ActiveSheet.Name & "!Z" & "16" & "S" & sp
In der Variablen zname wird der Bezug des benannten Bereiches zusammengestellt. Dem Bezug muss ein Gleichheitszeichen vorangestellt und es muss die A1-Schreibweise verwendet werden. Um aus Zeilen- und Spaltennummer einen Bezug in der A1-Schreibweise - also mit Spaltenbuchstaben - zu generieren, könntest du zum Beispiel einen kleinen Umweg über eine Rangevariable rng gehen:
Set rng = Cells(16, sp)
zname = "='" & ActiveSheet.Name & "'!" & rng.Address
Gruß Ingolf
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige