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

Forumthread: Worksheets.Select

Worksheets.Select
23.07.2014 16:00:56
Climbi
Hallo,
ich wechsle mittels Worksheets("Testblatt").Select auf ein neues Tabellenblatt.
Das Tabellenblatt wird dann auch tatsächlich angezeigt.
Wenn ich nun jedoch eine Zelle anwähle und den Zelleninhalt in die Zwischenablage
kopieren will, wird der Zelleninhalt des Vorgängerblattes kopiert.
Wenn ich das Tabellenblatt über die Blattregister anwähle geht es.
Habe ich neben "Worksheets("Testblatt").Select" noch eine zusätzliche Möglichkeit ?
Vielen Dank im Voraus
Gruß Climbi

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheets.Select
23.07.2014 16:22:19
selli
hallo climbi,
wähle das blatt mit ....activate
und die zelle mit ....select
gruß
selli

Eigentlich ist schon alles gesagt; ... hochladen?
24.07.2014 09:41:51
MCO
Moin!
Die Tips waren alle gut u. richtig.
Kannst du mal die Tabelle hochladen?
(Ich nehme an, dass du einmal "Testblatt" und einmal "Test" wählen willst, ist Absicht?)
Gruß, MCO

Anzeige
AW: Worksheets.Select
23.07.2014 16:30:31
fcs
Hallo Climbi,
hast du deinen Code evtl. im VBA-Editor unter dem Vorgängerblatt angelegt?
Dann kann es Probleme oder auch Makrofehler gegeben, wenn die Zellen oder Zellbereiche von anderen Tabellenblättern nicht vollständig zum Eltern-Objekt referenziert werden.
Befehlszeilen mit Range, Cells, Rows, Columns beziehen sich dann immer auf das Tabellenblatt unter dem der Code steht.
In solchen Fällen ist es dann oft günstiger den Code in einem allgemeinen Modul anzulegen. Hier beziehen sich Range, Cells, Rows, Columns immer auf das gerade aktive Tabellenblatt.
Statt per Select/Activate zum Blatt zu wechseln und einen Bereich zu kopieren kannst du aber auch eine direkte Anweisung schreiben.
Gruß
Franz
Sub Makro1()
' Statt
Worksheets("Testblatt").Select
Range("A1:D10").Copy
Worksheets("TabelleXYZ").Select
Range("A11").Select
ActiveSheet.Paste
'so
Worksheets("Testblatt").Range("A1:D10").Copy Sheets("TabelleXYZ").Range("A11")
'oder - wenn nur Formate und Werte kopiert werden sollen
Worksheets("Testblatt").Range("A1:D10").Copy
Sheets("TabelleXYZ").Range("A11").PasteSpecial Paste:=xlFormats
Sheets("TabelleXYZ").Range("A11").PasteSpecial Paste:=xlValue
Application.CutCopyMode = False
End Sub

Anzeige
AW: Worksheets.Select
24.07.2014 09:19:21
Climbi
Hallo
erst einmal vielen Dank für die schnellen Antworten.
.activate kannte ich noch nicht, habe ich nun getestet, leider ohne Erfolg.
Der VBA Code steht in einem allgemeinen Modul.
Kurz noch einmal der Fehlerfall.
Per VBA wechsle ich auf ein anderes Tabellenblatt. (nun sogar doppelt)
Worksheets("Test").Activate
Worksheets("Test").Select
Worksheets("Test").Range("A1").Select
Der (mehrzeilige) Text der Zelle A1 wird nun in der Formelzeile angezeigt.
Dort kann ich diesen Text auch in die Zwischenablage übernehmen. (Alles markieren + STRG C)
Was jedoch in diesem Fall nicht geht, ist die Taste F2. (und so arbeiten die meisten Benutzer leider)
Drücke ich F2 wechselt der Inhalt von Zelle A1 auf den Inhalt des Vorgängerblattes.
Wenn ich die das Tabellenblatt vorher noch einmal manuell über die Reiter wechsle dann funktioniert es.
Vielleicht hat ja jemand noch einen Tipp
Gruß Climbi

Anzeige
AW: Worksheets.Select
24.07.2014 12:46:01
fcs
Hallo Climbi,
bevor wir hier weiter rätseln, warum dein Makro nicht korrekt funktioniert, beschreibe doch einmal was du überhaupt vorhast.
In Makros ist es -außer durch Senden von Tastaturbefehlen- nicht möglich in den Einagebmodus einer Zelle zu wechseln.
Üblicherweise kopiert man in Excel "einfach" die selektierte Zelle/den Zellbereich.
Beim Einfügen innerhalb von Excel stehen dann verschiedenste Optionen von Alles, über nur Werte, Formeln, Formate etc zur Verfügung.
Welchselst du nach dem Kopieren in eine andere Anwendung, dann hängt das Einfüge-Ergebnis von den Fähigkeiten dieser Anwendung ab.
Im einfachsten Fall wird nur der Textinhalt der Zelle eingefügt, im Extremfall wird bei Auswahl entsprechender Optionen ein Excel-Tabellenobjekt ggf. mit Link zur Ursprungstabelle eingefügt.
Wenn du -aus welchen Gründen auch immer- nur den Text-Inhalt/Wert einer Zelle in die Zwischenablage übernehmen willst, dann muss etwas anders vorgegangen werden.
'Im Vba-Editor muss für die Datei mit dem Makro unter Extras--Verweise der Verweis
'auf die
'Microsoft Forms 2.0 Object Library
'aktiviert sein!!
Sub PutCellData_in_Clipboard()
Dim myData As Dataobject
Dim strText As String
Set myData = New Dataobject
myData.SetText Worksheets("Test").Range("A1").Text 'oder .Value
myData.PutInClipboard
Set myData = Nothing
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Worksheets Select in Excel VBA: Tipps und Tricks


Schritt-für-Schritt-Anleitung

Um in Excel VBA ein bestimmtes Arbeitsblatt auszuwählen, kannst du den Befehl Worksheets("SheetName").Select verwenden. Allerdings kann dies in einigen Fällen zu Problemen führen, insbesondere wenn du anschließend auf Zellen zugreifen möchtest. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor (ALT + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Schreibe den folgenden Code:

    Sub SelectWorksheet()
       Worksheets("Testblatt").Select
       Worksheets("Testblatt").Range("A1").Select
    End Sub
  4. Führe das Makro aus (F5 oder über das Menü).

Verwende Activate, um sicherzustellen, dass das Arbeitsblatt aktiv ist:

Sub ActivateWorksheet()
    Worksheets("Testblatt").Activate
End Sub

Häufige Fehler und Lösungen

Ein häufiger Fehler, den viele Nutzer erleben, ist, dass der Inhalt der vorher ausgewählten Zelle kopiert wird, obwohl ein anderes Blatt ausgewählt wurde. Hier sind einige Lösungen:

  • Problem: Der Inhalt von Zelle A1 zeigt den Wert vom Vorgängerblatt an, wenn du F2 drückst.

    Lösung: Verwende Activate vor Select. Beispiel:

    Worksheets("Test").Activate
    Worksheets("Test").Select
  • Problem: Der Code befindet sich möglicherweise im falschen Modul und verweist auf das falsche Blatt.

    Lösung: Stelle sicher, dass der Code in einem allgemeinen Modul gespeichert ist und nicht in einem bestimmten Arbeitsblatt-Modul.


Alternative Methoden

Es gibt effizientere Wege, um mit Arbeitsblättern in Excel VBA zu arbeiten, ohne Select oder Activate zu verwenden. Hier sind einige Beispiele:

  • Direktes Kopieren ohne Auswahl:

    Worksheets("Testblatt").Range("A1:D10").Copy Destination:=Worksheets("Zielblatt").Range("A1")
  • Verwendung von With-Anweisungen:

    With Worksheets("Testblatt")
       .Range("A1").Copy
       Worksheets("Zielblatt").Range("A1").PasteSpecial
    End With

Diese Methoden sind nicht nur effizienter, sondern helfen dir auch, deinen Code sauberer zu halten.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen können, die Select und Activate-Methoden besser zu verstehen:

  1. Einfaches Arbeitsblatt auswählen:

    Sub SelectAndCopy()
       Worksheets("Testblatt").Activate
       Range("A1").Copy
       Worksheets("Zielblatt").Select
       Range("A1").PasteSpecial
    End Sub
  2. Mit DataObject den Inhalt in die Zwischenablage kopieren:

    Sub CopyToClipboard()
       Dim myData As New MSForms.DataObject
       myData.SetText Worksheets("Test").Range("A1").Text
       myData.PutInClipboard
    End Sub

Dieses Beispiel zeigt, wie du den Text einer Zelle in die Zwischenablage kopieren kannst, ohne die Select-Methode zu verwenden.


Tipps für Profis

  • Verwende Application.CutCopyMode = False, um den Kopiermodus zu beenden und die Auswahl zu entfernen.
  • Aktiviere die Microsoft Forms 2.0 Object Library, wenn du mit DataObject arbeitest.
  • Vermeide die Verwendung von Select und Activate, um die Leistung deines Makros zu verbessern.
  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind.

FAQ: Häufige Fragen

1. Warum funktioniert Worksheets("Testblatt").Select nicht wie erwartet?
Es kann sein, dass der Code im falschen Modul ist oder dass der Fokus nicht auf dem richtigen Arbeitsblatt liegt.

2. Was ist der Unterschied zwischen Select und Activate?
Select wählt ein Objekt aus, während Activate ein Arbeitsblatt in den Vordergrund bringt und es zum aktuell aktiven Blatt macht.

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