Excel VBA - 如果所选单元格在一个范围内并且也符合条件,则显示消息框
Excel VBA - Msg Box if selected cell is in a range and also meet criteria
我正在寻找一个 vba 来弹出一个 MsgBox
当 selected 单元格在一个范围内并且也符合条件时。
示例:
Range: (A3:A7)
Criteria: "YES"
| A | B |
-------------------|------------------|
1 | NO | |
2 | NO | |
3 | YES | 1 |
4 | YES | 2 |
5 | NO | |
6 | NO | |
7 | YES | 3 |
要求:如果我双击 A3、A4 或 A7,将出现一个消息框,其中包含同一行中下一列的值。
示例:如果我select A7,则应出现值为“3”的MsgBox
。
我尝试了几件事都没有成功。
在此先感谢您的帮助!
MD
您可以从这里开始。请注意,此代码进入工作表对象,不进入单独的模块。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myRange As Range
Set myRange = Range("A3:A7")
If Not Intersect(Target, myRange) Is Nothing And Target.Rows.Count = 1 And Target.Columns.Count = 1 Then
If Target.Value = "YES" Then
MsgBox (Target.Offset(0, 1))
End If
End If
End Sub
此外,在处理完消息框后,单元格仍将处于编辑模式,除非您也在代码中处理它
试试下面的代码(把它放在你相关的 sheet 的代码中),它会检查你是否 double-click 在 A 列的任何单元格上(只要你有数据在里面) ), 并检查该单元格的值是否等于 "YES".
代码
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A3:A" & Cells(Rows.Count, "A").End(xlUp).Row)) Is Nothing Then
If Target.Value = "YES" Then
MsgBox Target.Offset(0, 1).Value
End If
End If
End Sub
我正在寻找一个 vba 来弹出一个 MsgBox
当 selected 单元格在一个范围内并且也符合条件时。
示例:
Range: (A3:A7)
Criteria: "YES"
| A | B |
-------------------|------------------|
1 | NO | |
2 | NO | |
3 | YES | 1 |
4 | YES | 2 |
5 | NO | |
6 | NO | |
7 | YES | 3 |
要求:如果我双击 A3、A4 或 A7,将出现一个消息框,其中包含同一行中下一列的值。
示例:如果我select A7,则应出现值为“3”的MsgBox
。
我尝试了几件事都没有成功。
在此先感谢您的帮助!
MD
您可以从这里开始。请注意,此代码进入工作表对象,不进入单独的模块。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myRange As Range
Set myRange = Range("A3:A7")
If Not Intersect(Target, myRange) Is Nothing And Target.Rows.Count = 1 And Target.Columns.Count = 1 Then
If Target.Value = "YES" Then
MsgBox (Target.Offset(0, 1))
End If
End If
End Sub
此外,在处理完消息框后,单元格仍将处于编辑模式,除非您也在代码中处理它
试试下面的代码(把它放在你相关的 sheet 的代码中),它会检查你是否 double-click 在 A 列的任何单元格上(只要你有数据在里面) ), 并检查该单元格的值是否等于 "YES".
代码
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A3:A" & Cells(Rows.Count, "A").End(xlUp).Row)) Is Nothing Then
If Target.Value = "YES" Then
MsgBox Target.Offset(0, 1).Value
End If
End If
End Sub