Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1056to1060
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

Zellnamen per VB-AddIn vergeben

Zellnamen per VB-AddIn vergeben
07.03.2009 23:44:28
Larsînator
Hallo,
ich bin an meinem in VB6 geschriebenen COM-AddIn und hab damit bisher eigentlich alles hinbekommen.
Bei Zellnamen, die ich vergeben möchte, scheitere ich aber gerade.
In VB schaut mein Aufruf so aus: (xlsObj ist mein definiertes Excel-Objekt (das auch andernorts fehlerfrei angewendet wird))

xlsObj.activeworkbook.Names.Add Name:="testname", RefersToR1C1:="=Tabelle1!R1C1"


So. Wenn ich die Namen jetzt in Excel prüfe (BTW: mit u.g. Code), dann sind die Namen grundsätzlich vorhanden, aber die Bezüge dazu fehlen leider. Um die Bezugs-Adresse vergleichen zu können, habe ich zusätzlich einen Namen händisch richtig angelegt. Daran ist der Unterschied zu erkennen:
RefersToR1C1 (VB): =Tables!'R1C1'
RefersToR1C1 (manuell): =Tables!R1C1
Aber woher kommen die Hochkommas bzw. wie bekomme ich die weg?


Set newSheet = Worksheets.Add
i = 1
For Each nm In ActiveWorkbook.Names
newSheet.Cells(i, 1).Value = nm.Name
newSheet.Cells(i, 2).Value = "'" & nm.RefersTo
i = i + 1
Next
newSheet.Columns("A:B").AutoFit


13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellnamen per VB-AddIn vergeben
07.03.2009 23:50:44
Josef
Hallo Lars,
probier mal so.

RefersToR1C1:="='Tabelle1'!R1C1"


Gruß Sepp

Keine Lösung
08.03.2009 08:27:16
Larsînator
Hallo Sepp,
danke für den Tipp! Leider ohne Erfolg, sondern mit dem gleichen Ergebnis:
=Tables!'R1C1'
Das eigentliche Problem sind aber wohl die zu viel vorhandenen Hochkommas bei der Zeilen-/Spaltenangabe. Und die sind da, obwohl ich die beim Aufruf nicht angegeben habe.
Irgendwelche andere Tipps/Vermutungen/Verdächtige?
AW: Keine Lösung
08.03.2009 08:48:19
Tino
Hallo,
die Hochkommas werden bei Tabellennamen mit Leerzeichen verwendet,
damit Excel erkennen kann wo der Tabellenname anfängt und wo er aufhört.
Dies kannst Du einfach mal mit einer Formel testen.
 AB
1Beispiel ohne Leerz.Beispiel mit Leerz.
200

Formeln der Tabelle
ZelleFormel
A2=TestTabelle!A1
B2='Test Tabelle'!A1

Warum es bei Dir nicht funzt, kann ich auch nicht sagen.
Gruß Tino
Anzeige
AW: Keine Lösung
08.03.2009 08:59:49
Larsînator
Hallo Tino,
der Tabellenblattname ist wohl auch nicht das Problem.
Ich vermute das Problem bei den Hochkommas um den Zellbezug.
Die kann man manuell nicht eingeben und ich habe sie beim Aufruf ja auch nicht eingegeben.
Larsînator
AW: Keine Lösung
08.03.2009 09:20:59
Tino
Hallo,
habe es mal in VB6 getestet, kann es nicht nachvollziehen.
Userbild
Gruß Tino
AW: Keine Lösung
08.03.2009 09:46:03
Larsînator
So langsam finden wir zusammen. ;o)
Was ich nicht kann, ist den Namen aus VB heraus zu vergeben:
Userbild
Anzeige
AW: Keine Lösung
08.03.2009 10:04:52
Tino
Hallo,
versuche es mal ohne die R1C1 Schreibweise, einfach mal so

myXL.ActiveWorkbook.Names.Add "NameTest1", "=Tabelle1!$A$1"

Gruß Tino
AW: Keine Lösung
08.03.2009 11:18:51
Larsînator
Great! Damit läuft es so, wie es soll. Das Problem scheint wirklich zu sein, dass VB das "R1C1" nicht interpretieren kann. :o|
Die "$A$1" hatte ich wegen einem Denkfehler bis jetzt bewusst aussen vor gelassen, aber so läuft tatsächlich alles wie es soll. :o)
Also danke für den Tipp, Tino!
no problem, a beautiful sunday oT.
08.03.2009 11:31:04
Tino
hier noch ein Beispiel.
08.03.2009 11:15:57
Tino
Hallo,
also bei mir funzt es mit der A1 Schreibweise.

Sub TestExcel()
Dim myXL As Object
Set myXL = CreateObject(Class:="Excel.Application")
myXL.Workbooks.Add
myXL.Visible = True
With myXL.ActiveWorkbook.WorkSheets(1)
.Names.Add "NameTest1", "='" & .Name & "'!" & .Cells(1, 1).Address
.Names.Add "NameTest2", "='" & .Name & "'!" & .Cells(.Rows.Count, .Columns.Count).Address
Debug.Print .Names(1).RefersToR1C1
Debug.Print .Names(1).RefersTo
Debug.Print .Names("NameTest1").RefersToR1C1
Debug.Print .Names("NameTest1").RefersTo
Debug.Print .Names(2).RefersToR1C1
Debug.Print .Names(2).RefersTo
Debug.Print .Names("NameTest2").RefersToR1C1
Debug.Print .Names("NameTest2").RefersTo
End With
Set myXL = Nothing
End Sub


Gruß Tino

Anzeige
AW: hier noch ein Beispiel.
08.03.2009 11:22:02
Larsînator
Hmmm, eigentlich war ich der Meinung, dass ich .Address in meinen stundenlangen vergeblichen Versuchen auch schon dabei hatte.
Aber wahrscheinlich hatte ich da noch den Bezeichner RefersToR1C1:= dabei und die haben sich gebissen.
Naja, wie dem auch sei: Nochmal danke!
AW: Zellnamen per VB-AddIn vergeben
08.03.2009 11:44:28
Daniel
Hi
alternativ kann in der Funktion .NAMES .DD den Zellberich auch direkt als Objekt angeben und muss nicht den Umweg über den Address-String machen:

Application.Names.Add "Hallo", ThisWorkbook.Sheets("Tabelle2").Range("A1")


Gruß, Daniel

Anzeige
AW: Zellnamen per VB-AddIn vergeben
08.03.2009 11:53:48
Tino
Hallo Daniel,
gute Idee, geht auch.

Sub TestExcel()
Dim myXL As Object
Set myXL = CreateObject(Class:="Excel.Application")
myXL.Workbooks.Add
myXL.Visible = True
With myXL.ActiveWorkbook
.Names.Add "TestName1", .WorkSheets(2).Range("A1")
Debug.Print .Names(1).RefersToR1C1
Debug.Print .Names(1).RefersTo
End With
Set myXL = Nothing
End Sub


Gruß Tino

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige