我设法使VBA可以使用活动单元格来检索表上的日期和部门编号。我正在使用它进行预先过滤。我想要帮助缩短代码,我需要花很多行。我尝试添加一个消息框,如果单元阀= 0,则显示“ No NCR”。如果选择了按钮并且活动单元格不在表范围内,我还希望显示消息“单击表中的单元格”。
Sub select Range()
If ActiveCell.Address = "$B$7" Then
Range("O6").Value = Range("B5").Value
Range("Q6").Value = Range("A7").Value
ElseIf ActiveCell.Address = "$B$8" Then
Range("O6").Value = Range("B5").Value
Range("Q6").Value = Range("A8").Value
ElseIf ActiveCell.Address = "$B$9" Then
Range("O6").Value = Range("B5").Value
Range("Q6").Value = Range("A9").Value
End If
End Sub
答案 0 :(得分:0)
Intersect可以识别ActiveCell是否在表中。 ActiveCell的行和列可以提供部门和月份。
Sub selectRange()
if not intersect(activecell, range("B7:M12")) is nothing then
Range("O6") = cells(5, activecell.column).value
Range("Q6") = cells(activecell.row, "A").value
else
msgbox "not in table"
end if
End Sub
Worksheet_SelectionChange无需按钮即可完成相同的工作。
答案 1 :(得分:0)
您可以使用Select Case
结构以适当的顺序管理相关案件:
Sub selectRange()
Select Case True
Case Intersect(ActiveCell, Range("B7:M12")) Is Nothing
MsgBox "Click on cell in table"
Case ActiveCell.Value = 0
MsgBox "No NCR"
Case Else
Range("O6") = Cells(5, ActiveCell.Column).Value
Range("Q6") = Cells(ActiveCell.Row, "A").Value
End Select
End Sub