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

Forumthread: VBA - Excel Eingabe in Zelle verhindern wenn .....

VBA - Excel Eingabe in Zelle verhindern wenn .....
23.08.2013 22:02:59
Filippo
Hallo zusammen,
meine Funktion bewirkt im Moment folgendes:
sobald ich eine "x" in einer Zelle in den gegebene Bereich eingebe, wird diese Zelle Rot markiert un den counter hochgezählt.
Ich möchte nun verhindern dass man mehr als einmal in die gleiche Zelle eine "x" schreiben kann und wenn der counter z.B. auf 10 steht dann es soll keine Eingabe mehr möglich sein.
Ich bekomme es einfach nicht hin...
Hier mein code in VBA:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCell As Range
Dim bytColor As Byte
Set Target = Intersect(Target, Range("B2:U21"))
If Target Is Nothing Then Exit Sub
For Each rngCell In Target
If rngCell.Value = "x" Then
bytColor = 3
count = count + 1
Cells(23, 2).Value = count
rngCell.Locked = True
End If
rngCell.Interior.ColorIndex = bytColor
Next rngCell
End Sub

Danke vielmals für eure hilfe!!!

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ungetestet
23.08.2013 22:59:11
KlausF
Hallo Filippo,
ungetestet:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCell As Range
Dim bytColor As Byte
Set Target = Intersect(Target, Range("B2:U21"))
If Target Is Nothing Then Exit Sub
If Target.Value = "x" Then Exit Sub
For Each rngCell In Target
If rngCell.Value = "x" Then
If count 
Gruß
Klaus

Anzeige
AW: ungetestet
23.08.2013 23:10:31
Filippo
Hallo Klaus,
erstmal danke für deine Antwort. Leider funktioniert dein code auch nicht. Mit der Anweisung:
If Target.Value = "x" Then Exit Sub
wird die For-Schleife übersprungen.
Gruß
Filippo

AW: ungetestet
23.08.2013 23:22:28
KlausF
Hallo Filippo,
Ich möchte nun verhindern dass man mehr als einmal in die gleiche Zelle eine "x" schreiben kann
heisst für mich: wenn ein "x" in einer Zelle steht soll eine neue x-Eingabe mit
Auslösen der Worksheet_Change verhindert werden:
If Target.Value = "x" Then Exit Sub
Was heisst das für Dich?
Gruß
Klaus

Anzeige
AW: ungetestet
23.08.2013 23:43:31
Filippo
Das stimmt. Das habe ich auch so gemeint. Aber wenn ich deine Lösung übernehme, es wird keine Zelle mehr rot markiert nach einer "x" Eingabe. Darum habe ich gedacht dass es nicht in die For-Schleife rein kommt.

AW: ungetestet
24.08.2013 13:53:51
KlausF
Hallo Filippo,
Lösung nur über Bedingte Formatierung und Gültigkeit:
https://www.herber.de/bbs/user/87005.xls
Gruß
Klaus

Anzeige
AW: ungetestet
24.08.2013 19:19:02
Filippo
Hallo Klaus, es funktioniert einwandfrei.
Danke sehr für deine Hilfe!
Gruß
Filippo
;

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

VBA Eingabe in Zelle verhindern in Excel


Schritt-für-Schritt-Anleitung

Um zu verhindern, dass Du mehr als einmal in die gleiche Zelle eine "x" eingeben kannst, kannst Du den folgenden VBA-Code verwenden. Gehe dabei wie folgt vor:

  1. Öffne Excel und gehe zu der Arbeitsmappe, in der Du die Eingabe verhindern möchtest.

  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Wähle im Projektfenster das Arbeitsblatt aus, auf dem Du die Eingabe einschränken möchtest.

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

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim rngCell As Range
       Dim count As Integer
       Set Target = Intersect(Target, Range("B2:U21"))
       If Target Is Nothing Then Exit Sub
       For Each rngCell In Target
           If rngCell.Value = "x" Then
               If count < 10 Then
                   count = count + 1
                   Cells(23, 2).Value = count
                   rngCell.Locked = True
                   rngCell.Interior.ColorIndex = 3 ' Rot
               Else
                   MsgBox "Maximale Anzahl an Eingaben erreicht!"
               End If
           End If
       Next rngCell
    End Sub
  5. Schließe den VBA-Editor und speichere die Datei als Makro-fähige Arbeitsmappe (.xlsm).

  6. Teste die Eingabe in den Zellen B2 bis U21.


Häufige Fehler und Lösungen

  • Fehler: Das "x" wird nicht rot markiert.

    • Lösung: Stelle sicher, dass die Zeile rngCell.Interior.ColorIndex = 3 im Code vorhanden ist.
  • Fehler: Du kannst mehr als 10 "x" in die Zellen eingeben.

    • Lösung: Überprüfe die Zählervariable count und stelle sicher, dass sie korrekt hochgezählt wird.

Alternative Methoden

Falls Du keine VBA-Lösung nutzen möchtest, kannst Du auch die bedingte Formatierung und die Datenüberprüfung verwenden:

  1. Bedingte Formatierung:

    • Markiere den Bereich B2:U21.
    • Gehe zu "Start" > "Bedingte Formatierung" > "Neue Regel".
    • Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden" und gib die Formel =B2="x" ein.
    • Wähle eine rote Füllfarbe.
  2. Datenüberprüfung:

    • Wähle den Bereich B2:U21.
    • Gehe zu "Daten" > "Datenüberprüfung" > "Datenüberprüfung".
    • Wähle "Benutzerdefiniert" und gib die Formel =ZÄHLENWENN(B2:U21; "x")<10 ein.

Praktische Beispiele

  • Beispiel 1: Wenn Du in Zelle B2 ein "x" eingibst, wird die Zelle rot markiert, und die Zählervariable erhöht sich. Wenn der Zähler 10 erreicht, erhältst Du eine Warnmeldung.

  • Beispiel 2: Mit der bedingten Formatierung wird jede Zelle, die ein "x" enthält, automatisch rot gefärbt, ohne dass VBA verwendet wird.


Tipps für Profis

  • Nutze Application.EnableEvents = False und Application.EnableEvents = True, um das Auslösen von Ereignissen während der Codeausführung zu steuern und so unerwünschte Schleifen zu vermeiden.
  • Erstelle eine benutzerdefinierte Funktion, um die maximale Anzahl der Eingaben flexibel zu gestalten, falls Du diese in mehreren Blättern verwenden möchtest.

FAQ: Häufige Fragen

1. Frage
Kann ich den Bereich der Zellen, die überwacht werden, ändern?
Ja, ändere einfach Range("B2:U21") im Code auf den gewünschten Bereich.

2. Frage
Was passiert, wenn ich den Code nicht in das richtige Arbeitsblatt einfüge?
Der Code funktioniert nur, wenn er im spezifischen Arbeitsblatt-Modul eingefügt wird, da er auf Änderungen in diesem Blatt reagiert.

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