Office: (Office 2010) Zellinhalt als Wert einfügen (VBA)

Helfe beim Thema Zellinhalt als Wert einfügen (VBA) in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe wieder einmal ein kleines Makro-Problem, bei dem ihr mir sicher helfen könnt. Ich habe schon im Netz geschaut, aber alle... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von msdd79, 12. Oktober 2021.

  1. msdd79 Erfahrener User

    Zellinhalt als Wert einfügen (VBA)


    Hallo zusammen,

    ich habe wieder einmal ein kleines Makro-Problem, bei dem ihr mir sicher helfen könnt.

    Ich habe schon im Netz geschaut, aber alle dort vorgeschlagenen Lösungen wollen bei mir nicht so richtig funktionieren … vielleicht steht bei mir auch nur jemand auf dem Schlauch …

    Ich möchte eine Zelle kopieren und deren Inhalt als Wert in eine andere Zelle oder einen anderen Bereich einfügen.

    Also Zelle über „Strg + C“ kopieren, eine andere Zelle (oder Bereich) markieren, Makro ausführen, fertig

    Ich habe dafür das Makro so angelegt:

    Sub Werte_einfügen()
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone
    End Sub

    Leider erscheint bei mir da immer:

    Laufzeitfehler „1004“
    Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden.

    Mit dieser Meldung kann ich nicht wirklich etwas anfangen.

    Kann mir jemand sagen, was ich falsche mache?

    VG Micha
     
  2. Beverly
    Beverly Erfahrener User
    Hi Micha,

    vom Prinzip her so:

    Code:
    Sub Werte_kopieren_einfügen()
        Range("C2:E5").Copy
        Range("F25").PasteSpecial Paste:=xlValues
    End Sub
    
    Kopiert wird C2:E5 und eingefügt werden die Werte ab F25.



    Zellinhalt als Wert einfügen (VBA) GrußformelZellinhalt als Wert einfügen (VBA) Beverly's Excel - Inn
     
    Beverly, 12. Oktober 2021
    #2
  3. Exl121150 Erfahrener User
    Hallo Micha,

    du wirst wahrscheinlich das Makro mittels Tastenkombination Alt+F8 ausgewählt und ausgeführt haben
    oder was dasselbe ist mittels Button "Makros" aus den Entwicklertools.

    Das bewirkt leider, dass die zuvor ausgeführte Kopie in die Zwischenablage verloren geht. Du siehst das auch, dass der Laufrahmen um den Quellbereich verschwindet. In der weiteren Folge hat Excel nichts mehr, was es im Zielbereich einfügen könnte und bringt die etwas irreführende Fehlermeldung.

    Um keinen Quellbereich im Makro angeben zu müssen, gibt es 3 Möglichkeiten:
    1) Du drückst die Tastenkombination Alt+F11 (VBA-Editor) und dann dort die Taste F5 mit anschließendem Button "Ausführen"
    oder
    2) Du legst im Arbeitsblatt eine Schaltfläche an und verknüpfst diese mit deinem Makro. Dann kannst du die Schaltfläche anklicken, um die Zwischenablage an beliebig vielen Zielorten des Arbeitsblattes einzufügen.
    oder
    3) Die Symbolleiste für den Schnellzugriff anpassen, sprich erweitern um den Makro-Befehl "Werte_einfügen".
     
    Zuletzt bearbeitet: 12. Oktober 2021
    Exl121150, 12. Oktober 2021
    #3
  4. msdd79 Erfahrener User

    Zellinhalt als Wert einfügen (VBA)

    Vielen Dank für Eure Antwort ...

    @ Karin: Dein Vorschlag ist ist nicht, dass was ich mir vorgestellt habe. Vielleicht habe ich mich etwas umständlich ausgedrückt.

    * Ich möchte einen beliebigen Wert kopieren (beispielsweise schreibe ich in B1 den Wert 10)
    * Dann möchte ich einen beliebigen Bereich markieren (beispielsweise B2:B5)
    * Dann ein Makro ausführen, was mir den Wert (der sich sicherlich gerade in der Zwischenablage befindet) nimmt und in den gerade markierten Bereich als Wert einfügt (am Ende soll also im Bereich B2:B5 der Wert 10 stehen)

    @ Anton: Ich hatte vor, das Makro mittels Schaltfläche in der gleichen Arbeitsmappe zu starten. Bedeutet das, das funktioniert nur nicht, weil ich auf "Makros ausführen" gegangen bin. Wenn ich das über eine Schaltfläche starte klappt es?
    - Kann es leider nur gerade nicht starten, da ich vom Tablet aus schreibe -

    VG Micha
     
  5. Exl121150 Erfahrener User
    Hallo,

    1) Ja, das heißt es.
    2) Du kannst es auch über eine zusätzlich angelegte Schaltfläche/Option in der Schnellzugriffsleiste ausführen - dann brauchst du keine extra Schaltfläche anzulegen im Arbeitsblatt (wie im folgenden Ausschnitt in der rechten unteren Ecke zu sehen):
    Zellinhalt als Wert einfügen (VBA) upload_2021-10-12_16-15-26.png
     
    Exl121150, 12. Oktober 2021
    #5
  6. msdd79 Erfahrener User
    @ Anton: Danke Dir ... ich teste das morgen mal auf Arbeit und sag bescheid, ob es geklappt hat

    PS: Wie kriegst Du die Schnellzugriffleiste unter das Menüband?
     
  7. Beverly
    Beverly Erfahrener User
    Hi Micha,

    2 Schaltflächen mit folgenden 2 Makros verknüpfen:

    Code:
    Sub Kopieren()
        Selection.Copy
    End Sub
    
    Sub Einfuegen()
        Selection.PasteSpecial Paste:=xlValues
    End Sub
    


    Zellinhalt als Wert einfügen (VBA) GrußformelZellinhalt als Wert einfügen (VBA) Beverly's Excel - Inn
     
    Beverly, 12. Oktober 2021
    #7
  8. Exl121150 Erfahrener User

    Zellinhalt als Wert einfügen (VBA)

    Hallo Micha

    Die Schnellzugriffsleiste kann an 2 Stellen positioniert werden:
    1) Über dem Menüband in der Excel-Kopfzeile, wo bei mir das Speichern-Icon zu sehen ist.
    2) Unter dem Menüband, wie in meinem Fall.

    Am einfachsten ist die Positionierung umzustellen, wenn du auf das DropDown-Symbol am Ende der Zugriffsleiste klickst, sodass die enthaltene Befehlsliste angezeigt wird. Dort gibt es dann den Befehl "Unter dem Menüband anzeigen", wenn sich die Leiste über dem Menüband befindet, bzw. den Befehl "Über dem Menüband anzeigen", wenn sich die Leiste unter dem Menüband befindet.

    Falls bei dir die Schnellzugriffsleiste überhaupt nicht angezeigt wird, so kann man sie über die Excel-Optionen (Symbolleiste für den Schnellzugriff) einblenden:
    Häkchen in der Checkbox "Symbolleiste für den Schnellzugriff anzeigen". Dort kann man ebenfalls die Positionierung angeben und ob die Befehlsbezeichnungen angezeigt werden sollen.
     
    Zuletzt bearbeitet: 12. Oktober 2021
    Exl121150, 12. Oktober 2021
    #8
  9. msdd79 Erfahrener User
    Hallo Anton,

    ich habe es gerade getestet und es funktioniert.

    Vielen Dank für Deine Hilfe
     
  10. Moin!
    Es gibt noch eine andere Möglichkeit:
    Zuweisung einer Tastenkombination.
    Ich habe (da ich das häufig brauche) ein Makro in der Personal.xlsb abgelegt und ihm die Tastenkombi Strg+Umschalt+W zugewiesen.
    Code:
    Sub FormelInWert()
    'Shortcut Strg+Umschalt+W
    Dim x As Range
    If TypeName(Selection) = "Range" Then
      With Application
         .ScreenUpdating = False
         For Each x In .Selection.Areas
            If x.HasSpill Then
              With x.SpillParent.SpillingToRange
                .Copy: .PasteSpecial xlPasteValues
              End With
            Else
              x.Copy: x.PasteSpecial xlPasteValues
            End If
         Next
         .CutCopyMode = False
         .Goto ActiveCell
      End With
    End If
    End Sub
    Beachte, dass der "Spill"-Block ausschließlich in Excel 365 und 2021 funktioniert.

    Gruß Ralf
     
  11. Exl121150 Erfahrener User
    Hallo Ralf,

    Danke für den Hinweis auf die .hasSpill / .SpillParent / .SpillingToRange - Properties des Range-Objektes. Man kann gespannt sein, wie die Eigenschaften ausschauen, wenn sie in die offizielle Hilfe zum Range-Objekt integriert werden
    Range.SpillParent property (Excel) | Microsoft Docs
    Für @msdd79 stellt es ja noch keine verwendbare Option dar (wegen Excel2010).

    Aber abgesehen davon stellt das Ansprechen des Makros mit Tasten-ShortCuts (zB.: Strg+Umschalt+W) eine weitere Möglichkeit dar:
    Er müsste im Codemodul "DieseArbeitsmappe" folgende 2 Makros einfügen:
    Code:
    Option Explicit
    Private Sub Workbook_Open()
       'Shortcut Strg+Umschalt+W
      Application.OnKey "^+W", "Werte_einfügen"
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
      'Shortcut Strg+Umschalt+W: Aufheben
      Application.OnKey "^+W"
    End Sub
    
     
    Exl121150, 13. Oktober 2021
    #11
  12. Excelfan Neuer User
    Hatte grad selbst die gleiche Problematik.

    Also ohne jetzt lange irgendwie ne sub zu schreiben.
    Das mit PasteSpecial das natürlich der MakroRecorder aufzeichnet ignoriere ich einfach mal.
    Probiert es einfach mal mit:
    ActiveCell.Value = ActiveCell.Value
    Und das inerhalb einer Schleife falls es mehre Zellen sein sollten!?
     
    Excelfan, 1. Februar 2025
    #12
  13. RPP63_neu
    RPP63_neu Erfahrener User

    Zellinhalt als Wert einfügen (VBA)

    Moin!
    "Das mit PasteSpecial" ist nicht dem Makrorekorder geschuldet, sondern die einzig vernünftige Methode, Werte einzufügen.
    Range.Value = Range.Value funktioniert zwar auch, erfordert aber erhöhte Rechenleistung.
    (für folgendes sollte ein schneller Rechner nebst genügend Arbeitsspeicher vorhanden sein)
    Mal Brute Force 10.000.000 Zellen mit Zufallszahlen gefüllt und beide Methoden verglichen:
    Code:
    Sub Vergleich_Value_PasteSpecial()
    Dim Start#
    Cells.Clear
    Application.ScreenUpdating = False
    Range("A1").Resize(10000, 1000).Formula = "=RAND()"
    Start = Timer
    Range("A1").Resize(10000, 1000).Copy
    Range("A1").PasteSpecial xlPasteValues
    Debug.Print "PasteSpecial dauert: " & Timer - Start & " Sekunden!"
    Cells.Clear
    Range("A1").Resize(10000, 1000).Formula = "=RAND()"
    Start = Timer
    With Range("A1").Resize(10000, 1000)
        .Value = .Value
    End With
    Debug.Print "Value = Value dauert: " & Timer - Start & " Sekunden!"
    End Sub
    Ergebnis im Direktfenster:
    Code:
    PasteSpecial dauert: 2,33203125 Sekunden!
    Value = Value dauert: 12,20703125 Sekunden!
    PasteSpecial ist mehr als 5mal schneller!
    Geht's noch?
    Dann wären wir eher beim Faktor 500 …

    Gruß Ralf
     
    Zuletzt bearbeitet: 2. Februar 2025
    RPP63_neu, 2. Februar 2025
    #13
    1 Person gefällt das.
  14. RPP63_neu
    RPP63_neu Erfahrener User
    Zu meinem:
    Ich habe mal den Bereich auf 1000*100 also nur 100.000 Zellen verkleinert.
    Dann eine kleine For-Next Schleife:
    Code:
    For Each Zelle In Range("A1").Resize(1000, 100)
        Zelle.Value = Zelle.Value
    Next
    Ergebnis:
    Code:
    PasteSpecial dauert: 0,03125 Sekunden!
    Value = Value dauert: 176,068359375 Sekunden!
    Die tolle Idee, dies per Schleife zu erledigen, dauert nicht "nur" 500mal, sondern 5.634mal so lange!
    Noch Fragen, Excelfan?
     
    RPP63_neu, 2. Februar 2025
    #14
  15. RPP63_neu
    RPP63_neu Erfahrener User
    Um zum Ursprung der 3,5 Jahre alten Frage zurückzukommen:
    In Excel 365 gibt es mittlerweile den Shortcut Strg+Umschalt+V (gleichzeitig)
    Dies bewirkt, den Inhalt der Zwischenablage als Wert einzufügen.
    In älteren Versionen tut es zur Not auch
    Alt, r, v, w (nacheinander)
     
Thema:

Zellinhalt als Wert einfügen (VBA)

Die Seite wird geladen...
  1. Zellinhalt als Wert einfügen (VBA) - Similar Threads - Zellinhalt Wert einfügen

  2. Teil des Zellinhaltes abfragen in VBA

    in Microsoft Excel Hilfe
    Teil des Zellinhaltes abfragen in VBA: Guten Tag, ich möchte in Zelle E1 den linken 4-stelligen Teil in Zelle A3 abfragen. Habs versucht mit IF (LEFT(R[2]C[-3],4) = "8396") then ... Else ... End If Wer kann...
  3. Arbeitsblätter ein- bzw ausblenden nach Zellinhalt geschützte Arbeitsmappe

    in Microsoft Excel Hilfe
    Arbeitsblätter ein- bzw ausblenden nach Zellinhalt geschützte Arbeitsmappe: Arbeitsblätter ein- bzw ausblenden nach Zellinhalt in einer geschützten Arbeitsmappe Hallo zusammen, dass habe ich bisher hinbekommen...wenn die Arbeitsmappe nicht geschützt ist dann geht es...
  4. Zellinhalt als Datei im Notepad speichern

    in Microsoft Excel Hilfe
    Zellinhalt als Datei im Notepad speichern: Hallo Experten da komme ich nicht mehr weiter...... nur der Zellinhalt von zB. Zelle H3 (bis zu 10000 Zeichen, weder harte noch weiche Zeilenumbrüche sind zugelassen - eine Text- oder CSV-Datei...
  5. Filtern nach Wert in Zellinhalt

    in Microsoft Excel Hilfe
    Filtern nach Wert in Zellinhalt: Hallo. In der angehängten Datei habe ich in "E2" ein Auswahlfeld. Abhängig von diesem Feld möchte ich, daß die Tabelle automatisch nach den Einträgen in den Zellen "F6" bis "F14" gefiltert wird....
  6. VBA Hilfe für Zahlen eingeben und addieren + zellinhalt löschen

    in Microsoft Excel Hilfe
    VBA Hilfe für Zahlen eingeben und addieren + zellinhalt löschen: Hallo Leute ich brauche dringend Hilfe von einem VBA Spezialisten. Ich hoffe ihr seit mir nicht böse wenn ich sage das ich alles in der Datei beschrieben habe. Würde mich sehr freuen wenn jemand...
  7. Zahlen eingeben und addieren + zellinhalt löschen

    in Microsoft Excel Hilfe
    Zahlen eingeben und addieren + zellinhalt löschen: Hallo Leute ich habe ein Problem. Würde gerne wissen ob einer eine Idee hat das mit VBA gelöst werden kann. In einer Tabelle sind werte eingegeben. Gutstücke , Ausschuss jeweils für Früh Spät und...
  8. 3 Zellinhalte prüfen und Wert aus "Datenbank" suchen

    in Microsoft Excel Hilfe
    3 Zellinhalte prüfen und Wert aus "Datenbank" suchen: Hallo, ich habe ein kleines Problem mit meiner Tabelle. Zu Vereinfachung der Arbeit wurde mir die Aufgabe zu Teil eine einfach zu bedienende Exceltabelle zu erstellen. Es geht dabei um...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden