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

Forumthread: Laufzeitfehler '438'

Laufzeitfehler '438'
01.08.2019 19:47:49
KJ
Hallo lieber community,
um mal die Funktionsweise eines Arrays in VBA zu verstehen, habe ich mal einen VBA code zusammen gegooglet. Er soll vom Arbeitsblatt Operator Daten auf das Arbeitsblatt BUIcopy übertragen. Jedoch bekomme ich die Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht: Range("A1").Select = RG.Paste". Leider finden wir auch nichts wirklich gescheitest im Internet. Vielen Dank euch schonmal im Voraus.
Sub test()
Dim RG As Range
ThisWorkbook.Worksheets("Operator").Activate
Set RG = Range("J11:K12")
RG.Copy
ThisWorkbook.Activate
Worksheets("BUIcopy").Activate
Dim Col As Integer
Range("A1").Select = RG.Paste
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Array?
01.08.2019 19:53:07
Fennek
ungeprüft

Worksheets("Operator").Range("J11:K12").copy Worksheets("BUIcopy").Range("A1")
Wenn du etwas über Arrays lernen möchtest: http://snb-vba.eu/VBA_Arrays_en.html#L_6.16
AW: Array?
01.08.2019 19:57:15
KJ
Hi Fennek,
Danke für die Antwort. Was war denn an den code von mir falsch? Weil laut https://www.excel-easy.com/vba/range-object.html sollte das mit dem Range("A1").Select = RG.Paste doch funktionieren?
Anzeige
AW: Array?
01.08.2019 20:38:11
Daniel
Hi
nein das kann nicht funktionieren.
.Select ist eine eigenständige Anweisung (Befehle) und .Paste ebenfalls.
zwei Anweisungen kann man nicht vergleichen (1. Funktion von "=") oder ineinander einfügen (2. Funktion von "=")
Daniel
AW: Array?
01.08.2019 21:05:38
KJ
Hi Daniel,
vielen Dank für deine Erklärung.
(1.) Also müsste doch theoretisch funktionieren, wenn ich es so umschreibe:
Range("A1").Select RG.Paste
Jedoch kommt da die Fehlermeldung: "Fehler beim Kompilieren: Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft"
(2.) Wie kann ich Worksheets("Operator").Range("J11:K12").Copy Worksheets("BUIcopy").Range("A1") in VBS umwandeln? Weil da kommt der Fehler: "Typenkonflikt : 'Worksheets'"
Vielen Dank im Voraus.
Anzeige
AW: Array?
01.08.2019 22:41:21
Daniel
Hi
.Select ist ein Befehl
.Paste ist ein Befehl
In einer VBA-Zeile darf immer nur ein einziger Befehl stehen.
Nach diesen Befehl folgen dann die Parameter des Befehls, sofern er welche benötigt.
In Verbindung mit einem Rangeobjekt hat der Befehl .Select aber keine Parameter.
Zu VBS kann ich dur nichts sagen.
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler '438' in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler '438' in Excel VBA zu beheben, folge diesen Schritten:

  1. Code analysieren: Überprüfe die Zeile, die den Fehler auslöst. In deinem Fall ist das Range("A1").Select = RG.Paste.
  2. Anweisung anpassen: Ersetze den fehlerhaften Code durch die korrekte Syntax. Verwende RG.Copy und Worksheets("BUIcopy").Range("A1").PasteSpecial.
  3. Korrekte Verwendung von .Select: Wenn du .Select verwendest, stelle sicher, dass es keine Zuweisung gibt. .Select und .Paste sind separate Anweisungen.
  4. Code anpassen: Hier ein Beispiel, wie der angepasste Code aussehen könnte:

    Sub test()
       Dim RG As Range
       Set RG = ThisWorkbook.Worksheets("Operator").Range("J11:K12")
       RG.Copy
       ThisWorkbook.Worksheets("BUIcopy").Range("A1").PasteSpecial
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Objekt unterstützt diese Eigenschaft oder Methode nicht"

    • Lösung: Stelle sicher, dass du die richtige Syntax verwendest. .Select und .Paste sollten nicht in einer Zuweisung kombiniert werden.
  • Fehler: "Typenkonflikt: 'Worksheets'"

    • Lösung: Überprüfe, ob der Arbeitsblattname korrekt ist. Stelle sicher, dass die Arbeitsblätter existieren.

Alternative Methoden

Wenn du Probleme mit der ursprünglichen Methode hast, können folgende Alternativen helfen:

  • Direktes Kopieren ohne .Select:

    ThisWorkbook.Worksheets("Operator").Range("J11:K12").Copy _
    Destination:=ThisWorkbook.Worksheets("BUIcopy").Range("A1")
  • Verwendung von .PasteSpecial:

    ThisWorkbook.Worksheets("Operator").Range("J11:K12").Copy
    ThisWorkbook.Worksheets("BUIcopy").Range("A1").PasteSpecial

Praktische Beispiele

Hier sind einige Beispiele, die dir helfen können, den Fehler '438' zu vermeiden:

  1. Kopieren von Zellen:

    Sub CopyCells()
       ThisWorkbook.Worksheets("Operator").Range("A1:B2").Copy _
       ThisWorkbook.Worksheets("BUIcopy").Range("C1")
    End Sub
  2. Verwendung von Arrays:

    Sub ArrayExample()
       Dim myArray() As Variant
       myArray = ThisWorkbook.Worksheets("Operator").Range("A1:A10").Value
       ThisWorkbook.Worksheets("BUIcopy").Range("A1:A10").Value = myArray
    End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler wie laufzeitfehler 438 zu vermeiden.
  • Verwende With-Anweisungen, um den Code lesbarer und effizienter zu gestalten. Beispiel:

    With ThisWorkbook.Worksheets("Operator")
       .Range("J11:K12").Copy Destination:=ThisWorkbook.Worksheets("BUIcopy").Range("A1")
    End With

FAQ: Häufige Fragen

1. Was bedeutet der Laufzeitfehler '438'? Der Laufzeitfehler '438' tritt auf, wenn ein Objekt in VBA eine Methode oder Eigenschaft nicht unterstützt.

2. Wie kann ich diesen Fehler vermeiden? Achte darauf, dass du die richtige Syntax verwendest und keine Methoden oder Eigenschaften auf Objekte anwendest, die diese nicht unterstützen.

3. Was ist der Unterschied zwischen .Select und .Copy in VBA? .Select ist ein Befehl, um ein Objekt auszuwählen, während .Copy das Objekt in die Zwischenablage kopiert. Sie können nicht in einer Zuweisung kombiniert werden.

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