Hallo zusammen
Ich suche nach einer Lösung, die Ctrl-Taste z.B. beim Aufruf eines Tabellen-Blatts zu deaktivieren. Oder mindestens zu prüfen, ob die Ctrl-Taste beim eingeben von Werten in eine Zelle gedrückt wird. Um dann eine Meldung zu generieren und evt. die gerade eingegebenen Werte gleich wieder zu löschen.
1. Hat jemand eine Idee, wie die Ctrl-Taste (Strg) deaktiviert werden kann?
2. Oder wie abgefragt werden kann, ob beim Eingeben eines Werts die Ctrl-Taste gedrückt wird.
Bemerkung:
Bei folgendem Vorgehen können mehrere Werte in einem Schritt in mehrere selektierte Zellen eingegeben werden:
1. mehrere Zellen markieren
2. Wert eingeben, aber noch nicht mit Return oder Enter abschliessen
3. Ctrl (Strg) drücken
4. bei gedrückter Ctrl-Taste -> Enter bzw. Return drücken
Grundsätzlich will ich in einer Tabelle eine Hinweis-Meldung (msgbox) generieren, wenn ein Wert, welcher in der Tabelle bereits existiert, eingegeben wird.
Mit folgendem Code funktioniert dies auch, ausser wenn jemand wie oben beschrieben, mehrere Zellen markiert und die Wert-Eingabe mit gedrückter Ctrl-Taste und Enter bzw. Return abschliesst. Auf diese Weise ist es also möglich, bereits existierende Werte in der Tabelle einzugeben. Im aktuellen Code wird lediglich eine Meldung generiert, wenn beim Eingeben eines Werts mehrere Zellen markiert sind.
aktueller Code:
Private Sub Worksheet_Change(ByVal Target As Range) ' startet, wenn ein Blatt verändert wird
Dim Bereich As Range ' Variable, zur Definition des Bereichs, in welchem doppelte Werte verhindert werden sollen
Dim lastRowNr As Long ' letzte Zeilen-Nummer in einer Spalte
lastRowNr = 65536 ' letzte Zeilen-Nummer in einer Spalte
Set Bereich = Range("A1:IV" & lastRowNr & "") ' Bereich, in welchem nach doppelten Werten gesucht werden soll
If Target.Cells.Count > 1 Then ' Prüfung, ob mehrere Zellen selektiert sind
MsgBox "Bitte nicht mehrere Zeilen selektieren!", vbInformation
'Target.Cells.Clear
Else
If WorksheetFunction.CountIf(Bereich, Target.Value) > 1 Then ' Prüfung, ob ein Wert im definierten Bereich bereits vorhanden ist
MsgBox "Der Wert existiert bereits!", vbInformation
Target.Select
End If
End If
End Sub
Besten Dank für euere Lösungen bereits im Voraus!
|