Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Ist es Möglich nur Werte auszuschneiden? | Herbers Excel-Forum


Betrifft: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 05.12.2009 22:38:03

Hallo zusammen,

Ich arbeite immernoch an meinem Formatierungsproblem unter xl2003.
Mir ist jetzt die Idee gekommen nur Werte mit strg x auszuschneiden.
Ist sowas überhaupt möglich in VBA?

Damit gehts jedenfalls nicht:

Sub ausschneiden()

Selection.Cut xlValues

End Sub
Wäre für Hilfe sehr Dankbar

Gruß

alex

  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Josef Ehrensberger
Geschrieben am: 05.12.2009 22:57:28

Hallo Alex,

nein das geht nicht, du kannst aber beim Einfügen statt ".Paste" mit ".PasteSpecial xlValues" arbeiten.


Gruß Sepp



  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 05.12.2009 23:44:27

hi sepp.
danke für deine antwort.

Leider bekomme ich dann einen laufzeitfehler wenn ich mit strg x ausschneide und danach mit strg v einfüge(habe bereits ein makro selection.pastspecial xlvalues auf strg v gelegt).

mein ziel ist es das beim auschneiden/kopieren/autoausfüllen nicht die formatierung von meiner tabelle versaut wird.

falls du oder andere noch eine andere idee haben wäre ich sehr dankbar.


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Josef Ehrensberger
Geschrieben am: 05.12.2009 23:46:01

Hallo Alex,

der Fehler ist in der vierten zeile deine Code zu finden.


Gruß Sepp



  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 06.12.2009 00:17:43

bist du sicher das du mich meinst???


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Josef Ehrensberger
Geschrieben am: 06.12.2009 00:21:34

Hallo Alex,

ja sicher, ich hab ein neues Tool mit dem ich jeden beliebigen PC ausspionieren kann.
Ich hab auch schon die Fotos deiner Freundin auf deiner Festplatte angesehen.

Spass beiseite, das war ironisch gemeint, wie soll ich wissen was in deinem Code
schiefläuft, wenn du ihn nicht zeigst?


Gruß Sepp



  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 06.12.2009 19:03:26

Ich habe mich gerade echt erschreckt. Ich habe wirklich Fotos von meiner Freundin auf meiner Festplatte^^.

Meine Frage war ja nicht auf einen eventuel vorhandenen Code gestützt. Es existierte bis lang nur die Idee.
Allerdings habe ich jetzt aufgrund von Daniels Antwort einen Code geschrieben...der aber nicht funktioniert.
Vielleicht hast du ja ne idee wie ich den zum funktionieren bekomme.


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Josef Ehrensberger
Geschrieben am: 06.12.2009 21:23:52

Hallo Alex,

das würde ich so lösen.

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Activate()
  Application.OnKey "^c", "'copyData ""copy""'"
  Application.OnKey "^x", "'copyData ""cut""'"
  Application.OnKey "^v", "'copyData ""insert""'"
End Sub

Private Sub Workbook_Deactivate()
  Application.OnKey "^c"
  Application.OnKey "^x"
  Application.OnKey "^v"
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private varValues As Variant

Sub copyData(Optional mode As String)
  On Error GoTo ErrExit
  If TypeName(Selection) = "Range" Then
    If mode = "copy" Then
      varValues = Selection
    ElseIf mode = "cut" Then
      varValues = Selection
      Selection.ClearContents
    ElseIf mode = "insert" Then
      If IsArray(varValues) Then
        ActiveCell.Resize(UBound(varValues, 1), UBound(varValues, 2)) = varValues
      ElseIf varValues <> "" Then
        ActiveCell = varValues
      End If
    End If
  End If
  ErrExit:
  If Err.Number <> 0 Then
    MsgBox "Kopieren/Einfügen der Daten nicht möglich!", vbExclamation, "Kopieren/Einfügen"
  End If
End Sub



Gruß Sepp



  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 08.12.2009 16:14:41

Hi Sepp

Danke für deine hilfe.
Dein makro funktioniert super,
aber es fehlt der kopier/ausschneide rahmen.
geht es das man den irgendwie noch ins makro einfügt?


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Josef Ehrensberger
Geschrieben am: 08.12.2009 17:32:09

Hallo Alex,

nein, weil nichts kopiert wird gibt's auch keinen Rahmen.

Ich glaube sowieso, daß du dich da verrennst und an dein Problem ganz heran gehst.


Gruß Sepp



  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 09.12.2009 17:50:17

wie meinst du das?

gruß

alex


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Josef Ehrensberger
Geschrieben am: 09.12.2009 22:32:50

Hallo Alex,

weil nichts kopiert wird gibt's eben auch keinen Rahmen.

und es sollte Ich glaube sowieso, daß du dich da verrennst und an dein Problem ganz falsch heran gehst. heißen.



Gruß Sepp



  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 11.12.2009 06:15:31

und es sollte Ich glaube sowieso, daß du dich da verrennst und an dein Problem ganz falsch heran gehst. heißen.
Darauf bezog sich ja meine Frage^^. Wie Würdest du an diese Problem heran gehen?


Gruß

alex


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Josef Ehrensberger
Geschrieben am: 11.12.2009 15:43:14

Hallo Alex,

das kann ich nicht beurteilen, weil ich die Anforderungen deiner Datei nicht kenne.

Probier mal die Version.

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Activate()
  Application.OnKey "^c", "'copyData ""copy""'"
  Application.OnKey "^x", "'copyData ""cut""'"
  Application.OnKey "^v", "'copyData ""insert""'"
End Sub

Private Sub Workbook_Deactivate()
  Application.OnKey "^c"
  Application.OnKey "^x"
  Application.OnKey "^v"
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private rng As Range
Private blnCut As Boolean

Sub copyData(Optional mode As String)
  On Error GoTo ErrExit
  If TypeName(Selection) = "Range" Then
    If mode = "copy" Then
      Set rng = Selection
      rng.Copy
      blnCut = False
    ElseIf mode = "cut" Then
      Set rng = Selection
      rng.Copy
      blnCut = True
    ElseIf mode = "insert" Then
      If Not rng Is Nothing Then
        ActiveCell.PasteSpecial xlValues
        Application.CutCopyMode = False
        If blnCut Then rng.ClearContents
      End If
    End If
  End If
  ErrExit:
  If Err.Number <> 0 Then
    MsgBox "Kopieren/Einfügen der Daten nicht möglich!", vbExclamation, "Kopieren/Einfügen"
  End If
End Sub



Gruß Sepp



  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 11.12.2009 06:16:13

und es sollte Ich glaube sowieso, daß du dich da verrennst und an dein Problem ganz falsch heran gehst. heißen.
Darauf bezog sich ja meine Frage^^. Wie Würdest du an diese Problem heran gehen?


Gruß

alex


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 11.12.2009 06:17:11

und es sollte Ich glaube sowieso, daß du dich da verrennst und an dein Problem ganz falsch heran gehst. heißen.
Darauf bezog sich ja meine Frage^^. Wie Würdest du an diese Problem heran gehen?


Gruß

alex


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Daniel
Geschrieben am: 06.12.2009 10:53:07

Hi
meines Wissen nach geht das nicht direkt, du müsstest die Daten Kopieren, Einfügen und dann an der alten Stelle die Inhalte löschen:

Range("A1:B10").Copy
Range("X10").Pastespecial xlPasteValues
Range("A1:B10").ClearContents

wenn du ausschneiden musst, weil bestimmte Zellbezüge damit automatisch mitverschoben werden sollen, dann müsstest du do vorgehen:
- alter Bereich Daten ausschneiden
- neuer Bereich Daten einfügen (Werte und Formate!)
- neuer Bereich Daten kopieren
- alter bereich Daten einfügen (Werte und Formate)
- alter Bereich Werte löschen (nicht Formate)

Gruß, Daniel


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 06.12.2009 18:58:05

Hi Daniel
deine Idee ist sehr gut. Nur müßte ich das ganze ja auf die Tastenkombination strg x legen können.
Ich habe jetzt 2 Makros geschrieben. Nur leider habe ich bei dem ausschneiden Makro das Problem das nach dem .ClearContents nichts mehr in der Zwischenablage ist zum einfügen.

strg x

Sub ausschneiden()
Selection.Copy
Selection.ClearContents
End Sub
strg v
Sub inh_einfg()
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
Irgendwie muß die Makroabfolge verändert werden. Aber ich habe keine Ahnung wie.


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: Daniel
Geschrieben am: 06.12.2009 19:13:24

Hi
du müsstest die Daten in einer Array-Variable zwischenspeichern und dann einfügen:

Option Explicit
Public Daten
Sub ausschneiden()
Daten = Selection.Value2
Selection.ClearContents
End Sub

Sub inh_einfg()
Selection.Resize(UBound(Daten, 1), UBound(Daten, 2)).Value2 = Daten
End Sub
das Array zum Speichern der Daten muss außerhalb definiert werden, so daß es für beide Makros gülitig ist.
Gruß, daniel


  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 06.12.2009 19:36:50

Ich hab auch ne ganz gute idee gefunden. allerdings weiß ich nicht welche zahlen ich für strg v bei Getkeystate eingeben muß.

Declare

Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Sub ausschneiden()
Selection.Copy
Do
    
    If GetKeyState(???) < 0 Then
      Call inh_einfg
      Exit Do
    End If
Loop
Selection.ClearContents
End Sub

Sub inh_einfg()
Selection.PasteSpecial Paste:=xlPasteValues
End Sub



  

Betrifft: AW: Ist es Möglich nur Werte auszuschneiden? von: alex
Geschrieben am: 06.12.2009 21:31:07

ich habe das makro jetzt so geschrieben wie Daniel es vorgeschlagen hat. Mit einem wert funktioniert es schonmal. aber Es geht leider nicht mehrere Zellen gleichzeitig auszuschneiden.

Public Daten

Sub ausschneiden()
Daten = Selection
Selection.ClearContents
End Sub

Sub inh_einfg()
On Error Resume Next
If Daten = "" Then
Selection.PasteSpecial Paste:=xlPasteValues
Else
Selection = Daten
End If
Daten = ""
End Sub



Beiträge aus den Excel-Beispielen zum Thema "Ist es Möglich nur Werte auszuschneiden?"