Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1296to1300
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

VBA Name einfügen.

VBA Name einfügen.
04.02.2013 09:57:30
Falk
Hallo zusammen,
folgendes Makro soll einer bestimmten Zelle eines jeden Tabellenblattes (z.B. A1) den gleichen Namen (z.B. Test1)mit dem Tabellenblattnamen (z.b. Tabelle1)geben.
Also für A1 in Tabelle1 wäre der Name dann Tabelle1_Test1, für A1 in Tabelle2 also Tabelle2_Test1.
Sub Namen_vergeben()
Dim SN As Worksheet
Dim x As Integer
x = ActiveWorkbook.Sheets.Count
For a = 1 To x
ActiveWorkbook.Worksheets(a).Select
Activesheet.Names.Add Name:=ActiveWorkbook.Worksheets(a).Name &"_Test1", RefersToR1C1:= _
"Tabelle"&a&"! R1C1"
Next
End Sub
Irgendwo ist aber ein Fehler in dem Teil ReferstoR1C1 enthalten, wenn ich nämlich ReferstoToR1C1:="Tabelle1!R1C1" schreibe funktioniert das.
Und
Wenn ich Activebook verwende, gibt kommt es auch zu einer Fehlermeldung, warum? Ich brauch aber beide Versionen einmal mit Activesheet und ActiveBook.
Danke für die Hilfe im voraus ...
Gruß
Falk

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ins blaue AW: VBA Name einfügen.
04.02.2013 10:12:24
Klaus
Hallo Falk,
a&"! R1C1"
Das Leerzeichen ist auch in deinem Code? Gehört da nicht hin.
Da du "eh" mit select arbeitest, könnte auch das funktionieren:
Activesheet.Names.Add Name:=ActiveWorkbook.Worksheets(a).Name &"_Test1", RefersToR1C1:= activesheet.name & "!R1C1" 
beides ungetestet, daher noch offen.
Grüße,
Klaus M.vdT.

ins blaue AW: VBA Name einfügen.
04.02.2013 10:24:36
Falk
Hallo Klaus,
danke für die Antwort, bei a&"! R1C1" meckert er immer noch, warum auch immer!
Aber Deine
Activesheet.Names.Add Name:=ActiveWorkbook.Worksheets(a).Name &"_Test1", RefersToR1C1:= activesheet.name & "!R1C1"
funktioniert.
Ich habe die Zeile jetzt mit Activebook angefangen, aber da funktioniert es nicht, Excel gibt mir immer Laufzeitfehler 424 Objekt erforderlich heraus ...?
Gruß
Falk

Anzeige
ins blaue AW: VBA Name einfügen.
04.02.2013 10:30:52
Klaus
Hi,
Ich habe die Zeile jetzt mit Activebook angefangen,
versteh ich nicht. Willst du sichergehen, im richtigen Workbook zu sein? Rufst du den Code aus einem anderem Workbook heraus auf?
Geraten: statt
Activesheet.Names.Add
hast du
activeworkbook.names.add
genommen? Das kann nicht gehen :-) versuch mal
activeworkbook.activesheet.names.add
a&"! R1C1" meckert er immer noch
activesheet.name & "!R1C1" funktioniert.
Ich frag wieder ganz doof: hast du das genau so im Code stehen? Um das & müssen Leerzeichen drum herum! a_&_"!R1C1"
Grüße,
Klaus M.vdT.

Anzeige
ins blaue AW: VBA Name einfügen.
04.02.2013 11:30:41
Falk
Hallo Klaus,
das unwichtige zuerst, ja ich habe das Leerzeichen beachtet, kleiner Fehler am Rande, an einer anderen Stelle war noch eins ... tja, da hat das Auge dann doch nicht so gearbeitet wie es sollte! Aber jetzt zu einem anderen Problem. Alle genannten Lösungen funktionieren, aber wenn ich jetzt mich auf die Namen beziehen mit =Tabelle1_Test1 bekomme ich den Wert Tabelle1!R1C1 zurück?
Normalerweise sollte ich doch den Zellenwert erhalten, oder?
Und wenn ich mit der Maus die Zelle markiere (Gleichheitszeichen schon gesetzt in der Zelle) dann sollte die Formel dort ja =Tabelle1_Test1 heißen und nicht =Tabelle1!A1 ...?
Im Namensmanger steht folgendes:
Name: Tabelle1_Test1
Wert: Tabelle1!R!C!
Bezieht sich auf: ="Tabelle1!R1C1"
Bereich: Tabelle1 (hier kann aber auch Arbeitsmappe stehen, hängt jetzt vom Makro ab!)
Da ist doch was grundsätzlich falsch oder?
anbei nochmal das Makro
Sub Namen_vergeben()
Dim SN As Worksheet
Dim x As Integer
x = ActiveWorkbook.Sheets.Count
For a = 1 To x
ActiveWorkbook.Worksheets(a).Select
'ActiveWorkbook.ActiveSheet.Names.Add Name:=ActiveWorkbook.Worksheets(a).Name & " _
_Test1", RefersToR1C1:=ActiveSheet.Name & "!R1C1"
'ActiveSheet.Names.Add Name:=ActiveWorkbook.Worksheets(a).Name & "_Test1",  _
RefersToR1C1:=ActiveSheet.Name & "!R1C1"
ActiveSheet.Names.Add Name:=ActiveWorkbook.Worksheets(a).Name & "_Test1", RefersToR1C1: _
="Tabelle" & a & "!R1C1"
Next
End Sub
Gruß
Falk

Anzeige
Versteh ich nicht.
04.02.2013 11:44:31
Klaus
Hi Falk,
sorry - ich verstehe nicht was / warum du da mit den Namensmanager anstellen möchtest.
Grüße,
Klaus M.vdT.

AW: Versteh ich nicht.
04.02.2013 11:52:44
Falk
Hi Klaus,
die Info aus dem Namensmanager sind reiner informeller Natur, falls notwendig.
Es geht sich darum, dass die Namen die mit dem Makro erstellt worden sind für die einzelnen Zellen, nicht so funktionieren als wenn ich die Namen per Hand erstelle.
Also wenn ich per Hand und oben links in der Ecke für A1 den Namen Test1 eintrage und ich dann in B10 jetzt auf die Zelle A1 mich beziehe, steht in der Formel in B10 "=Test1" und in der Wert aus der Zelle A1.
Mit den aus dem Makro erstellten Namen sieht es so aus, B10 "=A1" bzw. "=Tabelle1!A1" und gibt den Wert Tabelle1!R!C!" zurück ...
Gruß
Falk

Anzeige
geht viel einfacher
04.02.2013 11:49:27
Rudi
Hallo,
Sub aaa()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Cells(1, 1).Name = wks.Name & "_test1"
Next
End Sub

Gruß
Rudi

Code spricht Bände ...
04.02.2013 11:51:41
Klaus
Hallo Rudi,
nachdem ich deinen Code gesehen habe, begreife ich auch was Falk erreichen wollte :-)
Danke fürs erleuchten,
Grüße,
Klaus M.vdT.

man könnte natürlich auch ...
04.02.2013 12:07:30
Rudi
Hallo,
auf jedem Blatt einen lokalen Namen einfügen.
z.B. Test1 auf jedes Blatt:
Sub aaa()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Cells(1, 1).Name = "'" & wks.Name & "'!test1"
Next
End Sub

Muss man dann in den Tabellen entsprechend referenzieren: =Tabelle1!test1
Gruß
Rudi

Anzeige
AW: man könnte natürlich auch ...
04.02.2013 13:35:14
Falk
Hallo Rudi,
danke für Deinen Hinweis, am Anfang hatte ich es auch so, aber da die Dateien für die ich dieses Makro verwende immer ca. 10-15 Tabellenblätter haben und auf jedem Tabellenblatt die entsprechenden Zellen (ca. 20) den gleichen Namen haben sollten und eine Differenzierung über den Tabellennamen stattfinden sollte habe ich nach einer flexiblen Lösung gesucht ...
Nochmals Danke an alle für die Hilfe
Gruß
Falk

AW: geht viel einfacher
04.02.2013 11:58:27
Falk
Hallo Rudi,
ja, vielen Dank für Deine Hilfe, natürlich auch die von Klaus und Danke für Deine Zeit und Nerven :-)
Rudi Dein Code funktioniert super, den nehm ich, Danke!!
Aber was ist an meinem falsch, ausser das er umständlich ist? Jetzt habe ich schon versucht durch die Netzgemeinde mir meinen Code zu stricken und fühle mich gegen die Wand gelaufen ...
Gruß
Falk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige