Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Active Worksheet

Forumthread: Active Worksheet

Active Worksheet
25.06.2004 13:14:23
Klaus
Guten Tag,
mittels activecell.copy kopiere ich einen Wert von einem der Tabellenblätter KLASSE1 bis z.B. Klasse5 in ein zweites Tabellenblatt namens "MELDUNG". Wie muss ich eine Variable deklarieren, damit VBA nach dem Kopiervorgang wieder auf das ursprüngliche Arbeitsblatt springt. Es heißt ja nicht unbedingt Klasse1.
Ich habe erfolglos zu Beginn des Makros versucht.
ActiveWorksheet="Klasse"
Vielen Dank und Gruß
KlausK
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Active Worksheet
25.06.2004 13:15:48
Annett
Hallo Klaus
Du brauchst das Blatt nicht wechseln schaue mal in die Hilfe unter Copy
Gruß Annett
Falls Code vorhanden wurde der unter Excel 2003 getestet
AW: Active Worksheet
KlausK
Hallo Annett,
vielen Dank für Deine schnelle Reaktion. Das Makro soll aus jedem der Arbeitsblätter KLASSE xy funktionieren. Es müssen auch unterschiedliche Kopiervorgänge ablaufen (Alles und dann NUR-WERTE).

Sub Makro1()
activeworksheet = "klasse" ´hier sollte die variable hin
Rem kopiert uhrzeit
ActiveCell.Copy             ´hier wird aus dem jeweiligen kopiert
Sheets("Meldung").Select
Range("J13").Select
ActiveSheet.Paste
Rem kopiert startnummer
Sheets("klasse").Select
ActiveCell.Offset(0, 1).Copy
Sheets("Meldung").Select
Range("J5").Select
ActiveSheet.Paste
Rem kopiert name
Sheets("klasse").Select
ActiveCell.Offset(0, 2).Copy
Sheets("Meldung").Select
Range("B7").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Rem kopiert posten
Sheets("klasse").Select
ActiveCell.Offset(0, 3).Copy
Sheets("Meldung").Select
Range("B19").Select
ActiveSheet.Paste
Rem kopiert text
Sheets("klasse").Select
ActiveCell.Offset(0, 4).Copy
Sheets("Meldung").Select
Range("F19").Select
ActiveSheet.Paste
Range("A1").Select
Rem setzt x auf Teilnehmer
Range("B11") = "X"
Range("C15") = "X"
Application.CutCopyMode = False
End Sub

Gruss aus Ffm.
KlausK
Anzeige
AW: Active Worksheet
25.06.2004 13:26:14
Annett
Hallo Klaus
meinen ersten Beitrag hast Du schon gelesen?
ActiveCell.Copy Destination:=Sheets("Meldung").Range("J13")
Gruß Annett
Falls Code vorhanden wurde der unter Excel 2003 getestet
AW: Active Worksheet
KlausK
Hallo Annett,
nun habe ich verstanden. 1000 Dank nicht nur für diesen Tipp von Dir, ich habe schon viel aus Deinen Antworten gelernt.
Gruss
KlausK
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Active Worksheet in VBA: Praktische Tipps und Tricks


Schritt-für-Schritt-Anleitung

Um mit dem active worksheet in Excel VBA zu arbeiten, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle Einfügen > Modul.

  3. Deklariere Deine Variablen: Setze eine Variable für das aktive Arbeitsblatt, um später wieder darauf zurückzugreifen.

    Dim ws As Worksheet
    Set ws = ActiveSheet
  4. Kopiere Werte: Nutze ActiveCell.Copy und gebe den Zielbereich an, ohne das Arbeitsblatt zu wechseln.

    ActiveCell.Copy Destination:=Sheets("Meldung").Range("J13")
  5. Verwende With ActiveSheet: Dadurch kannst Du den Code kürzer und leserlicher gestalten.

    With ActiveSheet
       .Range("A1").Value = "Neuer Wert"
    End With
  6. Führe das Makro aus: Schließe den VBA-Editor und führe das Makro aus, um die gewünschten Aktionen durchzuführen.


Häufige Fehler und Lösungen

  • Fehler: "Run-time error 9: Subscript out of range"

    • Lösung: Achte darauf, dass der Name des Arbeitsblatts korrekt geschrieben ist. Prüfe auch, ob das Arbeitsblatt existiert.
  • Fehler: "Select method of Worksheet class failed"

    • Lösung: Verwende Activate oder Select nur, wenn es wirklich notwendig ist. Oft kannst Du direkt auf Zellen oder Bereiche zugreifen, ohne das Arbeitsblatt zu wechseln.

Alternative Methoden

  1. Verwende Sheets anstelle von ActiveSheet: Dies macht Deinen Code robuster, indem Du direkt auf das gewünschte Blatt zugreifst.

    Sheets("Meldung").Range("J13").Value = ActiveCell.Value
  2. Nutze Range für direkte Zuweisungen: Anstatt zu kopieren, kannst Du auch direkt Werte zuweisen, was den Code vereinfacht.

    Sheets("Meldung").Range("J13").Value = Sheets("Klasse").Range("A1").Value

Praktische Beispiele

Hier sind einige Beispiele, wie Du mit dem active worksheet in VBA arbeiten kannst:

  • Kopiere Werte aus mehreren Blättern:

    Sub KopierenVonKlasse()
       Dim ws As Worksheet
       For Each ws In ThisWorkbook.Worksheets
           If ws.Name Like "Klasse*" Then
               ws.Range("A1").Copy Destination:=Sheets("Meldung").Range("J13")
           End If
       Next ws
    End Sub
  • Ändere Werte im aktiven Blatt:

    Sub WerteÄndern()
       With ActiveSheet
           .Range("A1").Value = "Neuer Wert"
           .Range("B1").Value = "Ein weiterer Wert"
       End With
    End Sub

Tipps für Profis

  • Verwende Dim und Set für bessere Lesbarkeit: Deklariere immer Deine Variablen, um den Code sauberer und verständlicher zu gestalten.

  • Optimiere mit Application.ScreenUpdating: Setze dies auf False, um Flickering zu vermeiden, wenn Du mehrere Änderungen vornimmst.

    Application.ScreenUpdating = False
    ' Deine Code-Änderungen hier
    Application.ScreenUpdating = True
  • Nutze Error Handling: Dies ist besonders nützlich, wenn Du mit mehreren Arbeitsblättern arbeitest. So kannst Du sicherstellen, dass Dein Makro auch bei Fehlern stabil bleibt.


FAQ: Häufige Fragen

1. Wie kann ich das aktive Arbeitsblatt speichern? Du kannst das aktive Arbeitsblatt mit folgendem Befehl speichern:

ActiveWorkbook.Save

2. Was ist der Unterschied zwischen ActiveSheet und ActiveWorkbook? ActiveSheet bezieht sich auf das derzeit aktive Arbeitsblatt, während ActiveWorkbook das aktuell aktive Workbook (Arbeitsmappe) bezeichnet.

3. Wie kann ich auf eine Zelle im aktiven Arbeitsblatt zugreifen? Du kannst auf eine Zelle im aktiven Arbeitsblatt zugreifen, indem Du folgendes verwendest:

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige