Excel VBA - STRG + V auf Werte einfügen festlegen

Excelmania

Lieutenant
Registriert
Apr. 2010
Beiträge
799
Guten Morgen.

ich möchte gerne, dass auf einem Tabellenblatt beim Einfügen über die Tastenkombination automatisch nur Werte eingefügt werden.

Leider klappt die Portierung aus einer Textbox nicht.

Code:
Private Sub activesheet_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = Ctrl + v Then
ActiveCell.PasteSpecial xlPasteValues
End Sub

Jemand eine Idee, wie ich das lösen könnte?
 
Du solltest ein anderes Konstrukt verwenden

In Microsoft Access VBA sähe das z.B. wie folgt aus:

Private Sub Form_KeyDown(ByRef intKeyCode As Integer, _ ByRef intShift As Integer) On Error GoTo Form_KeyDown_Error Dim intCtrlKeyDown As Integer Dim intShiftKeyDown As Integer intCtrlKeyDown = (intShift And acCtrlMask) > 0 intShiftKeyDown = (intShift And acShiftMask) > 0 With Me Select Case intCtrlKeyDown Case True Select Case intShiftKeyDown Case True Select Case intKeyCode Case vbKeyN If !cmdAddRecord.Enabled = True Then Call cmdAddRecord_Click Else Beep End If End Select Case False Select Case intKeyCode Case vbKeyB Call cmdBearbeiten_Click Case vbKeyDelete If !cmdDelete.Enabled = True Then Call cmdDelete_Click Else Beep End If Case vbKeyHome Call modComDeclPF.GoToDataFormRecord(.Name, _ 0) ' Gehe zum ersten Datensatz Case vbKeyEnd Call modComDeclPF.GoToDataFormRecord(.Name, _ 3) ' Gehe zum letzten Datensatz End Select End Select Case False Select Case intKeyCode Case vbKeyEscape !txtDianummer.SetFocus End Select End Select End With Form_KeyDown_Exit: Exit Sub Form_KeyDown_Error: Resume Form_KeyDown_Exit End Sub
 
@till69: funktioniert leider nicht.

habe es auch noch einmal in change_Worksheet ausprobiert:

Code:
Option Explicit
Private Sub Worksheet_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 86 And Shift = 2 Then
ActiveCell.PasteSpecial xlPasteValues
End Sub


Code:
Option Explicit
Private Sub Worksheet_change(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 86 And Shift = 2 Then
ActiveCell.PasteSpecial xlPasteValues
End Sub

@ella one: umgemüntzt auf worksheet klappt es leider nicht in Excel.
 
Hallo.

Das hatte ich zu Beginn ausprobiert. Aber folgendes klappt nicht (Aktuell im Modul).

Code:
Option Private Module

Sub COPYPASTE()
'
' Tastenkombination: Strg+v
'
ActiveCell.PasteSpecial xlPasteValues

End Sub
 
Funktioniert bei mir (Excel 2019):
Code:
Selection.PasteSpecial Paste:=xlPasteValues
 
komisch. bei mir nicht siehe Anlage.

ich habe nun folgede im Modul stehen:

Code:
Option Private Module

Sub COPYPASTE()
'
' Tastenkombination: Strg+v
'
Selection.PasteSpecial Paste:=xlPasteValues

End Sub


Oder wo hast Dud en Code und welchen genau stehen?
 

Anhänge

  • kopieren.gif
    kopieren.gif
    42,3 KB · Aufrufe: 249
Evtl. verstehst Du "Werte eingefügen" nicht:

Da werden aus Formel-Ergebnissen eben Werte gemacht. Ein Text bleibt ein Text.
 
Meines Verständnis nach bedeutet xlValues nur Werte ohne jegliche Formatierung (hier Fett und Schattierung).

siehe Bild.
 

Anhänge

  • kopieren2.gif
    kopieren2.gif
    85,1 KB · Aufrufe: 231
Dann so:
Code:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
Klappt auch nicht.


Hast Du es als Modul oder Worksheet stehen?
 

Anhänge

  • kopieren3.gif
    kopieren3.gif
    97,4 KB · Aufrufe: 271
Als Modul:
Code:
Sub Makro1()
'
' Makro1 Makro
'
' Tastenkombination: Strg+v
'
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub

Dein Makro wird wohl nicht ausgeführt, bei mir erscheint beim Ausführen(=Einfügen) KEIN Optionsfeld.

Ich habe es per "Makro aufzeichnen" erstellt.
 
ja jetzt geht es bei mir auch. Aber das doch komisch? Der Code ist doch identisch?
 
Beim Werte Einfügen per Makro kommt es entscheidend darauf an, woher die Werte kommen. Gleiche Excel Instanz? Andere Excel Instanz? Anders Office Programm? Anderes Programm?

Ich habe da am Anfang auch an meinen Makros gezweifelt. Ein Ansatz wäre:
Code:
Sub Werte_einfuegen() ' STRG+UMSCHALT+v
' Werte einfügen abhängig von ihrer Quelle, ohne Formatierung
  If Application.CutCopyMode > 0 Then                               'Application.CutCopyMode > 0 nur beim Kopieren in derselben Excel-Instanz
    Selection.PasteSpecial xlPasteValues                            ' Einfügen Werte aus der gleichen Excel-Instanz
  Else
    ActiveSheet.PasteSpecial Format:="HTML", NoHTMLFormatting:=True ' Einfügen Werte aus fremder Excel-Instanz
  End If
End Sub
 
Zurück
Oben