Namen anlegen

21/01/2009 - 00:06 von Martin Worm | Report spam
hallo,

ich wollte ein paar Namen in diversen Workbooks anlegen.

Dafür hab ich folgendes Makro(in xl2003) geschrieben

Sub NamenEinfuegen()
Dim Blatt As String
Blatt = ActiveSheet.Name
ActiveWorkbook.Names.Add "Ziel", _
Replace(Replace("=indirect(%'&'!$A$9%)", "&", Blatt), "%", Chr(34))
ActiveWorkbook.Names.Add "Quelle", _
Replace(Replace("=indirect(%'&'!$A$4:$N$28%)", "&", Blatt), "%", _
Chr(34))
ActiveWorkbook.Names.Add "LfdeZahlen", _
Replace(Replace("=indirekt(%'&'!$B$4:$M$7%)", "&", Blatt), "%", _
Chr(34))

End Sub

Wie ich feststellen mußte, wird der erste Name richtig angelegt
(Indirekt in Großbuchstaben), der Zweite nicht(indirect bleibt klein)
der Dritte wieder richtig(indirekt in Großbuchst)

(falls sich jemand wundert über das doppelte Replace, ich will "
einfügen und das ist in VBA schwierig<eg>)
(und in XL2000 gehts, wenn indirekt mit c geschrieben wird, nutzt aber
nix, im Büro hab ich xl2003)

fragend
mit freundlichen Grüßen

Martin Worm
benutze XL 2000 und Win XP SpX
 

Lesen sie die antworten

#1 Andreas Killer
21/01/2009 - 08:37 | Warnen spam
Martin Worm schrieb:

ich wollte ein paar Namen in diversen Workbooks anlegen.


...
Wie ich feststellen mußte, wird der erste Name richtig angelegt
(Indirekt in Großbuchstaben), der Zweite nicht(indirect bleibt klein)
der Dritte wieder richtig(indirekt in Großbuchst)


Das liegt an Deiner generierten Formel, die ist falsch, das sind noch
einige ' drin. Debugge mal das und schau Dir Z,Q,L GENAU an!

Sub NamenEinfuegen()
Dim Blatt As String
Blatt = ActiveSheet.Name
Z = Replace(Replace("=indirect(%'&'!$A$9%)", "&", Blatt), _
"%", Chr(34))
Q = Replace(Replace("=indirect(%'&'!$A$4:$N$28%)", "&", Blatt), _
"%", Chr(34))
L = Replace(Replace("=indirekt(%'&'!$B$4:$M$7%)", "&", Blatt), _
"%", Chr(34))
End Sub

(falls sich jemand wundert über das doppelte Replace, ich will "
einfügen und das ist in VBA schwierig<eg>)
(und in XL2000 gehts, wenn indirekt mit c geschrieben wird, nutzt aber
nix, im Büro hab ich xl2003)


Vergiss mal die " und probier mal das:

Sub NamenEinfuegen()
Dim Blatt As String
Blatt = ActiveSheet.Name
ActiveWorkbook.Names.Add "Ziel", "=indirect(" & Blatt & "!$A$9)"
End Sub

Schreib in A1 "=Ziel", in B1 "123" und in A9 "B1", alles ohne die ".
Geht bei mir (XL2002) einwandfrei.

BTW, ein "=INDIREKT(A4:N28)" gibt bei mir schon als Formel einen Fehler.

Andreas.

Ähnliche fragen