Pastspecial funktioniert in VBA nur einmal
#1
Hallo Zusammen,

ich bin noch ein Neuling was VBA betrifft habe mir den folgenden Code zusammengesucht und umgestellt. Der Code funktioniert an sich auch.
Jedoch kommt nach einmaligem ausführen beim darauffolgenden mal die Fehlermeldung "Laufzeitfehler 1004" "Die PAstspecial-Methode des Range-Objekts konnte nicht ausgeführt werden". Huh Huh
Das Makros soll einen Bereich in Tabelle "Themenboard"  nach einer Leerzelle durchsuchen und daraufhin die Werte aus der Tabelle "Daten dort eintragen.

Hier der Code:

Sub Eingabeübertrag()
'
' Eingabeübertrag Makro
'
'
    ActiveSheet.Unprotect
    Application.ScreenUpdating = False
    Sheets("Daten").Select
    Range("D2:G2").Copy
    Sheets("Themenboard").Select
    ActiveSheet.Unprotect
    [D4:D25].SpecialCells(xlBlanks).Cells(1).Select
    ActiveCell.Offset(0, -1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Protect
    Sheets("Eingabe").Select
    Range("A1").Select
    ActiveSheet.Protect
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
   
End Sub


Vielen Dank schon mal im Voraus  :)
Top
#2
Hallo,

Application.CutCopyMode = False

löscht ja auch die Zwischenablage.

Gruß Uwe
Top
#3
Danke Uwe für die schnelle Antwort.


Leider bringt die Änderung nichts.

Aber wird bei erneutem ausführen die Zwischenablage nicht neu mit den Zellen D2:G2 befüllt?

Gruß
Brian
Top
#4
Hallo Brian,

(28.10.2016, 08:00)briansen93 schrieb: Aber wird bei erneutem ausführen die Zwischenablage nicht neu mit den Zellen D2:G2 befüllt?

das ist richtig. Ich kann den Fehler in meinem Testaufbau auch nicht nachvollziehen.
Da wäre eine Beispieldatei, in der dieses Verhalten bei Dir auch auftritt, erforderlich.

Gruß Uwe
Top
#5
Hier die Datei


Angehängte Dateien
.xlsm   Testdatei.xlsm (Größe: 35,59 KB / Downloads: 6)
Top
#6
Hallo Brian,

ja, die Zwischenablage wird ab dem 2. Unprotect von Themenboard gelöscht. Frag mich nicht wieso.
Folgender Code kommt ohne Selects aus und überträgt die Werte direkt ohne Copy/Paste:
Sub Eingabeuebertrag1()
   Sheets("Eingabe").Unprotect
   Sheets("Themenboard").Unprotect
   With Sheets("Themenboard").Range("D4:D25")
     If Application.CountBlank(.Cells) Then
       .SpecialCells(xlBlanks).Cells(1).Offset(0, -1).Resize(, 4).Value = _
         Sheets("Daten").Range("D2:G2").Value
     Else
       MsgBox "Das Themenboard ist schon voll.", vbInformation
     End If
   End With
   Sheets("Eingabe").Protect
   Sheets("Themenboard").Protect
End Sub
Schaue auch mal hier rein:

Achtung Makrorekorder oder Wer selektiert denn da?
Performance (2) - Select Activate Bremsen und ein Beispiel

Gruß Uwe
Top
#7
Wow danke Uwe ::)

Funktioniert einwandfrei *thumbsup*
Top
#8
Hallöchen,

die Excel-Zwischenablage wird bei verschiedenen Aktionen gelöscht, z.B. auch beim Anlegen / Kopieren oder Löschen von Blättern, Blattschutz einstellen oder aufheben, Speichern  usw.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste