Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sheet als Public Const?

Forumthread: Sheet als Public Const?

Sheet als Public Const?
10.01.2006 11:39:19
PeterP
Hallo!
Das geht nicht:
Public Const shtSim = ThisWorkbook.Worksheets("Simulation")
Wie dann?
Gruß
Peter
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheet als Public Const?
10.01.2006 11:44:38
Hubert
Hi,
ein sheet ist ein Objekt, keine Konstante.
mfg Hubert
AW: Sheet als Public Const?
10.01.2006 11:51:30
PeterP
... und wie kann ich ein Objekt konstant adressieren?
Ich möchte durchgängig die Objektvariable shtSim mit ThisWorkbook.Worksheets("Simulation") belegen.
Problem ist, daß die derzeitige Lösung mit
Public shtSim As Worksheet

Sub Start() 'Aufruf bei Workbook_Open
Set shtSim = ThisWorkbook.Sheets("Simulation")
End Sub

nicht sauber funktioniert - die Variable ist oft im Fehlerfall nicht mehr belegt.
Gruß
Peter
Anzeige
AW: Sheet als Public Const?
10.01.2006 11:56:02
Peter
Servus,
aus der Online Hilfe:
Typ Optional. Datentyp der Konstanten. Zulässige Typen sind Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String oder Variant. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt.
Wenn du die Variable schon beim Öffnen der Datei deklarierst und das Makro dafür abgearbeitet ist, ist beim nächsten Makroaufruf die Variable nicht mehr deklariert.
Du musst Sie in ein Modul etc. packen in der du Sie auch benutzt.
MfG Peter
Anzeige
AW: Sheet als Public Const?
10.01.2006 12:19:12
PeterP
Zitat: Du musst Sie in ein Modul etc. packen in der du Sie auch benutzt.
Das ist gegeben.
Leider ist der Code zu komplex, um ihn hier zu posten. Bisher behelfe ich mir halt damit, die Initialisierung zur Sicherheit an den fehlerträchtigen Stellen neu aufzurufen - aber das stört jetzt, so daß ich es gerne ändern würde.
Gruß
Peter
Anzeige
AW: Sheet als Public Const?
10.01.2006 12:47:59
Uduuh
Hallo,
mit dem gleichen Prob habe ich mich vor einiger Zeit auch schon beschäftigt. Anscheinend gibt es keine Möglichkeit Objekte quasi als Konstante zu deklarieren.
Gruß aus’m Pott
Udo

AW: Sheet als Public Const?
10.01.2006 13:30:26
PeterP
Args ... wenn Du das sagst, ist das ja fast schon ein Todesurteil! Also geht es bestenfalls irgendwie mit einer Von-hinten-durch-die-Brust-ins-Auge-Methode ... hast Du echt keine Idee?
Gruß
Peter
Anzeige
AW: Sheet als Public Const?
10.01.2006 16:56:51
Josef
Hallo Peter!
In so einem Fall, könnte man auch ganz ohne Variable, mit dem Codenamen der Tabelle arbeiten
Userbild
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Sheet als Public Const?
11.01.2006 08:46:53
PeterP
Hallo Sepp,
naja - praktikabel vielleicht bei kurzen Namen und wenig Wiederholungen ... beides bei mir nicht gegeben.
Werd ich mich wohl geschlagen geben, schnief!
Gruß
Peter
AW: Sheet als Public Const?
11.01.2006 22:08:44
Uduuh
Hallo,
die Idee ist nicht schlecht. Werde ich mir merken.
Klappt allerdings nicht bei 2-geteilten Anwendungen wie z.B. Eingabe- und Datenteil.
Gruß aus’m Pott
Udo

Anzeige
AW: Sheet als Public Const?
11.01.2006 09:31:25
MichaV
Hallo,
vielleicht ne Anfängerfrage, aber warum schreibst Du nicht im Modul
Public shtSim As Worksheet
und im Workbook

Private Sub Workbook_Open()
Set shtSim = ThisWorkbook.Worksheets("Simulation")
End Sub

?
Wenn es dann zu den von Dir beschriebenen "nicht sauber funktionieren" kommt dann wärs nett, wenn Du mir ein Beispiel geben könntest.
Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Sheet als Public Const?
16.01.2006 08:12:20
PeterP
Hallo Micha,
ich deklariere die Variablen in einem Modul mod_Startup, und initialisiere sie auch da bei Workbook_open, indem ich die public sub setvars(), welche sich im mod_Startup befindet, beim Öffnen calle.
Da ich das Initialisieren der Variablen gleichzeitig dazu benutze, die Simulation (ist eine Taktstraßensimulation) zu resetten, bin ich darauf angewiesen, setvars() in einem Modul zu haben, denn von den anderen Modulen würde sie ja, wenn sie im Workbook läge, nicht gefunden.
Gruß
Peter
Anzeige
AW: Sheet als Public Const?
16.01.2006 08:12:28
PeterP
Hallo Micha,
ich deklariere die Variablen in einem Modul mod_Startup, und initialisiere sie auch da bei Workbook_open, indem ich die public sub setvars(), welche sich im mod_Startup befindet, beim Öffnen calle.
Da ich das Initialisieren der Variablen gleichzeitig dazu benutze, die Simulation (ist eine Taktstraßensimulation) zu resetten, bin ich darauf angewiesen, setvars() in einem Modul zu haben, denn von den anderen Modulen würde sie ja, wenn sie im Workbook läge, nicht gefunden.
Gruß
Peter
Anzeige
AW: Sheet als Public Const?
16.01.2006 08:12:45
PeterP
Hallo Micha,
ich deklariere die Variablen in einem Modul mod_Startup, und initialisiere sie auch da bei Workbook_open, indem ich die public sub setvars(), welche sich im mod_Startup befindet, beim Öffnen calle.
Da ich das Initialisieren der Variablen gleichzeitig dazu benutze, die Simulation (ist eine Taktstraßensimulation) zu resetten, bin ich darauf angewiesen, setvars() in einem Modul zu haben, denn von den anderen Modulen würde sie ja, wenn sie im Workbook läge, nicht gefunden.
Gruß
Peter
Anzeige
AW: Sheet als Public Const?
16.01.2006 08:13:01
PeterP
Hallo Micha,
ich deklariere die Variablen in einem Modul mod_Startup, und initialisiere sie auch da bei Workbook_open, indem ich die public sub setvars(), welche sich im mod_Startup befindet, beim Öffnen calle.
Da ich das Initialisieren der Variablen gleichzeitig dazu benutze, die Simulation (ist eine Taktstraßensimulation) zu resetten, bin ich darauf angewiesen, setvars() in einem Modul zu haben, denn von den anderen Modulen würde sie ja, wenn sie im Workbook läge, nicht gefunden.
Gruß
Peter
Anzeige
Sorry f. mehrfachposten, kam keine Browserrückmeld
16.01.2006 08:14:56
PeterP
k.T.
;
Anzeige

Infobox / Tutorial

Sheet als Public Const in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Worksheet in Excel VBA als Konstante zu verwenden, musst du beachten, dass Objekte wie Worksheets nicht direkt als Public Const deklariert werden können. Stattdessen kannst du die folgende Methode verwenden:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject [DeinWorkbook]“ > Einfügen > Modul).

  3. Deklariere deine Worksheet-Variable als Public:

    Public shtSim As Worksheet
  4. Initialisiere die Variable im Workbook_Open-Ereignis:

    Private Sub Workbook_Open()
       Set shtSim = ThisWorkbook.Worksheets("Simulation")
    End Sub
  5. Jetzt kannst du shtSim in deinem gesamten Projekt verwenden, ohne die Zuweisung erneut durchführen zu müssen, solange das Workbook offen ist.


Häufige Fehler und Lösungen

  • Fehler: Variable ist nicht mehr belegt.

    • Mögliche Lösung: Stelle sicher, dass die Initialisierung im Workbook_Open-Ereignis erfolgt und dass das Workbook nicht geschlossen wurde.
  • Fehler: Objekt kann nicht gefunden werden.

    • Mögliche Lösung: Überprüfe, ob der Name des Worksheets korrekt ist und ob das Worksheet im Workbook existiert.

Alternative Methoden

Wenn du keine Public Variable verwenden möchtest, kannst du auch den Codename des Worksheets verwenden. Der Codename ist der Name, der im VBA-Projekt angezeigt wird und nicht geändert werden kann:

Sheet1.Range("A1").Value = "Hallo Welt!"

Hierbei ist Sheet1 der Codename des Worksheets, was es einfacher macht, darauf zuzugreifen, ohne den Namen des Worksheets anzugeben.


Praktische Beispiele

  1. Zugriff auf eine Zelle im Worksheet:

    Sub BeispielZugriff()
       shtSim.Range("A1").Value = "Test"
    End Sub
  2. Kopieren von Daten aus einem anderen Worksheet:

    Sub DatenKopieren()
       ThisWorkbook.Worksheets("Daten").Range("A1:B10").Copy Destination:=shtSim.Range("A1")
    End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler beim Programmieren zu vermeiden.
  • Überlege, ob du deine Variablen in einem Klassenmodul verwalten möchtest, um die Übersichtlichkeit zu erhöhen und die Kapselung zu verbessern.
  • Nutze Error Handling, um sicherzustellen, dass dein Code auch bei Fehlern robust bleibt:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0

FAQ: Häufige Fragen

1. Kann ich ein Worksheet als konstanter Wert verwenden? Nein, ein Worksheet ist ein Objekt und kann nicht als Public Const deklariert werden. Du kannst jedoch eine Public Variable verwenden, um darauf zuzugreifen.

2. Was passiert mit meiner Variable, wenn ich das Workbook schließe? Die Variable wird beim Schließen des Workbooks gelöscht. Du musst sie erneut initialisieren, wenn das Workbook wieder geöffnet wird.

3. Wie kann ich sicherstellen, dass mein Code nicht fehlschlägt, wenn das Worksheet nicht existiert? Verwende eine Fehlerbehandlung oder prüfe, ob das Worksheet vorhanden ist, bevor du darauf zugreifst:

Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Simulation")
On Error GoTo 0

If ws Is Nothing Then
    MsgBox "Das Worksheet 'Simulation' existiert nicht!"
End If

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige