2015-06-02 33 views
0

我搜索,但無法找到答案,我認爲是一個簡單的解決方案。我有多行列表框(基本上是一個是/否的問卷),我想要一個宏來改變同一行中的其他單元格,這取決於列A中列表的選擇。我假設它需要是一個更改事件我可以做我想要的單行,但無法弄清楚如何將它應用到整個列。這是我到目前爲止有:一個宏的多行列表驗證

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Address(True, True) = "A2" Then 
    Select Case Target 
     Case "list option one" 
      call Macro1 
     Case "list option 2" 
      'Call Macro2 
     Case Else 
      'Do nothing 
    End Select 
End If 

End Sub 

很明顯,我不想硬編碼每個行A3,A4,A5 ...

+0

假設它的鎖定,然後你可以添加一個'If'語句到另一行,而不是使用宏,那麼Excel將爲你做'觸發'工作。 – indofraiser

+1

如果要爲您的宏指定的單元格的值定義函數,這不是一個好的選擇。這些函數的運行方式與普通的Excel函數相同,但由於它們是用VBA編寫的,因此可以包含更多特定的函數。作爲輸入參數,您可以傳遞列A中的單元格的值。 – Tom

+0

@indofraiser是指使用excel函數嗎?問題在於一些值是自由文本,並且會刪除該函數。 – Istha

回答

1

嘗試

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Column = 1 Then 
    If Target.Value = True Then 'If target = true (This can be what ever you want) 
     Cells(Target.Row, 2).Value = True 'Then put true on same row but column 2 e.g. B 
    End If 
End If 

End Sub 
+0

嗨,不知道我明白這裏發生了什麼......如果說我想讓列B中的單元格顯示爲「N/A」,如果選擇列表選項1,我在哪裏放這個代碼? – Istha

+0

把它放在表單下。 如果Target.Value = TRUE,則 更改上面的「真」,以從在列中的下拉菜單甲 細胞(Target.Row,2)。價值=真 更改「真」選擇相應的值是什麼你想在列B當IF語句爲真 – 99moorem

+0

或者你可以改變如果Target.Value = True然後如果Target.Value <>「」那麼如果你想有任何值,除了空白來通過 – 99moorem