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

.Select einer Range in einem anderen Tabellenblatt

Forumthread: .Select einer Range in einem anderen Tabellenblatt

.Select einer Range in einem anderen Tabellenblatt
08.03.2015 18:31:27
Christian

Vlt kann mir jemand helfen. Ich weis nicht warum das nicht funktioniert. Ich muss eine Range in einem anderen tabellenblatt um eine Zelle nach rechts verschieben.
Code
If (Sheets("Tabelle1").Cells(1, i) = Sheets("14.12.-14.09.15+23.10.-12.12.15").Cells(8, j) And Sheets("Tabelle1").Cells(1, i) <> "") Then 'Wenn die Zugnummer im Fahrplan gefunden wurde dann
Sheets("14.12.-14.09.15+23.10.-12.12.15").Range(Sheets("14.12.-14.09.15+23.10.-12.12.15").Cells(8, j + 1), Sheets("14.12.-14.09.15+23.10.-12.12.15").Cells(39, j + 200)).Select
Selection.Cut
Sheets("14.12.-14.09.15+23.10.-12.12.15").Cells(8, j + 2).Select
Selection.Paste
End If

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .Select einer Range in einem anderen Tabellenblatt
08.03.2015 19:13:29
Christian
Hab selbst die Lösung gefunden. Danke trotzdem.
Für alle die dieses Problem auch mal haben: der Select befehl einer Range funktioniert nur im momentan aktiven Sheet hier also der Quellcode der funktioniert:
If (Sheets("Tabelle1").Cells(1, i) = Sheets("14.12.-14.09.15+23.10.-12.12.15").Cells(8, j) And Sheets("Tabelle1").Cells(1, i) <> "") Then 'Wenn die Zugnummer im Fahrplan gefunden wurde dann
wks1.Activate
wks1.Range(wks1.Cells(7, j + 1), wks1.Cells(39, j + 200)).Select
Selection.Cut
wks1.Range(wks1.Cells(7, j + 2), wks1.Cells(39, j + 201)).Select
ActiveSheet.Paste
End If

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Range-Select in einem anderen Tabellenblatt


Schritt-für-Schritt-Anleitung

Um eine Range in einem anderen Tabellenblatt auszuwählen und zu verschieben, kannst Du die folgenden Schritte befolgen. Dieses Beispiel verwendet VBA und setzt voraus, dass Du mit der Excel-Version 2013 oder höher arbeitest.

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

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx), wähle Einfügen und dann Modul.

  3. Gib den Code ein:

    Dim wks1 As Worksheet
    Set wks1 = ThisWorkbook.Sheets("14.12.-14.09.15+23.10.-12.12.15")
    
    Dim i As Integer, j As Integer
    ' Deine Logik, um i und j zu definieren
    
    If (Sheets("Tabelle1").Cells(1, i) = wks1.Cells(8, j) And Sheets("Tabelle1").Cells(1, i) <> "") Then
       wks1.Activate
       wks1.Range(wks1.Cells(8, j + 1), wks1.Cells(39, j + 200)).Select
       Selection.Cut
       wks1.Range(wks1.Cells(8, j + 2), wks1.Cells(39, j + 201)).Select
       ActiveSheet.Paste
    End If
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle Dein Makro aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“
    Lösung: Stelle sicher, dass die Blattnamen korrekt geschrieben sind. Vermeide Leerzeichen und Sonderzeichen in den Namen.

  • Fehler: „Selection.Paste funktioniert nicht“
    Lösung: Stelle sicher, dass Du die Range korrekt ausgewählt hast, bevor Du versuchst, sie einzufügen. Verwende ActiveSheet.Paste, um sicherzustellen, dass die paste-Funktion im aktiven Blatt funktioniert.


Alternative Methoden

Wenn Du die .Select-Methode vermeiden möchtest, kannst Du die Range direkt ohne Auswahl bearbeiten:

wks1.Range(wks1.Cells(8, j + 1), wks1.Cells(39, j + 200)).Cut wks1.Cells(8, j + 2)

Dies ist effizienter und reduziert die Wahrscheinlichkeit, auf Fehler zu stoßen, die durch das Selektieren von Ranges verursacht werden.


Praktische Beispiele

Hier ist ein konkretes Beispiel, wie Du mehrere Zellen einer Range in einem anderen Tabellenblatt verschieben kannst:

Sub VerschiebeZellen()
    Dim wks1 As Worksheet
    Set wks1 = ThisWorkbook.Sheets("14.12.-14.09.15+23.10.-12.12.15")

    ' Angenommen, j ist bereits definiert
    wks1.Range(wks1.Cells(8, j + 1), wks1.Cells(39, j + 200)).Cut _
    Destination:=wks1.Cells(8, j + 2)
End Sub

In diesem Beispiel wird eine Range ohne die Notwendigkeit, .Select zu verwenden, direkt verschoben.


Tipps für Profis

  • Vermeide die Verwendung von .Select und Selection: Es ist effizienter, direkt mit Ranges zu arbeiten.

  • Nutze With-Anweisungen: Das reduziert den Code und macht ihn lesbarer.

    With wks1
       .Range(.Cells(8, j + 1), .Cells(39, j + 200)).Cut Destination:=.Cells(8, j + 2)
    End With
  • Teste Deinen Code vor der Verwendung: Verwende die Debugging-Funktionen in VBA, um sicherzustellen, dass Dein Code wie gewünscht funktioniert.


FAQ: Häufige Fragen

1. Warum funktioniert mein .Select-Befehl nicht?
Der .Select-Befehl funktioniert nur im aktiven Blatt. Stelle sicher, dass das Blatt, das Du auswählen möchtest, aktiv ist.

2. Gibt es eine Möglichkeit, eine Range ohne .Select zu bearbeiten?
Ja, Du kannst Ranges direkt bearbeiten, indem Du die Cut- und Destination-Eigenschaften verwendest, wie im obigen Beispiel gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige