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

Versteh den Unterschied nicht CodeName - Blattname

Versteh den Unterschied nicht CodeName - Blattname
18.04.2017 12:16:53
Thomas
Moin Zusammen!
Mich wundert folgendes:

ThisWorkbook.Sheets("K a l e n d e r").Range("kalenderZurückNach").Value = wsName

funktioniert,
das hier nicht:
ThisWorkbook.tblKalender.Range("kalenderZurückNach").Value = wsName

Warum?
Also genauer, warum kann ich nach ThisWorkbook nicht über den CodeName auf das Worksheet zugreifen?
Das gehört doch zum Workbook?
Irgendwie hab ich wohl die Hierarchie nicht verstanden...
Ich benutze ThisWorkbook damit nix durcheinander kommt, wenn noch ein zweites Workbook geöffnet ist.
Hilft das dabei überhaupt?
Viele Grüße!
Thomas

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Versteh den Unterschied nicht CodeName - Blattname
18.04.2017 12:38:06
Oberschlumpf
Hi Thomas
ich unterstelle mal, dass du die Variable 'tblKalender' korrekt als Sheet deklariert hast
Dim tblKalender As Worksheet

Dann unterstelle ich, dass die Wertzuweisung an tblKalender korrekt erfolgt ist:
Set tblKalender = ThisWorkbook.Sheets("K a l e n d e r")

Ich unterstelle, weil du eben genau die von mir unterstellten Infos - nicht - mit angegeben hattest.
So, angenommen, ich habe recht, dann ist klar, wieso deine Fehlerzeile nicht funzt.
"Ausgeschrieben" bedeutet
ThisWorkbook.tblKalender.Range("kalenderZurückNach").Value = wsName

nichts anderes als
ThisWorkbook.ThisWorkbook.Sheets("K a l e n d e r").Range("kalenderZurückNach").Value = wsName

Erkennst du den Fehler?
Im Code erscheint 2x ThisWorkbook.
Das Schlüsselwort "ThisWorkbook" referenziert - eindeutig - auf die Datei, in der ein VBA-Code ausgeführt wird.
ThisWorkbook verwende auch ich genau aus dem von dir genannten Grund, wenn mehrere Dateien geöffnet sind.
Ich verwende ThisWorkbook aber nur dann, wenn ich auch den dazugehörigen Tabellenbezug voll ausschreibe.
Wenn ich Variablen wie du verwende, erübrigt sich ja das Ausschreiben von "ThisWorkbook", da dieses schon in der Variablen "enthalten" ist.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Versteh den Unterschied nicht CodeName - Blattname
18.04.2017 12:54:01
Rudi
Hallo,
Ich benutze ThisWorkbook damit nix durcheinander kommt, wenn noch ein zweites Workbook geöffnet ist.
Über den Codenamen kannst du ohnehin nur auf Objekte in der Mappe mit dem Code zugreifen.
tblKalender.Range("kalenderZurückNach").Value = wsName
Gruß
Rudi
sehe ich anders
18.04.2017 12:58:52
Oberschlumpf
Hi
Denn
Dim tbAndere As Worksheet
Set tbAndere = Workbooks("andereDatei").Sheets("Tabelle1")

verweist auf eine Tabelle in einer anderen Datei (Mappe), die zwar geöffnet ist, die aber keine einzige Codezeile enthalten muss.
Oder hab ich dich missverstanden?
Ciao
Thorsten
Anzeige
AW: sehe ich anders
18.04.2017 13:37:19
Rudi
Hallo Thorsten,
es war vom CodeName die Rede und nicht von Objektvariablen.
Gruß
Rudi
AW: Unterschied CodeName - Blattname
18.04.2017 13:05:42
Gerd
Hallo Thomas,
ein Workbook hat keine Sheet-Codename - Eigenschaft.
Das Workbook musst du bei Verwendung des Codename des Blattes weglassen.
Gruß Gerd
AW: Unterschied CodeName - Blattname
18.04.2017 13:51:16
Thomas
so viele Antworten! Cool! Ich danke Euch!
okay, wenn es das nicht gibt kann ich es natürlich nicht nutzen!
Ich hab den CodeName erst jetzt für mich entdeckt und fand es schön wenn der Blattname vom User frei geändert werden kann und ich die Sheets bequem ansprechen kann.
Was passiert wenn ich 2 Workbooks aufhabe in denen jeweils ein Arbeitsblätter den selben Codename hat?
(Ich vergleich eine alte Version mit der aktuellen... oder ich hole Daten aus alten Dateien)
Anzeige
AW: Unterschied CodeName - Blattname
18.04.2017 13:56:46
Gerd
Hallo Thomas,
mit MsgBox Tabelle1.Parent.Name
erhältst du die Datei.
Gruß Gerd
AW: Unterschied CodeName - Blattname
18.04.2017 18:26:37
Thomas
wunderbar!
Danke!
Unterschied CodeName:Blattname - Ergänzung
18.04.2017 19:26:03
Luc:-?
Hallo, Thomas;
alle Dokument-Objekte haben einen internen CodeName, der default-mäßig so lautet:
• für die Mappe → lokale dt Version DieseArbeitsmappe - originale US-Version ThisWorkbook
• für das Blatt → lokale dt Version TabelleX - originale US-Version wohl SheetX für X = lfd BlattNr
Man sollte diese Default-CodeNames (inkl dem des ganzen Projekts als VBAProject) nicht verwenden, zumindest dann nicht, wenn gleich­zeitig mehrere Dateien geöffnet sind u/o auf Pgmm eines anderen Projekts zuge­griffen wdn soll. Das sie beinhaltende Projekt muss dafür nämlich per Verweis in das verwendende (andere) VBA-Projekt eingebunden wdn. Das geht aber nicht mit Default-CodeNames, weil die natürlich vielfach auftreten und deshalb nicht eindeutig sind.
Will man sie unter diesen Umständen verwenden, muss man sie eindeutig umbenennen, was du offen­sichtlich bei denen der Blätter getan hast. Dass diese dann solitär sind und nur genau dieses eine Objekt referenzieren, wurde dir ja, nebst Begründung, bereits mitgeteilt.
Willst du also eine Art Hierarchie konstruieren, kannst du das nur über den CodeName selbst machen, um Zusammen­gehöriges optisch erkennen zu können; also etwa in der Art:
Projekt: P für P als n-stelliges ProjektKürzel
Mappe:  PM für M als n-stelliges MappenKürzel
Blatt:  PMBl für B als n-stelliges TabBlattKürzel u/o l=lfdTabBlattNr
Zusammengehörige Projekte könnten natürlich auch gleiche und dann flfd nummerierte CodeNames haben. Das alles ist aber nicht VBA-relevant (außer der Eindeutigkeit) und hat nur ordnenden Charakter!
ThisWorkbook sollte übrigens nur benutzt wdn, wenn die ihm zugeordneten Eigenschaften bzw Methoden auch genau Objekten der Mappe zugeordnet wdn sollen, in der auch das Pgm steht. In Pgmm eines AddIns wäre das idR ein fataler Fehler.
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Unterschied CodeName:Blattname - Ergänzung
18.04.2017 22:11:51
Thomas
Moin Luc!
Vielen Dank, tolle neue Informationen (AddIns, usw) und das ist ein sehr interessanter Ansatz.
Für mich bedeutet das, das ich in den alten Dateiversionen entsprechend noch eine Jahreszahl hinter
jeden CodeNamen der Sheets schreiben müsste.
Da ich bisher keine Probleme beim Zugriff habe, werde ich das erst einmal verschieben.
Damit die Mappen weiter auch lauffähig sind, müsste ja auch der VBA Code mit entsprechenden Sheet-Aufrufen geändert werden... Geht ja auch alles per Makro - so wie ich es gegooglt habt - aber kostet jetzt grade zuviel Zeit.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige