Clever-Excel-Forum

Normale Version: Problem mit löschen/copy/Paste
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen
Ich brauche wieder einmal Hilfe

Ich weiss, dass folgendes Thema schon mind.1000x ausgelutscht wurde. aber ich habe nichts gefunden für mein Problem. Ich kopiere von einer anderen Mappe einige Sachen und füge die in mein Arbeitsblatt Range ("A1") mit folgendem Code ein 
PHP-Code:
ActiveSheet.Paste Cells(11

Funktioniert auch gut
Jetzt mein Problem. Sobald ich vorher folgende Prozedur durchlaufen lasse
PHP-Code:
With ActiveSheet
.Range("A1:D40").ClearContents
.Range("A1:D40").Interior.ColorIndex xlNone

End With 
Funktioniert die Paste Funktion nicht mehr, da das Kopierte aus dem Speicher verschwindet. Ich muss aber vorher den Bereich A1:D40 löschen.
Und der kopierte Bereich soll immer in "A1" eingefügt werden. Der zu kopierende Bereich ist variabel. tlw A1 bis C20 oder B2 bis D15 usw.
Vielleicht hat jemand eine Idee wie ich den festgelegten Bereich lösche und die "Paste Funktion" funktioniert ohne dass der "Kopiespeicher" gelöscht wird. Entschuldigt für das Wort "Kopiespeicher". Ich weiß aber nicht wie das heißt. Achso. Ursprünglich habe ich mit 
Code:
SendKeys ("^v")


  gearbeitet. Nur hat mir dieses die Numlocktaste am Firmen PC ausgeschaltet (Warum auch immer)

LG
Michael

Ich glaube (bin mir aber noch nicht sicher) dass ich die Lösung gefunden habe

statt
.Range("A1:D40").Clear
verwende ich
.Range("A1:D40") = ""

Der Fehler ist (momentan) weg

Trotzdem danke an alle

LG
Michael
Hallo

bei ActiveSheet.Paste kopierst du immer alle Zellformate, Innenfarben usw. mit. Wenn du nur die Werte kopieren willst benutze diesen Befehl:
.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode False

mfg Gast 123
Hallo Michael,

es passiert öfter, dass der NumBlock bei SendKeys umgeschaltet wird. Ich habe mir für solche  Fälle eine Sub gebaut, die das ggf. wieder richtig stellt.
Hier ein Beispiel:

Code:

Private Declare PtrSafe Function GetKeyboardState Lib "user32" ( _
          pbKeyState As Byte) As Long

Sub TestSendKeys()
  SendMyKeys "^v"
End Sub

Sub SendMyKeys(Was As String)
' Nummernblockeinstellung merken, SendKeys abschicken,
' Nummernblock ggf. wiederherstellen
' GetKeyboardState Keys(0) Keyboard-Array füllen
  Dim Keys(0 To 255) As Byte, bNumBlock As Byte

  GetKeyboardState Keys(0): bNumBlock = Keys(vbKeyNumlock)
  SendKeys Was
  GetKeyboardState Keys(0)
  If bNumBlock <> Keys(vbKeyNumlock) Then SendKeys "{NUMLOCK}"
End Sub



Falls Du nur Werte kopieren möchtest, kannst Du diese auch ohne Kopie direkt übertragen:

Hier ein Beispiel:
Code:

Sub Nur_Werte_Kopieren()
' Kopiert nur Werte
  With Sheets("Datenbank").Range("B2:D7")
       ActiveSheet.Range("A1").Resize(.Rows.Count, .Columns.Count).Value = .Value
  End With
End Sub

_________
viele Grüße
Karl-Heinz
Hallo Karl-Heinz
Danke für Deine Hilfe.
Den Code zur Wiederherstellung kenne ich (Ich glaube den habe ich sogar von dir geklaut). und dieser hat mir alles wieder richtig eingestellt.

den anderen Code werde ich heute noch testen

LG
Michael