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

Range("a2)".select funktioniert nicht

Forumthread: Range("a2)".select funktioniert nicht

Range("a2)".select funktioniert nicht
16.07.2002 16:51:16
Andri
ich habe folgendes problem:

ich möchte aus einem file xyz.xls per button einen makro starten, der mir im file mappe2.xls einen wert kopiert und in mappe1.xls einfügt. doch scheitert er jedesmal bei range("a2").select.

dies war nur ein testmakro, der wirkliche makro ist viel komplexer, scheitert aber am selben problem!

hier mein quellcode:

Private Sub CommandButton2_Click()
Windows("Mappe2.xls").Activate
Range("A2").Select
Selection.Copy
Windows("mappe1.xls").Activate
Range("A2").Select
ActiveSheet.Paste
End Sub

vielen dank für eure hilfe! kann es daran liegen, dass ich den makro per button aufrufe?

andri

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Range("a2)".select funktioniert nicht
16.07.2002 16:56:54
MikeS
Hallo Andri,

in der Entwicklungsumgebung Einfügen/Modul wählen
und Deinen Code einfügen.

Dann sollte es klappen.

Ciao Mike

Re: Range("a2)".select funktioniert nicht
16.07.2002 17:00:37
Wolfgang
Der Code ist an und für sich OK.
Kann es sein, dass in der "Mappe1.xls" mehrere
Sheets enthalten sind. Dann müßtest du u.U. das
gewünschte Sheet mit dem
Befehl: Sheets("Name des Sheets").Select
festlegen und diesen Befehl vor Range("a2").select einfügen.

Gruß Wolfgang

Anzeige
funktioniert!
16.07.2002 17:08:14
Andri
hallo zusammen,

vielen dank für eure hilfe! der tip von mike hat funktioniert!

so lange man im workbook bleibt, von welchem aus man den makro gestartet hat, gibt es keine probleme mit range("a2").select. doch sobald man in ein anderes file wechselt, funktioniert es nicht mehr. die lösung ist nun tatsächlich, den quelltext in einem modul laufen zu lassen, wie mike es beschrieben hat.

vielen dank!

ciao andri

Anzeige
Re: funktioniert!
16.07.2002 18:18:13
Martin M.
Hallo Andri,
zusätzlich könntest du den Code so abändern, daß du die Bereiche nicht "selectieren" mußt:

Grüße
Martin M.

Re: funktioniert!
16.07.2002 18:44:36
th.heinrich
hallo Martin,

mal ein schoenes beispiel wie SELECT vermieden werden kann.
aber ich als alter MAKROAUFZEICHNER brauechte weitere tipps.

hast Du sowas?

danke thomas

Anzeige
Re: funktioniert!
18.07.2002 10:38:14
Martin M.
Hallo Thomas,
ich kann dir nur empfehlen viele Codes zu lesen und studieren, vor allem die Beispielmappen von Hans Herber. Ansonsten stellst du deine Fragen einfach ins Forum.

Grüße
Martin M.

danke Martin o.t
18.07.2002 18:34:29
th.heinrich
.
;
Anzeige

Infobox / Tutorial

Range("A2").Select funktioniert nicht – Lösungen und Tipps


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei, in der du den Makro erstellen möchtest.

  2. Wechsle zur Entwicklungsumgebung:

    • Klicke auf „Entwicklertools“ > „Visual Basic“.
  3. Füge ein neues Modul hinzu:

    • Klicke auf „Einfügen“ > „Modul“.
  4. Kopiere und füge den folgenden Code ein:

    Private Sub CommandButton2_Click()
       Windows("Mappe2.xls").Activate
       Sheets("Name des Sheets").Range("A2").Copy
       Windows("mappe1.xls").Activate
       Sheets("Name des Sheets").Range("A2").PasteSpecial
    End Sub
  5. Achte darauf, den Namen des Sheets in Sheets("Name des Sheets") entsprechend anzupassen.

  6. Speichere den Code und teste den Button, um sicherzustellen, dass der Makro korrekt funktioniert.


Häufige Fehler und Lösungen

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

    • Lösung: Überprüfe, ob der Name der Datei oder des Sheets korrekt ist. Achte auf Groß- und Kleinschreibung.
  • Fehler: Range("A2").Select funktioniert nicht

    • Lösung: Verwende Sheets("Name des Sheets").Range("A2").Select um sicherzustellen, dass das richtige Sheet aktiv ist.
  • Fehler beim Kopieren/Pasten

    • Lösung: Statt Select zu verwenden, kannst du Copy und PasteSpecial direkt auf die Range anwenden, um Fehler zu minimieren.

Alternative Methoden

Anstatt Range("A2").Select zu verwenden, kannst du den Code direkt auf die Range anwenden, was die Effizienz verbessert. Hier ein Beispiel:

Private Sub CommandButton2_Click()
    Windows("Mappe2.xls").Activate
    Sheets("Name des Sheets").Range("A2").Copy
    Windows("mappe1.xls").Activate
    Sheets("Name des Sheets").Range("A2").PasteSpecial
End Sub

Diese Methode vermeidet die Verwendung von Select und sorgt für einen schnelleren Ablauf.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du Werte zwischen zwei Excel-Dateien über ein Makro kopieren kannst:

Sub CopyValue()
    Dim sourceFile As String
    Dim targetFile As String
    sourceFile = "C:\Pfad\zu\Mappe2.xls"
    targetFile = "C:\Pfad\zu\mappe1.xls"

    Workbooks.Open sourceFile
    Workbooks.Open targetFile

    Workbooks("Mappe2.xls").Sheets("Sheet1").Range("A2").Copy
    Workbooks("mappe1.xls").Sheets("Sheet1").Range("A2").PasteSpecial

    Workbooks("Mappe2.xls").Close False
    Workbooks("mappe1.xls").Save
    Workbooks("mappe1.xls").Close
End Sub

Tipps für Profis

  • Vermeide Select und Activate: Reduziere die Verwendung dieser Befehle, um die Ausführungsgeschwindigkeit deines Makros zu erhöhen.

  • Nutze With-Anweisungen: Damit kannst du den Code lesbarer machen, z.B.:

    With Sheets("Name des Sheets")
       .Range("A2").Copy
       .Range("A2").PasteSpecial
    End With
  • Fehlerbehandlung einfügen: Verwende On Error Resume Next, um Fehler zu handhaben und deinen Code robuster zu machen.


FAQ: Häufige Fragen

1. Warum funktioniert Range("A2").Select nicht? Es könnte daran liegen, dass das richtige Sheet nicht aktiv ist oder das Workbook nicht korrekt ausgewählt wurde. Stelle sicher, dass du das Sheet vor der Auswahl der Range angibst.

2. Was sind die Vorteile der Vermeidung von Select? Durch das Vermeiden von Select wird dein Code effizienter und weniger anfällig für Fehler. Es verbessert auch die Lesbarkeit und Wartbarkeit des Codes.

3. Wie kann ich mehrere Werte kopieren? Du kannst die Range erweitern, indem du z.B. Range("A2:A10").Copy verwendest, um mehrere Zellen gleichzeitig zu kopieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige