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

Codename der Tabelle bleibt leer

Codename der Tabelle bleibt leer
29.10.2021 19:46:31
Walter
Hallo zusammen,
ich habe eine Beispiel-Mappe hochgeladen, mit der ich mein Problem jederzeit nachproduzieren kann.
Die Mappe enthält ein Worksheet mit einem Button über den ein kleines VBA-Script gestartet werden kann. Dieses Script legt ein Worksheet mit einem vorgegebenen Namen an, sollte bereits ein Worksheet mit dem gleichen Namen bestehen, dann wird es vorgängig gelöscht.

Sub Test()
Dim WName As String
WName = "XXX"
Call TabellenBlattErstellen(WName, 2)
Debug.Print "Anzeige 1: Name=" & ActiveSheet.Name & " / Codename=" & ActiveSheet.CodeName
ActiveSheet.Name = WName
Debug.Print "Anzeige 2: Name=" & ActiveSheet.Name & " / Codename=" & ActiveSheet.CodeName
End Sub

Sub TabellenBlattEntfernen(WName As String)
On Error Resume Next
'    Löschen eines Tabellenblatts, Name wird übergeben
Application.DisplayAlerts = False
Sheets(WName).Delete
Application.DisplayAlerts = True
End Sub

Sub TabellenBlattErstellen(WName As String, WPosition As Integer)
'   Erstellen (inkl. vorgängiges Löschen) eines Tabellenblatts
'   Löschen eines eventuell vorhandenen, gleichnamigen Tabellenblatts
TabellenBlattEntfernen (WName)
'   Erstellen eines Tabellenblatts, Name und Position werden übergeben
Worksheets.Add After:=Worksheets(WPosition - 1)
End Sub
Rufe ich den VBA-Editor auf und starte von dort aus das Script "Test", dann sieht das Ergebnis der debug-Statements wie folgt aus.
Anzeige 1: Name=Tabelle1 / Codename=Tabelle1
Anzeige 2: Name=XXX / Codename=Tabelle1
Genau so würde ich mir die Anzeige auch erwarten. Die Tabelle wird unter dem Namen angelegt, den Excel automatisch vergibt. Der Excel-Interne Namen für die Tabelle ist ebenfalls befüllt. Mit dem im Code sichtbaren Statement gebe ich dem Tabellenblatt einen neuen Namen, der interne Namen bleibt aber gleich.
Nun kommt aber das, was ich nicht verstehe und mir Probleme bereitet.
Wenn ich das Excel öffne und dann in dem dort vorhandenen Arbeitsblatt den Button "Test" drücke, der nichts anderes tut, als die Prozedur Test zu starten, dann sieht das Ergebnis wie folgt aus.
Anzeige 1: Name=Tabelle1 / Codename=
Anzeige 2: Name=XXX / Codename=
Die internen Namen sind nicht befüllt und da ich diese für meine weitere Verarbeitung benötigen würde, habe ich ein Problem.
Das Beispielexcel kann über folgenden Link aufgerufen werden.
https://www.herber.de/bbs/user/148862.xlsm
In der Webversion funktioniert aber der Aufruf-Button nicht, sodass es gespeichert und mit einem lokalen Excel gestartet werden muss. Das gleiche Resultat wie bei der Ausführung durch drücken des Button "Test" würde man auch erhalten, wenn man vom Arbeitsblatt den Button Makros aufruft und von dort aus das Makro Test ausführt.
Hat jemand eine Idee, weshalb sich das so verhält oder was ich tun kann, dass bei diesen Arbeitsblättern auch der interne Name (Codename) gefüllt ist.
Besten Dank für eure Hilfe
Walter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codename der Tabelle bleibt leer
29.10.2021 20:04:41
Daniel
Hi
also bei mir funktioniert es auch über den Button wie von dir gewünscht (getestet mit Excel 2016)
was steht denn bei dir im Baum des Projektexplorers?
Gruß Daniel
AW: Codename der Tabelle bleibt leer
29.10.2021 20:45:11
AlterDresdner
Hallo,
bei mir (2010) klappte es bestens:
Anzeige 1: Name=Tabelle1 / Codename=Tabelle1
Anzeige 2: Name=XXX / Codename=Tabelle1
Anzeige 1: Name=Tabelle2 / Codename=Tabelle3
Anzeige 2: Name=XXX / Codename=Tabelle3
Gruß der ALteDresdner
AW: Codename der Tabelle bleibt leer
29.10.2021 21:13:40
ralf_b
Ich kann es nachvollziehen. Ein Verdacht: Der Codename ist kurz nach Erstellung noch nicht verfügbar. Evtl. wird eine Aktualisierung wie ein calculate oder refresh benötigt.
Anzeige
AW: Codename der Tabelle bleibt leer
30.10.2021 11:59:03
Walter
Danke für eure Antworten, ich habe noch ein paar Versuche gemacht, die mich jedoch nicht weitergebracht haben.
Ich habe den Versuch auf einem Computer mit Excel 365 wiederholt. Leider mit dem gleichen Resultat. Somit hängt die Lösung wohl weniger an der Excel-Version, als vielmehr an irgendeiner lokalen Einstellung (was immer das auch sein kann).
Versuche mit "calculate" oder "refreshall" haben auch nichts gebracht. Ich bin noch einen Schritt weitergegangen und habe ein Makro Test2 erstellt, das ausschließlich den Namen mittels debug ausgibt.
Die Reihenfolge ist also Makro Test ausführen (egal ob über den button oder über Makros) und dann auf dem Blatt XXX das Makro Test2 ausführen. Codename wird nicht angezeigt. Sogar, wenn ich die Arbeitsmappe zwischen diesen 2 Schritten mit "Speichern" abspeichere, erhalte ich das gleich Resultat.
Wenn ich die Arbeitsmappe aber zwischen den 2 Schritten speicher und verlasse und neu öffne, dann habe ich beim Aufruf von Test2 einen Codenamen zur Verfügung. Irgendein spezieller "refresh" ist also notwendig, aber wie der aussehen kann, da fehlen mir die Ideen.
Ganz eigenartig ist ja auch, dass alles wunderbar funktioniert, wenn ich das Visual Basic Fenster bei der Durchführung der Makros im Hintergrund geöffnet habe. Ist ja auch nicht unbedingt verständlich, was dieser Umstand auf die Ausführung der Makros für einen Einfluss haben kann.
Gruß Walter
Anzeige
AW: Codename der Tabelle bleibt leer
30.10.2021 14:39:42
Walter
Hallo Ralf,
vielen herzlichen Dank für deinen Hinweis.
Neu sieht der Beispielcode wie folgt aus

Sub Test()
Dim WName As String
WName = "XXX"
Call TabellenBlattErstellen(WName, 2)
    Debug.Print "Project-Name: " & ActiveWorkbook.VBProject.Name
Debug.Print "Anzeige 1: Name=" & ActiveSheet.Name & " / Codename=" & ActiveSheet.CodeName
ActiveSheet.Name = WName
Debug.Print "Anzeige 2: Name=" & ActiveSheet.Name & " / Codename=" & ActiveSheet.CodeName
End Sub
und unglaublicher Weise wird jetzt der Codenamen ausgegeben. Ich bezweifle, dass es viele Experten geben wird, die das erklären können, aber das ist mir im Moment auch egal.
Nochmals vielen Dank.
Gruß Walter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige