2013-08-22 9 views
6

Mam dwie listy rozwijane - jedna jest zależna od drugiej - co oznacza, że ​​jeśli wybiorę konkretną wartość z listy w A1, określona lista pojawi się na A2. Działa to dobrze. Jednak gdy zmieniam wartość w A1, A2 pozostaje w komórce, dopóki nie kliknę na listę - wtedy moja wartość w A2 zmieni się w zależności od mojego wyboru.Excel i zmiana wartości między dwoma listami rozwijanymi

Na przykład, jeśli lista 1 to ["Tak", "Nie"], a lista to Tak: [1,2,3] Nie: [4,5,6]. Najpierw wybieram "Tak" dla A1, a następnie 2 dla A2. Następnie, jeśli wybiorę "Nie" dla A1, "2" pozostanie na A2, dopóki nie kliknę A2, aby wybrać nową wartość (4,5,6). Czy istnieje sposób, aby "wyczyścić" A2 po zmianie selekcji A1?

Dzięki!

Odpowiedz

3

Umieść ten kod na stronie kod swojego Worksheet:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = Range("A1").Address Then 
     Range("A2").ClearContents 
    End If 
End Sub 
+0

Świetne rozwiązanie - bardzo proste! – mcfly

0

Można wstawić kod do odświeżania listy A2 w procedurze worksheet_change dla arkusza roboczego. Za każdym razem, gdy zmieni się wartość komórki w tym arkuszu roboczym, Twój kod aktualizacji zostanie uruchomiony.

+0

To brzmi dobrze. Obecnie nie używam żadnego VBA - czy mógłbyś podać przykład? Dzięki! – mcfly

+0

Wygląda na to, że mcfly ma świetne rozwiązanie [powyżej] (http://stackoverflow.com/a/18384534/2658159). –

4

umieścić to w kodzie VBA w arkuszu:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Address = Range("A1").Address Then 
     Dim dependentCell As Range 
     Set dependentCell = Target.Offset(1, 0)  'Cell A2 
     If dependentCell.Validation.Value = False Then dependentCell.Clear 
    End If   
End Sub 
Powiązane problemy