Dateneingabe in Excel-Zelle nur erzwingen, wenn ich eine separate Zelle ändern möchte

0

Ich versuche, eine Excel-Datei zu erstellen, die den Benutzer zwingt, Daten in die Datei einzugeben, damit die Zellen nicht leer bleiben. Ich möchte den Benutzer jedoch nur zwingen, die Daten einzugeben, wenn er eine bestimmte Zelle ändert.

Dies ist für ein Punkteblatt, für das zur Eingabe der Punktzahl zusätzliche Informationen eingegeben werden müssen.

Zum Beispiel wähle ich eine Zelle aus D12, in der sich möglicherweise bereits Daten befinden:

  • Wenn ich nicht versuche, die Zelle zu ändern, passiert nichts und ich kann jede andere Zelle in der Datei auswählen.
  • Wenn ich versuche, die Zelle zu ändern D12, müssen Daten in die Zelle eingegeben werden E12. Wenn ich keine Daten eingebe E12, kann ich nichts ändern D12.
T Hansen
quelle

Antworten:

1

Sie können für diese spezielle Aufgabe Folgendes tun:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Address = "$E$12" Then
        ActiveSheet.Unprotect
        Select Case Range("E12").Value
            Case ""
                Range("D12").Locked = True
            Case Else
                Range("D12").Locked = False
        End Select
        ActiveSheet.Protect
    End If
End Sub

Im Code für das Blatt. Wenn Sie ein geschütztes Blatt verwenden, wird D12 basierend auf der Manipulation von E12 gesperrt / entsperrt.

Wenn Ihnen das nicht gefällt oder Sie das Blatt nicht schützen möchten, können Sie etwas Ähnliches, aber völlig anderes ausprobieren.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$12" Then
        If Range("E12").Value = "" And Range("D12").Value <> "" Then
            Range("D12") = ""
            MsgBox "Please enter E12 before D12"
        End If
    End If
End Sub

Wenn Sie in diesem Fall etwas in D12 eingeben, während E12 leer ist, wird es gelöscht, und eine Messagebox wird angezeigt, in der Sie darüber informiert werden, warum.
If Target.Address = "$D$12" ThenIst optional und kann vollständig entfernt werden, wenn Sie immer prüfen möchten, ob sie D12 bearbeiten und dann den Wert in E12 löschen. Oder Sie könnten es If Target.Address = "$D$12" Or Target.Address = "$E$12" Then
für diesen Fall ändern .

Christofer weber
quelle