Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
216to220
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
216to220
216to220
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellennamen in VBA

Tabellennamen in VBA
10.02.2003 15:16:53
Sven
Hallo liebe Forum`ler

habe folgendes Problem:

Habe ein Workbook mit 5 Sheets
Tabelle1(KW1)
Tabelle11 (KW2)
Tabelle111 (KW3)
Tabelle1111 (KW4) und
Tabelle11111 (KW5)

Die Bezeichnungnen in der Klammer ändern sich jeden Monat. Jetzt habe ich folgenden Code in Tabelle11:

Dim startZeit As Date
Dim endZeit As Date
startZeit = Sheets("KW1").Range("E50").Value
endZeit = Sheets("KW1").Range("E51").Value
...

Solbald ich den Name der Tabelle1 ändere geht der VBA-Code nicht mehr. Habe statt "KW1" auch schon "Tabelle1" versucht, geht aber auch nicht. Was mache ich falsch und wie geht es richtig?

Danke
Sven

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Tabellennamen in VBA
10.02.2003 15:22:05
PeterW

Hallo Sven,

einfach Sheets(1), bzw. Sheets(11) ...

Gruß
Peter

Re: Tabellennamen in VBA
10.02.2003 15:22:22
RalfW

Hallo Sven,

da dein VBA-Code explizit den Namen der Tabellen verwendet, kann er auch nicht funktionieren, wenn du sie umbenennst.

Verwende besser die Indizies der Tabellen. Die bleiben beim Umbenennen konstant.

Also:

Dim startZeit As Date
Dim endZeit As Date
startZeit = Sheets(1).Range("E50").Value
endZeit = Sheets(1).Range("E51").Value

usw.

Viel Spaß
Ralf

RalfW hat Recht, ABER ...
10.02.2003 15:26:47
BerndL

Du darfst die Reihenfolge der Blätter nicht verändern.

MfG,
Bernd

Re: Tabellennamen in VBA
10.02.2003 15:56:55
kay.o

Hi,

du kannst das aber auch dynamisieren in dem du mit dem datetime die KW ermittelst.
ist die immer laufende KW jenigewelche die überschrift hat dann sowas.

...
blatt = "KW" & DateTime.DatePart("ww", datetime.now, 2, 1)
startZeit = Sheets(blatt).Range("E50").Value
endZeit = Sheets(blatt).Range("E51").Value
...

wie gesagt geht dann immer auf das blatt der jeweiligen waoche , da kannste auch hin und herschiben geht nie schief , es sei denn du bennenst die blätter falsch ;)

gruß
Kay

Anzeige
Re: RalfW hat Recht, ABER ...
10.02.2003 16:01:06
Steffan

Hallo,

Name und Index bei Tabellenblättern sind beide für VBA problematisch. (Namen bim Umbenennen der Blätter, Index beim Ändern der Reihenfolge). Stressfrei geht es nur bei Verwendung der Codenamen. Der steht im VBA-Editor im Eigenschaftsfenster im Feld '(Name)' und ist standarmäßig so wie der Tabellenname, wird aber beim Umbenennen der Tabelle nicht geändert (das geht nur im VBA-Eigenschaften-Fenster oder über VBA-Code: CodeName-Eigenschaft). Mittels Codenamen kann man auf Tabellenblätter wie Objekte zugreifen, also z.B. Tabelle1.Cells(1,1).Value="blablabla".

Steffan.


Anzeige
Re: Frage dazu ...
10.02.2003 16:29:13
BerndL

Hallo Steffan,
guter Tip, aber wie muß ich es anstellen, das ich dies auch mit einem bestimmtem WorkBook realisiert kriege?
Vielleicht hab' ich auch nur grad' 'nen Brett vor'm Kopp?!

Die kopiere1-SUB funzt nur, wenn ich in der With-Zeile das "WKB1." weglasse, hingegen meckern die anderen beiden Lösungen "Sheets("Tabelle1")" bzw. "Sheets(1)" nicht mit vorangestelltem "WKB1."

Besten Dank im voraus,
Bernd



Re: Frage dazu ...
10.02.2003 21:02:44
Otto Ecker

Hallo Bernd,

ganz einfach: Bei kopiere1 hast Du doppelt gemoppelt :-)

Du mußt das "set...usw" weglassen wenn Du mit dem "Tabelle1" als Objekt arbeitest. Ansonsten verwende Worksheets("Tabelle1")

Gruß Otto

Anzeige
Re: Und bei externen Zugriffen?
11.02.2003 08:22:26
BerndL

Hallo Otto,
danke, ABER wie mach ich es hier nur mit Tabelle1 ohne die anderen Lösungswege zu benutzen?
Oder geht's dann nicht.
Bei dem folgendem Bsp. erhalte ich "Laufzeitfehler 424".

MfG und Danke im Voraus,
Bernd



Re: Und bei externen Zugriffen?
11.02.2003 08:51:39
Steffan

Hallo Bernd,

versuch es mal so:

Steffan.

Na..., noch nicht so ganz.
11.02.2003 11:51:29
BerndL

Hi Steffan,
erstmal Danke für Deine Mühe, aber auch bei Deinem letzten Vorschlag darf der Blattname nicht ohne Makroanpassung verändert werden.

Ich bin bisher davon ausgegangen, daß ich - wenn AktiveMappe <> QuellMappe ist - immer auf auf die Quellmappe referenzieren muß (a'la Wkb1.Sheets("Quelle") oder Wkb1.Sheets(1)) und habe es daher auch mit Wkb1.Tabelle1 versucht.

JETZT
habe ich mir nochmal Otto's AW durch den Kopf gehen lassen und wirklich das Wkb1. weggelassen.
Siehe da, das Makro greift, obwohl AktiveMappe <> QuellMappe ist, doch auf die Tabelle1 der QuellMappe und nicht auf Die Tabelle1 von AktiveMappe zu.

WOBEI
ich sehr stark vermute: Es klappt nur wenn Quellmappe=MakroMappe ist.

Hier die Gegenüberstellung der 3 Verfahrensweisen (und danach eine abschließenden Frage):

Kennt einer ein Verfahren bei dem die ersten 3 Kommentarzeilen wie folgt aussehen würden:
'Vorteil: Tabelle1 in Wkb1 DARF umbenannt und DARF auch verschoben werden
'UND es ist das kürzeste Verfahren
'UND Makro brauch NICHT in der Datei sein, in der Tabelle1 ist

Besten Dank im Voraus,
Bernd









Anzeige
Kleine Korrektur zu "Na..., noch nicht so ganz"
11.02.2003 11:55:38
BerndL

Sorry,
im 3. Bsp. muß die eine Zeile natürlich NICHT so aussehen:
With Workbooks.Open("P:\Datei2.xls").Sheets("Tabelle1")
SONDERN so:
With Workbooks.Open("P:\Datei2.xls").Sheets("Ziel")

MfG,
Bernd

STOP, es klappt (Hab' mich verlesen, s. Text)
11.02.2003 12:14:02
BerndL

Hi Steffan,
sorry, sorry, sorry für meine Unterstellung in "Na..., noch nicht so ganz).

Wie heißt's so schön: "Wer lesen kann ist klar im Vorteil!"
Trifft auch mich wohl diesmal nicht zu :-(

Ich las c.Name, DOCH Du schriebst c.CodeName.

Nochmal Danke und Sorry,
Bernd

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige