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

Der richtige Codename?

Der richtige Codename?
06.03.2021 13:37:12
Eisi
Hallo zusammen,
derzeit möchte ich ein besseres Verständnis bekommen, was ich in Excel so mache.
Im Lehrbuch steht, dass der erste Code-Name im Eigenschaftsfenster der Name ist, der in den Codes immer angesprochen wird. Für die bessere Übersicht soll der Name immer mit tbl_.... anfangen, damit man im Code leichter erkennen kann, dass in diesem Fall ein Blatt angesprochen wird.
Das habe ich zum Test so eingestellt:
(Name) = Test
Name = tbl_Test
Wenn ich aber den Namen "Test" nehme, dann funktioniert mein

Sub nicht. Der zweite Name funktioniert schon.
Warum ist das so?
Vielen Dank.
VG Eisi :-)

Sub Test()
Worksheets("tbl_Test").Range("A1").Value = 3
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: Der richtige Codename?
06.03.2021 14:09:02
Nepumuk
Hallo,
ändere die Name-Eigenschaft im Eigenschaftsfenster und zwar oben bei (Name).
Userbild
Dann kannst du die Tabelle so ansprechen:
tbl_Test.Range("A1").Value = 3
Gruß
Nepumuk

AW: Der richtige Codename?
06.03.2021 14:22:20
Eisi
Hallo Nepumuk;
herzlichen Dank, jetzt habe ich es verstanden.
VG Eisi :-)

AW: Der richtige Codename?
06.03.2021 15:03:48
fcs
Hallo Eisi,
in Makros kannst du ein Tabellenblatt im Code auf 4 Varianten ansprechen
  • 1. den Namen auf Register-Tab
    diesen kannst du ändern nach Doppelklick auf das Register-Tab
    oder Rechte-Maus-Klick auf das Register-Tab und "Umbenennen"
    oder dem Eigenschaftenfenster im VBA-Edior
  • Worksheets("tbl_Test").Range("A1").Value = 3
    
  • 2. Die Index-Nummer - Die Zählung der Index-Nummer beginnt mit 1 beim linken Register
    Die Index-Nummer wird von Excel automatisch vergeben.
    Hilfreich, wenn der Blattname sich ändert, der Index des Blattes aber immer gleich ist.
  • Sheets(1).Range("A1").Value = 3
    
  • 3. Den Codenamen des Tabellenblatts
    Den Codenamen kannst du nur im VBA-Editor im Eigenschaftenfenster ändern.
  • tbl_Test.Range("A1").Value = 3
    
  • 4. als aktives Blatt
    Hier wird vom Code das in Excel aktive Tabellen Blatt bearbeitet.
  • ActiveSheets.Range("A1").Value = 3
    
    LG
    Franz
    Hier ein Makro, das Informationen zu den Tabellenblättern in der aktiven Arbeitsmappe anzeigt.
    Sub Test()
    Dim objSheet As Object
    Dim strType As String
    For Each objSheet In ActiveWorkbook.Sheets
    With objSheet
    Select Case .Type
    Case xlWorksheet
    strType = "Tabellenblatt"
    Case 3
    strType = "Diagramm"
    Case Else
    strType = "sonstige"
    End Select
    If MsgBox("Information zu Blätter in aktiver Arbeitsmappe" & vbLf _
    & "Indexnummer: " & .Index & vbLf _
    & "Blattname: " & .Name & vbLf _
    & "Codename: " & .CodeName & vbLf _
    & "Type: " & strType, _
    vbOKCancel, "Blatt-Information") = vbCancel Then Exit For
    End With
    Next
    End Sub
    


    Anzeige
    AW: Der richtige Codename?
    06.03.2021 15:18:04
    Eisi
    Hallo Franz,
    sehr interessanter Einblick, hilft mir weiter.
    Vielen Dank.
    VG Eisi :-)

    AW: Der richtige Codename?
    06.03.2021 15:38:10
    Daniel
    Hi
    Noch ein paar weitere Fakten zum Thema Codename
    In der Eigenschaftsliste steht der Codename bei "(Name)" und er Registername bei "Name"
    In Baum des Projektexplorers steht der Codename vorne und der Registername dahinter in Klammen.
    Innerhalb von VBA verwendest du den Codenamen wie ein eigenständiges Objekt, es ist daher auch nicht möglich, den Codenamen über Variablen zusammenzusetzen und so zu verwenden.
    Der Registername ist jedoch nur Text und kann daher auch öber Berechnungen oder Variablen in die Sheets()/Worsheets()-Funktion eingesetzt werden.
    Das mit dem Codename funktioniert auch nur innerhalb der eigenen Datei.
    Willst du auf die Blätter einer anderen Mappe zugreifen, geht das nur über das Worksheets("Registername").
    Gruß Daniel

    Anzeige
    AW: Der richtige Codename?
    06.03.2021 17:27:44
    Eisi
    Hallo Daniel,
    auch eine sehr wichtige Information um die Auswirkungen komplett zu verstehen.
    Sehr hilfreich.
    Vielen Dank.
    VG Eisi :-)

    CodeName-Änderungen ...
    06.03.2021 20:15:13
    Luc:-?
    …sind vor allem dann immer angebracht, Eisi,
    wenn mehrere Dateien per VBA im Verbund betrieben wdn und deshalb alle geöffnet (ggf im Hintergrund) sind. Man kann dann auch Prozeduren in einer anderen Datei verwenden, wenn auf diese unter VBE-Extras der hauptsächlich verwendeten Datei verwiesen wird. Sofern die Prozeduren der VerweisDatei öffentlich (Public → Default) sind, können sie dann auch im VBA-Projekt der verweisenden Datei benutzt wdn. Das setzt aber voraus, dass zumindest der VBA-Projekt-Name des VerweisProjekts eindeutig ist. Der Default-CodeName VBAProject taugt dafür nicht. So kann man im Ggsatz zu Daniels absolut wirkender Aussage …
    Das mit dem Codename funktioniert auch nur innerhalb der eigenen Datei. Willst du auf die Blätter einer anderen Mappe zugreifen, geht das nur über das Worksheets("Registername").
    …auch die CodeNames der VerweisDatei direkt verwenden, sofern diese ebenfalls auf Eindeutigkeit geändert wurden und nicht (mehr) mit denen der verweisenden Datei übereinstimmen.
    Falls so etwas häufiger in Betracht kommt, sollte man generell immer alle CodeNames projekthierarchisch (wie du es ja schon mit deinen BlattNamen andeutest → fehlt noch wenigstens Mappe und ggf auch Projekt) und eindeutig neu festlegen, um evtl spätere Nacharbeit zu sparen.
    Gruß, Luc :-?
    „Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon

    Anzeige
    AW: CodeName-Änderungen ...
    06.03.2021 20:51:01
    Eisi
    Userbild
    Hallo Luc,
    schon beeindruckend, das ich immer noch am Anfang meines Lehrbuches bin. Alleine zu der richtigen Namensgebung gibt es so viel zu wissen. Da bin ich platt. Aber ok, ich möchte es verstehen. Ein Bild zu Deinen Ausführung habe ich noch nicht im Kopf.
    Ich hoffe man kann das Bild von mir sehen, wie ich die Namen angepasst habe. Hast Du es so gemeint?
    Macht das Sinn, alle Namen umzuschreiben? Und wie wäre die Kurzbezeichnung vor dem Namen zum Beispiel für "DieseArbeitsmappe", oder wird dieser Name niemals geändert?
    Gibt es ein Beispiel, in der die Namenslogik vom Projektnamen bis zum Modul runter gebrochen dargestellt ist.
    Vielen Dank für Dein Feedback.
    VG Eisi :-)

    Anzeige
    Diese deine Änderungen ...
    07.03.2021 01:22:32
    Luc:-?
    …musst du in diesem Umfang nur vornehmen, Eisi,
    wenn du tatsächlich damit rechnest, auf diese Mappe mal verweisen zu müssen. Das wäre dann so OK, allerdings würde ich die namensimmanente Hierarchie von links nach rechts (vorn nach hinten) anlegen, da so üblicherweise (auch im VBE) sortiert wird.
    Wenn du von einer anderen Mappe auf diese Mappe verweisen willst, ist die wichtigste Umbennenung die von VBAProject (und wahrscheinlich auch die von DieseArbeitsmappe, da das dann letztlich angezeigt wird), die bei dir jetzt Testuebung lautet. Darauf kannst du nun aus einem anderen Projekt verweisen. Öffnest du dann die verweisende Mappe, wird diese Mappe ebenfalls geöffnet. Das fktioniert übrigens bei AddIns genauso, sonst kannst du sie nicht (mit Projekt-Default-CodeName) in Xl per VBE so einbinden, dass sie den VBA-Projekten anderer Mappen zV stünden (ergäbe Ablehnung wg Uneindeutigkeit — MehrfachVerwendung eines Namens für Unterschiedliches).
    In deinem Fall wurde dir ohnehin die Umbenennung der Blatt-CodeNames empfohlen. DieseArbeitsmappe ist auch nur ein Default-Name, quasi ein Platzhalter für einen eigenen Namen. Der könnte dann auch nur TestUeb (oder AmTestUeb) lauten, die Blatt-CodeNames dann ggf mit TestUebTbl anfangen, damit dir die Zuordnung auch noch nach Monaten leicht ersichtlich ist, wenn du diesen CodeName aus einem anderen Projekt, das auf diese Mappe verweist, aufrufst. Außerdem wdn dann das AmBlatt u.die TabBlätter im VBE in der gewohnten Reihenfolge angeordnet.
    Ein Bsp für eine solche Namenshierarchie kenne ich nicht, so etwas denkt sich jeder, der es braucht, nach Zweckmäßigkeit aus. Und das habe ich ja nun noch deutlicher beschrieben und Empfehlungen gegeben.
    Übrigens, bei den normalen Modulen (.bas) wäre der Name egal, falls du die nicht für Operationen mit denselben brauchst (CodeZeilen zählen, einfügen, löschen, PgmBereiche suchen u.ä.).
    Tipp: Gg Plattsein hilft (langsames) Luftholen… ;-)
    Viel Erfolg, Luc :-?

    Anzeige
    AW: Diese deine Änderungen ...
    07.03.2021 13:11:31
    Eisi
    Hallo Luc,
    danke für Deine Einführung.
    Alles gut :-), meine Fragestellung hat sich deutlich erweitert.
    Wobei für mich erstmal das Thema Blattname interessant ist, denn das was ich in VBA mache ist doch recht übersichtlich. Aber so lerne ich langsam dazu und finde es super spannend.
    Vielen Dank.
    GLG Eisi :-)

    Na, dann; so ist's recht! ;-) owT
    07.03.2021 13:31:52
    Luc:-?
    :-?

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige