2015-06-02 34 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