Frage

Ich habe zwei Spalten, aber die Kodition, die ich möchte, soll von einer Zelle zur anderen bewertet werden.

Die erste Spalte hat Zellen, die eine Dropdown -Validierung mit Namen haben, und die zweite wird nur aktiviert, wenn ein bestimmter Name aus der benachbarten Zelle ausgewählt wird.

Bisher habe ich diesen Code nur gefunden, aber er scheint nicht zu funktionieren:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1").Value = "Car" Then
        Range("B1").Locked = False
    Else
        Range("B1").Locked = True
    End If
End Sub

Ich würde diesen Code von (zum Beispiel) A1: A10 und B1: B10 benötigen.

Ich hoffe ich mache Sinn. Wenn es eine Möglichkeit gibt, es ohne VBA zu tun, wäre das großartig.

Danke für die Hilfe.

War es hilfreich?

Lösung

Der Zielparameter zeigt Ihnen den Bereich an, der geändert wird.

Sie müssen so etwas wie Folgendes tun:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range

    Set rng = Intersect(Range("A1:A10"), Target)
    If rng Is Nothing Then
        ' Not updating the range we care about
        Exit Sub
    Else
        rng.Offset(0, 1).Locked = ... whatever ...
    End If
End Sub

Beachten Sie, dass Ihr Zielbereich mehr als eine Zelle sein kann (z. B. bei Verwendung von Kopieren/Einfügen), daher müssen Sie diesen Fall verarbeiten und testen.

Das Aufrufen von Schnittstellen gibt Ihnen den Schnittpunkt des Zielbereichs und den Bereich zurück, an dem Sie testen möchten (A1: A10 in dieser Stichprobe).

Sie können dann mit .Offset (0,1) auf die entsprechenden benachbarten Zellen (en) zugreifen.

Andere Tipps

Dieser Code -Snippet funktioniert perfekt für mich.

Haben Sie diesen Code in den richtigen Platz gestellt? WorkSheet Objekt? Es wird nicht funktionieren, wenn Sie es einfach in ein VBA -Modul einfügen. Wenn Sie sich im Visual Basic -Editor befinden, suchen Sie nach einem Verzeichnis auf der linken Seite des Bildschirms mit der Bezeichnung "Microsoft Excel -Objekte". In diesem Verzeichnis sollte a sein WorkSheet Objekt für jedes Blatt in Ihrer Datei. Doppelklicken Sie auf einen davon, um den Code dafür zu bearbeiten WorkSheet. Hier sollte Ihr Code -Snippet gehen.

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("A1").Value = "Car" Then
    Range("B1").Locked = False
    Me.Unprotect ("password")
Else
    Range("B1").Locked = True
    Me.Protect ("password")
End If

End Sub

Use Me.Protect so the .Locked method does something. You should probably unlock every other cell though.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top