Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - nur Werte einfügen zulassen

VBA - nur Werte einfügen zulassen
09.09.2013 14:54:29
Lars
Hallo Ihr Lieben,
ich sitze seit heute morgen vor einem Problem:
In einer Excelliste mit mehreren Tabellenblättern sollen nur Werte eingefügt werden. Alle weiteren Auswahlkriterien beim Einfügen sollen ausgegraut werden. So soll verhindert werden, dass jemand mit eine ungewollten Formatierung die Liste mit Formeln und Pivottabellen zerstört.
Mit den bisherigen Lösungen habe ich entweder mein Excel grundlegend zerstört (Rechtsklick war deaktiviert) oder aber die falschen Funktionen waren ausgegraut.
Kennt jemand eine Lösung?
Vielen Dank schon einmal vorab.

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - nur Werte einfügen zulassen
09.09.2013 15:54:35
Hajo_Zi
ich interpretiere mal Werte als numerisch.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If IsNumeric(Target) = False Then
Application.Undo
End If
End Sub


Anzeige
AW: VBA - nur Werte einfügen zulassen
09.09.2013 16:07:40
Lars
Hi,
leider sind es nicht nur Nummern, sondern auch Texte, so dass der Code nicht funktioniert.
Zusätzlich fängt Excel auch an zu flattern, wenn hier Werte eingefügt werden.
Liebe Grüße

AW: VBA - nur Werte einfügen zulassen
09.09.2013 16:09:59
Hajo_Zi
ich habe mich an das gehalten was im Beitrag steht, nur Werte, von anderen Eingaben Stand nichts. Mein Excel flakkert nicht.
Gruß Hajo

Anzeige
AW: VBA - nur Werte einfügen zulassen
09.09.2013 16:14:35
Lars
Hallo Hajo,
....wenn man nun Werte als Wort nimmt, OK. Allerdings übernimmt Excel auch Texte, wenn man "Werte einfügen" auswählt.
Am Wichtigsten ist, dass die Zielformatierung beibehalten wird. Kennst du vielleicht auch hierfür eine Lösung?
Vielen Dank

AW: VBA - nur Werte einfügen zulassen
09.09.2013 16:18:28
Lars
Sorry, hatte vergessen, den Haken für nicht erledigt zu setzen. Bitte in den vorherigen Thread schauen.

Anzeige
AW: VBA - nur Werte einfügen zulassen
09.09.2013 16:26:41
Hajo_Zi
die automatischen Formatierungen von Excel bekommst Du nicht abgeschlatet und damit bekommst Du den eingegebenen Wert auch nicht angezeigt, selbst wenn Du das Format zurückstellst.
Gruß Hajo

AW: VBA - nur Werte einfügen zulassen
09.09.2013 16:46:36
Lars
Habe jetzt folgenden Code von der Seite alant.com.
Beim Einfügen von Zahlen habe ich jetzt die Auswahl von 3 Möglichkeiten: Einfügen, Verknüpfung einfügen, an Zielformatierung anpassen.
Hier soll jedoch "an nur Zielformatierung anpassen" zur Auswahl zur Verfügung stehen. Hat hier jemand einen Vorschlag?
Option Explicit
Sub EnableControl(Id As Integer, Enabled As Boolean)
Dim CB As CommandBar
Dim C As CommandBarControl
For Each CB In Application.CommandBars
Set C = CB.FindControl(Id:=Id, recursive:=True)
If Not C Is Nothing Then C.Enabled = Enabled
Next
End Sub
Private Sub Workbook_Activate()
' Die Befehlsschaltflächen deaktivieren
EnableControl 21, False ' Ausschneiden (cut)
EnableControl 19, False ' Kopieren (copy)
EnableControl 22, False ' Einfügen (paste)
EnableControl 755, False ' Inhalte Einfügen (pastespecial)
' Tastenkombinationen abfangen
Application.OnKey "^c", "" ' STRG + c kopieren abfangen (copy)
Application.OnKey "^v", "" ' STRG + v einfügen abfangen (cut)
Application.OnKey "^x", "" ' STRG + x ausschneiden abfangen (cut)
Application.OnKey "+{DEL}", "" ' SHIFT + ENTF auschneiden abfangen (cut)
Application.OnKey "+{INSERT}", "" ' SHIFT + EINFG einfügen abfangen (paste)
' Zellen mit dem Randanfasser verschieben, kopieren verhindern
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_Open()
' Die Befehlsschaltflächen deaktivieren
EnableControl 21, False ' Ausschneiden (copy)
EnableControl 19, False ' Kopieren (copy)
EnableControl 22, False ' Einfügen (paste)
EnableControl 755, False ' '
' Tastenkombinationen abfangen
Application.OnKey "^c", "" ' STRG + c Kopieren (copy)
Application.OnKey "^v", "" ' STRG + v (cut)
Application.OnKey "^x", "" ' STRG + x (paste)
Application.OnKey "+{DEL}", "" ' SHIFT + ENTF (cut)
Application.OnKey "+{INSERT}", "" ' SHIFT + EINFG (paste)
' Zellen mit dem Randanfasser verschieben, kopieren wieder ermöglichen
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Die Befehlsschaltflächen wieder aktivieren
EnableControl 21, True ' Ausschneiden (cut)
EnableControl 19, True ' Kopieren (copy)
EnableControl 22, True ' Einfügen (paste)
EnableControl 755, True ' pastespecial
' Tastenkombinationen abfangen
Application.OnKey "^c" ' STRG + c (copy)
Application.OnKey "^v" ' STRG + v (cut)
Application.OnKey "^x" ' STRG + x (cut)
Application.OnKey "+{DEL}" ' SHIFT + ENTF (cut)
Application.OnKey "+{INSERT}" ' SHIFT + EINFG (paste)
' Zellen mit dem Randanfasser verschieben, kopieren wieder ermöglichen
Application.CellDragAndDrop = True
End Sub
Private Sub Workbook_Deactivate()
' Die Befehlsschaltflächen wieder aktivieren
EnableControl 21, True ' Kopieren (copy)
EnableControl 19, True ' Kopieren (copy)
EnableControl 22, True ' Einfügen (paste)
EnableControl 755, True ' ' Inhalte Einfügen (pastespecial)
' Tastenkombinationen wieder einschalten
Application.OnKey "^c" ' STRG + c Kopieren (copy)
Application.OnKey "^v" ' STRG + v Einfügen (paste)
Application.OnKey "^x" ' STRG + v ausschneiden (cut)
Application.OnKey "+{DEL}" ' SHIFT + ENTF (cut)
Application.OnKey "+{INSERT}" ' SHIFT + EINFG (paste)
' Zellen mit dem Randanfasser verschieben, kopieren wieder ermöglichen
Application.CellDragAndDrop = True
End Sub

Anzeige
AW: VBA - nur Werte einfügen zulassen
09.09.2013 16:39:28
Rudi
Hallo,
stell per Worksheet_Change die Formatierung wieder her.
Eine andere Möglichkeit sehe ich nicht.
Gruß
Rudi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Nur Werte in Excel über VBA einfügen


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass in Deiner Excel-Liste nur Werte eingefügt werden können, kannst Du den folgenden VBA-Code verwenden. Dieser deaktiviert die Kopier- und Einfüge-Optionen, sodass nur das Einfügen von Werten möglich ist.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke im Projektfenster auf das gewünschte Arbeitsblatt oder die Arbeitsmappe.

  3. Füge den folgenden Code in das Codefenster ein:

    Option Explicit
    
    Sub EnableControl(Id As Integer, Enabled As Boolean)
       Dim CB As CommandBar
       Dim C As CommandBarControl
       For Each CB In Application.CommandBars
           Set C = CB.FindControl(Id:=Id, recursive:=True)
           If Not C Is Nothing Then C.Enabled = Enabled
       Next
    End Sub
    
    Private Sub Workbook_Activate()
       ' Die Befehlsschaltflächen deaktivieren
       EnableControl 21, False ' Ausschneiden
       EnableControl 19, False ' Kopieren
       EnableControl 22, False ' Einfügen
       EnableControl 755, False ' Inhalte Einfügen
    
       ' Tastenkombinationen abfangen
       Application.OnKey "^c", "" ' STRG + c
       Application.OnKey "^v", "" ' STRG + v
       Application.OnKey "^x", "" ' STRG + x
       Application.OnKey "+{DEL}", "" ' SHIFT + ENTF
       Application.OnKey "+{INSERT}", "" ' SHIFT + EINFG
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       ' Die Befehlsschaltflächen wieder aktivieren
       EnableControl 21, True
       EnableControl 19, True
       EnableControl 22, True
       EnableControl 755, True
    End Sub
  4. Speichere die Arbeitsmappe als Makro-aktivierte Arbeitsmappe (*.xlsm).

  5. Schließe den VBA-Editor und teste die Funktionen.


Häufige Fehler und Lösungen

  • Excel Werte einfügen geht nicht: Überprüfe, ob der VBA-Code korrekt eingegeben wurde und keine Syntaxfehler enthält.
  • Formate werden nicht beibehalten: Du kannst zusätzlich den Code zur Wiederherstellung der Zielformatierung einfügen, indem Du das Worksheet_Change-Ereignis verwendest.

Alternative Methoden

Eine einfache Möglichkeit, um sicherzustellen, dass nur Werte eingefügt werden, ist die Verwendung der "Inhalte einfügen"-Option:

  1. Kopiere die gewünschten Zellen (STRG + C).
  2. Klicke mit der rechten Maustaste auf die Zielzelle und wähle "Inhalte einfügen".
  3. Wähle "Werte" aus der Liste.

Zusätzlich kannst Du die Tastenkombination ALT + E, S, V verwenden, um direkt zum Wert-Einfügen zu gelangen.


Praktische Beispiele

Falls Du zum Beispiel sicherstellen möchtest, dass nur Texte in eine Zelle eingefügt werden, kannst Du den folgenden Code verwenden:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not IsEmpty(Target) And Not IsNumeric(Target) Then
        Application.Undo
    End If
End Sub

Dieser Code stellt sicher, dass nur numerische Werte in die Zelle eingegeben werden.


Tipps für Profis

  • Verwende die Funktion Application.OnKey, um benutzerdefinierte Tastenkombinationen für das Einfügen von Werten zu erstellen. Dies kann die Effizienz erhöhen.
  • Wenn Du häufig mit großen Datenmengen arbeitest, könnte ein VBA-Skript zur Automatisierung der Datenübertragung hilfreich sein.

FAQ: Häufige Fragen

1. Wie kann ich Excel immer an Zielformatierung anpassen?
Um sicherzustellen, dass beim Einfügen immer die Zielformatierung beibehalten wird, solltest Du die Option "Inhalte einfügen" nutzen und "Formate" auswählen.

2. Welche Tastenkombinationen kann ich nutzen, um den Prozess zu beschleunigen?
Die Tastenkombination ALT + E, S, V ist eine schnelle Möglichkeit, um nur Werte einzufügen, ohne das Kontextmenü zu nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige