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

Problem Pastespecial-Methode

Forumthread: Problem Pastespecial-Methode

Problem Pastespecial-Methode
01.12.2002 17:08:34
Ralf
Hallo und guten Abend
Kann mir von euch jemand sagen warum beim ausführen dieses Makros eine Fehlermeldung 1004 ( Die Pastespecial-Methode des Range - objektes kann nicht ausgeführt werden ) Dies ist nur ein Außschnitt aus dem Makro.
Der Fehler erscheint in der 8 Zeile von unten
Next i
Worksheets("1").Activate
Worksheets("1").Shapes("autoform 81").Delete
Worksheets("1").Shapes("autoform 82").Delete
Range("h51").Formula = "=Sum(H19:H50)"
Range("H51").Borders.ColorIndex = 0
Range("I51").Borders.ColorIndex = 0
Range("f51").Formula = "Übertrag:"
With Selection
.Font.FontStyle = "fett"
.HorizontalAlignment = xlRight
End With

ActiveSheet.Name = Range("i19").Value
Set NewSheet = Sheets.Add(Type:="Folgeseiten.xls")

NewSheet.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Range("h5").Value = Sheets(Sheets.Count - 1).Range("i19").Value + 1
Range("H9").FormulaR1C1 = "=" & Sheets(Sheets.Count - 1).Name & "!R[42]C"
With Worksheets("2")
For i = 9 To 50
If .Cells(i, 4).Text = "" And .Cells(i + 1, 4).Text = "" Then
.Cells(i + 1, 3).PasteSpecial
ActiveSheet.Name = Range("h5").Value
Exit Sub
End If
Next i

End With
End With

End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Problem Pastespecial-Methode
01.12.2002 17:37:54
N. Davidheimann
Hallo Ralf,

pastespecial ohne copy ??

Gruß
norbert

Re: Problem Pastespecial-Methode
01.12.2002 18:05:44
Ralf
Ich versteh nicht ganz was du willst hier ist das ganze makro villeicht hilt das ein bischen mein Problem zu lösen

Sub AutoForm1_BeiKlick()
Dim i As Integer
If Selection Is Nothing Then
Exit Sub
Else
Selection.Copy
End If

With Worksheets("1")
For i = 23 To 50
If .Cells(i, 4).Text = "" And .Cells(i + 1, 4).Text = "" Then
.Cells(i + 1, 3).PasteSpecial Paste:=xlValues
Exit Sub
End If
Next i
If Selection Is Nothing Then
Exit Sub
Else
Selection.Copy
End If
Worksheets("1").Activate
Worksheets("1").Shapes("autoform 81").Delete
Worksheets("1").Shapes("autoform 82").Delete
Range("h51").Formula = "=Sum(H19:H50)"
Range("H51").Borders.ColorIndex = 0
Range("I51").Borders.ColorIndex = 0
Range("f51").Formula = "Übertrag:"
With Selection
.Font.FontStyle = "fett"
.HorizontalAlignment = xlRight
End With
ActiveSheet.Name = Range("i19").Value
Set NewSheet = Sheets.Add(Type:="Folgeseiten.xls")

NewSheet.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Range("h5").Value = Sheets(Sheets.Count - 1).Range("i19").Value + 1
Range("H9").FormulaR1C1 = "=" & Sheets(Sheets.Count - 1).Name & "!R[42]C"
With Worksheets("2")
For i = 9 To 50
If .Cells(i, 4).Text = "" And .Cells(i + 1, 4).Text = "" Then
.Cells(i + 1, 3).PasteSpecial
ActiveSheet.Name = Range("h5").Value
Exit Sub
End If
Next i
End With
End With

End Sub

Anzeige
Re: Problem Pastespecial-Methode
01.12.2002 19:36:11
Ramses
Hallo Ralf,

du musst dem Makro schon sagen was es einfügen soll.
Nur mit PasteSpecial ist leider nicht getan :-)


Sub dem()
With Worksheets("2")
    For i = 9 To 50
        If .Cells(i, 4).Text = "" And .Cells(i + 1, 4).Text = "" Then
            'Formeln und Zahlenformate
            .Cells(i + 1, 3).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
            '---
            'Nur Werte
            '.Cells(i + 1, 3).PasteSpecialPaste:=xlPasteValues
            '---
            'Nur Formeln
            '.Cells(i + 1, 3).PasteSpecial Paste:=xlPasteFormulas
            '---
            'Nur Formate
            '.Cells(i + 1, 3).PasteSpecial Paste:=xlPasteFormats
            ActiveSheet.Name = Range("H5").Value
            Exit Sub
        End If
    Next i
End With
End Sub 
     Code eingefügt mit Syntaxhighlighter 1.16

Gruss Rainer

Anzeige
Re: Problem Pastespecial-Methode
01.12.2002 20:09:53
klappt immer noch nicht
So sieht es jetzt aus und es kommt immer noch die Fehlermeldung


Sub AutoForm1_BeiKlick()
Dim i As Integer
If Selection Is Nothing Then
Exit Sub
Else
Selection.Copy
End If

With Worksheets("1")
For i = 23 To 50
If .Cells(i, 4).Text = "" And .Cells(i + 1, 4).Text = "" Then
.Cells(i + 1, 3).PasteSpecial
Exit Sub
End If
Next i
Worksheets("1").Activate
Worksheets("1").Shapes("autoform 81").Delete
Worksheets("1").Shapes("autoform 82").Delete
Range("h51").Formula = "=Sum(H19:H50)"
Range("H51").Borders.ColorIndex = 0
Range("I51").Borders.ColorIndex = 0
Range("f51").Formula = "Übertrag:"
With Selection
.Font.FontStyle = "fett"
.HorizontalAlignment = xlRight
End With

ActiveSheet.Name = Range("i19").Value
Set NewSheet = Sheets.Add(Type:="Folgeseiten.xls")


NewSheet.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Range("h5").Value = Sheets(Sheets.Count - 1).Range("i19").Value + 1
Range("H9").FormulaR1C1 = "=" & Sheets(Sheets.Count - 1).Name & "!R[42]C"
With Worksheets("2")
For i = 9 To 50
If .Cells(i, 4).Text = "" And .Cells(i + 1, 4).Text = "" Then

.Cells(i + 1, 3).PasteSpecial

ActiveSheet.Name = Range("H5").Value
Exit Sub
End If
Next i
End With


End With

End Sub

Anzeige
Re: Problem Pastespecial-Methode
01.12.2002 20:30:59
N. Davidheimann
Hallo,

kann ja sein, daß ich falsch liege aber (ohne VBA) muß ich einen Bereich zunächst kopieren und dann (Werte) einfügen. In VBA habe ich in solchen Fällen den Code genauso aufgebaut, also erst copy dann pastespecial.

Gruß
Norbert

Re: Problem Pastespecial-Methode
01.12.2002 21:12:57
Ramses
Also ebenfalls ohne Anrede

Meine Codesequenz funktioniert

Wie Kollege N.Davidheimann schon bemerkt hat:
Ich weiss nicht, wie lange der kopierte Bereich in der Zwischenablage ist. Du machst sehr viel zwischen dem Copy-Befehl und dem Einfügen, z.B. Delete usw..
Prüfe doch einmal, ob zu diesem Zeitpunkt überhaupt noch was in der Zwischenablage ist. Wenn das Makro stoppt, wählst du anschliessend in der Tabelle einfach den Befehl: Bearbeiten-Inhalte einfügen.
Steht er nicht zur Verfügung, ist die Zwischenablage leer und der Fehler tritt deshalb auf. Dann solltest du den Copy-Befehl in deinem Makro vielleicht erst kurz vorher ausführen.
Vorher brauchst du ihn ja sowieso nicht.

Anzeige
Re: Problem Pastespecial-Methode
01.12.2002 21:28:05
M. Kuhn
Moin Ralf,

wie Dir in diesem Thread schon alle geraten haben:

vor PasteXXX muss erst etwas kopiert sein! Dein zuerst kopierter Bereich ist bereits beim ersten .Copy 'verbraucht'.

Ich mache nochmal einen Versuch, dass per Code klarzustellen.
Du solltest aber versuchen, Ordnung und Struktur in den Gesamtcode zu bringen, damit Du selbst das 'Gehen' lernst, das Forum kann es.

Code:

Sub AutoForm1_BeiKlick()
Dim i As Integer
Call BereichKopieren
With Worksheets(1)
For i = 23 To 50
If .Cells(i, 4).Text = "" And .Cells(i + 1, 4).Text = "" Then
.Cells(i + 1, 3).PasteSpecial
Exit Sub
End If
Next i
Worksheets(1).Activate
Worksheets("1").Shapes("autoform 81").Delete
Worksheets("1").Shapes("autoform 82").Delete
Range("h51").Formula = "=Sum(H19:H50)"
Range("H51").Borders.ColorIndex = 0
Range("I51").Borders.ColorIndex = 0
Range("f51").Formula = "Übertrag:"
With Selection
.Font.FontStyle = "fett"
.HorizontalAlignment = xlRight
End With
ActiveSheet.Name = Range("i19").Value
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
Sheets(Sheets.Count).Name = "Folgeseiten"
Sheets(Sheets.Count).Range("h5").Value = Sheets(Sheets.Count - 1).Range("i19").Value + 1
Range("H9").FormulaR1C1 = "=" & Sheets(Sheets.Count - 1).Name & "!R[42]C"
Call BereichKopieren 'hier wird neu kopiert
With Worksheets(2)
For i = 9 To 50
If .Cells(i, 4).Text = "" And .Cells(i + 1, 4).Text = "" Then
.Cells(i + 1, 3).PasteSpecial
ActiveSheet.Name = Range("H5").Value
Exit Sub
End If
Next i
End With
End With
End Sub


Sub BereichKopieren()

With 'Quellblatt
If Selection Is Nothing Then
Exit Sub
Else
Selection.Copy
End If
End With
End Sub

Nicht schön, aber selten und noch gemäß Deinen Vorgaben.

MfG Mario

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Probleme mit der Pastespecial-Methode in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um die Fehler der Pastespecial-Methode in Excel VBA zu beheben, folge diesen Schritten:

  1. Kopieren des Bereichs: Stelle sicher, dass du den gewünschten Bereich zuerst mit .Copy kopierst. Beispiel:

    Selection.Copy
  2. Verwendung von PasteSpecial: Verwende Pastespecial, um die kopierten Werte einzufügen. Achte darauf, den richtigen Parameter anzugeben, z.B.:

    .Cells(i + 1, 3).Pastespecial Paste:=xlPasteValues
  3. Vermeidung von Zwischenablageproblemen: Reduziere die Anzahl der Befehle zwischen .Copy und .PasteSpecial, um sicherzustellen, dass der kopierte Inhalt in der Zwischenablage bleibt.

  4. Fehlerbehandlung einbauen: Implementiere Fehlerbehandlung, um auf mögliche Probleme zu reagieren:

    On Error Resume Next

Häufige Fehler und Lösungen

  • Fehler 1004: "Die Pastespecial-Methode des Range-Objektes kann nicht ausgeführt werden."

    • Lösung: Überprüfe, ob der Bereich, den du einfügen möchtest, tatsächlich kopiert wurde. Stelle sicher, dass der Copy-Befehl direkt vor dem Pastespecial steht.
  • Pastespecial ohne Kopieren:

    • Lösung: Du musst sicherstellen, dass du einen Bereich kopierst, bevor du Pastespecial aufrufst, z.B. Selection.Copy vor Selection.Pastespecial.

Alternative Methoden

Wenn du auf Probleme mit der Pastespecial-Methode stößt, kannst du alternative Methoden verwenden:

  1. Direktes Zuweisen von Werten: Statt Pastespecial kannst du auch direkt Werte zuweisen:

    .Cells(i + 1, 3).Value = .Cells(i, 3).Value
  2. Kopieren und Einfügen ohne VBA: Du kannst auch manuell kopieren und einfügen, um festzustellen, ob das Problem in deinem VBA-Code liegt.


Praktische Beispiele

Hier sind einige Beispiele, die die Verwendung von Pastespecial in Excel VBA veranschaulichen:

  1. Werte einfügen:

    Sub WerteEinfügen()
       Dim i As Integer
       Selection.Copy
       For i = 1 To 5
           Cells(i, 1).Pastespecial Paste:=xlPasteValues
       Next i
    End Sub
  2. Formeln und Zahlenformate einfügen:

    Sub FormelnUndFormateEinfügen()
       Dim i As Integer
       Selection.Copy
       For i = 1 To 5
           Cells(i, 1).Pastespecial Paste:=xlPasteFormulasAndNumberFormats
       Next i
    End Sub

Tipps für Profis

  1. Verwende Application.CutCopyMode = False: Dies entfernt den Kopiermodus und kann helfen, Probleme zu vermeiden.

    Application.CutCopyMode = False
  2. Vermeide das Verwenden von Activate: Arbeiten mit ActiveSheet kann zu Fehlern führen, wenn das aktive Blatt nicht das erwartete ist. Stattdessen direkt auf das Blatt zugreifen:

    With Worksheets("1")
       .Cells(i + 1, 3).Pastespecial Paste:=xlPasteValues
    End With
  3. Nutze xlPasteSpecial Konstanten: Verwende die Konstanten wie xlPasteValues oder xlPasteFormulas, um den Code leserlicher zu machen.


FAQ: Häufige Fragen

1. Warum bekomme ich den Fehler "Die Pastespecial-Methode des Range-Objektes kann nicht ausgeführt werden"? Dieser Fehler tritt auf, wenn du versuchst, mit Pastespecial zu arbeiten, ohne dass zuvor etwas in die Zwischenablage kopiert wurde. Stelle sicher, dass der Copy-Befehl korrekt ausgeführt wurde.

2. Was mache ich, wenn der Inhalt der Zwischenablage verloren geht? Reduziere die Anzahl der Schritte zwischen Selection.Copy und Selection.Pastespecial. Überprüfe auch, ob du unnötige Lösch- oder Aktivierungsbefehle verwendest, die den Inhalt der Zwischenablage beeinflussen könnten.

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