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

Forumthread: this Workbook und auch this worksheets?

this Workbook und auch this worksheets?
lisa
Hallo
Ich würde in meinem unten gezeigten Code gern auf die Bezeichnung des Tabellenblattes verzichten.
Wenn ich anstelle von,
ThisWorkbook.Worksheets("Donnerstag").Range("z13"). ,
ThisWorkbook.ThisWorksheets.Range("z13"). , einsetze klappte es nicht.
Kann man ohne Benennung der Tabelle überhaupt arbeiten?
Workbooks.Open Filename:= _
"P:\Controlling Allg\Differenzen Nov\" & Range("a4") & "Buchungsdifferenzen.xls"
Sheets("Tabelle2").Range("h8:h25").Copy
ThisWorkbook.Worksheets("Donnerstag").Range("z13"). _
PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Bitte um Hilfe
Gruß Lisa
Anzeige
AW: this Workbook und auch this worksheets?
16.11.2009 12:45:03
JogyB
Hi.
Wenn Du im Code des Tabellenblattes darauf verzichten willst, dann ist es Me (ohne irgendwas davor).
In einem Modul geht das nicht, da dieses keinem Tabellenblatt zugeordnet ist. Da kannst Du nur mit ActiveSheet auf das aktive Arbeitsblatt zugreifen. Ohne irgendwas davor ist es das gerade aktive Arbeitsblatt (also das, in dem Du gerade Daten eingibst), Du kannst aber natürlich auch ThisWorkbook.ActiveSheet verwenden, dann ist es das aktive Blatt der Arbeitsmappe, in der der Code steht.
Gruss, Jogy
Anzeige
AW: this Workbook und auch this worksheets?
16.11.2009 14:27:58
IngGi
Hallo Jogy & Rudi,
eine kleine Ergänzung/Korrektur sei mir gestattet. Wenn ihr sagt, dass ein Zellbezug ohne Benennung des Tabellenblattes sich immer auf das aktive Tabellenblatt bezieht, dann gilt das nur, wenn der Code nicht im Modul eines Tabellenblattes steht. Im Modul eines Tabellenblattes bezieht sich ein Zellbezug ohne Nennung des Tabellenblattes immer auf das Tabellenblatt, in dessen Modul der Code steht, unabhängig davon, welches Tabellenblatt gerade aktiv ist.
Gruß Ingolf
Anzeige
AW: this Workbook und auch this worksheets?
16.11.2009 12:46:45
Rudi
Hallo,
ThisWorksheets gibt es nicht. Du könntest mit einer Variablen arbeiten.
Kann man ohne Benennung der Tabelle überhaupt arbeiten?

Sicher. Dann bezieht sich alles aber auf das aktive Blatt.
Dim wks as Worksheet
Set wks=Thisworkbook.Worksheets("Donnerstag") 'oder ActiveSheet ?
Workbooks.Open Filename:= _
"P:\Controlling Allg\Differenzen Nov\" & Range("a4") & "Buchungsdifferenzen.xls"
Sheets("Tabelle2").Range("h8:h25").Copy
wks.Range("z13"). _
PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Gruß
Rudi
Anzeige
AW:oT oh danke für die schnelle AW. Klappt super!
16.11.2009 13:31:39
lisa
Falscher Thread owT.
16.11.2009 14:36:05
hary
.
Falscher Thread owT.
16.11.2009 14:36:16
hary
.
;
Anzeige
Anzeige

Infobox / Tutorial

Verwendung von ThisWorkbook und ThisWorksheet in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Zugriff auf das aktive Arbeitsblatt: Wenn Du auf das aktive Arbeitsblatt zugreifen möchtest, kannst Du ThisWorkbook.ActiveSheet verwenden. Dadurch greifst Du auf das Blatt zu, in dem Du gerade arbeitest.

  2. Zugriff auf ein spezifisches Arbeitsblatt: Wenn Du ein bestimmtes Arbeitsblatt ohne direkte Benennung ansprechen möchtest, kannst Du eine Variable verwenden:

    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("DeinBlattName")
  3. Verwendung ohne Blattbezeichnung: Im Modul eines Tabellenblattes kannst Du einfach auf die Zellen zugreifen, ohne das Blatt zu benennen. Beispiel:

    Range("A1").Value = "Test"
  4. Kopieren von Werten: Wenn Du Werte von einem anderen Blatt kopieren möchtest, verwende:

    Sheets("Tabelle2").Range("A1:A10").Copy
    wks.Range("B1").PasteSpecial Paste:=xlValues

Häufige Fehler und Lösungen

  • Fehler: ThisWorksheets existiert nicht: Stelle sicher, dass Du den richtigen Begriff verwendest. Der korrekte Befehl ist ThisWorkbook.Worksheets.

  • Problem: Zellbezug funktioniert nicht: Wenn Du ohne Blattnamen arbeitest und der Code im Modul eines speziellen Blattes steht, bezieht sich der Zellbezug immer auf dieses Blatt. Überprüfe, ob Du im richtigen Modul arbeitest.

  • Lösung: Verwende ActiveSheet: Wenn Du auf das aktuelle aktive Blatt zugreifen möchtest, kannst Du ActiveSheet verwenden:

    ActiveSheet.Range("A1").Value = "Aktives Blatt"

Alternative Methoden

  • Verwendung von Variablen: Definiere Variablen für die Arbeitsblätter, um die Lesbarkeit des Codes zu erhöhen. Beispiel:

    Dim wsDonnerstag As Worksheet
    Set wsDonnerstag = ThisWorkbook.Worksheets("Donnerstag")
  • Direkter Zugriff auf die Zellen: Arbeite direkt mit ThisWorkbook:

    ThisWorkbook.Worksheets("Donnerstag").Range("Z13").Value = "Neuer Wert"

Praktische Beispiele

  • Beispiel 1: Kopieren und Einfügen von Werten:

    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Donnerstag")
    
    Workbooks.Open Filename:="P:\Controlling Allg\Differenzen Nov\" & Range("A4").Value & "Buchungsdifferenzen.xls"
    Sheets("Tabelle2").Range("H8:H25").Copy
    wks.Range("Z13").PasteSpecial Paste:=xlValues
  • Beispiel 2: Verwendung von ActiveSheet:

    ActiveSheet.Range("A1").Value = "Aktueller Wert"

Tipps für Profis

  • Vermeide direkte Blattnamen: Wenn Du Code schreibst, der für mehrere Blätter verwendet werden soll, verallgemeinere den Code, um die Wartbarkeit zu erhöhen.

  • Nutze ThisWorkbook effizient: Greife immer auf ThisWorkbook zu, um sicherzustellen, dass Du mit der richtigen Arbeitsmappe arbeitest, insbesondere wenn Du mehrere Arbeitsmappen geöffnet hast.

  • Debugging mit Debug.Print: Nutze Debug.Print, um Zwischenergebnisse zu überprüfen und sicherzustellen, dass Deine Variablen korrekt gesetzt sind.


FAQ: Häufige Fragen

1. Kann ich auf das aktive Blatt ohne Benennung zugreifen?
Ja, in einem Modul eines Tabellenblattes kannst Du einfach auf die Zellen zugreifen, ohne das Blatt zu benennen.

2. Wie kann ich mehrere Blätter in ThisWorkbook ansprechen?
Du kannst eine Schleife verwenden, um durch alle Blätter in ThisWorkbook zu iterieren, z.B.:

Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    Debug.Print ws.Name
Next ws

3. Was ist der Unterschied zwischen ActiveSheet und ThisWorkbook.ActiveSheet?
ActiveSheet bezieht sich auf das derzeit aktive Blatt in der Excel-Oberfläche, während ThisWorkbook.ActiveSheet sich auf das aktive Blatt in der Arbeitsmappe bezieht, in der der Code ausgeführt wird.

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