Excel 仅当所选内容在特定列内时才执行操作的If语句

Excel 仅当所选内容在特定列内时才执行操作的If语句,excel,vba,Excel,Vba,我正在尝试完成此宏,该宏将打开另一个工作簿,复制选定的单元格,并将其粘贴到另一个工作簿中。仅当选择在列A中且仅当选择包含数据时,我才希望执行此操作 “如果选择包含数据”部分很简单,但是如何声明如果选择不在a列中,那么MsgBox(“请选择数据”) 这里是到目前为止的if语句,它仍然需要上面直接提到的部分 'Warns if no QN#s are selected If Selection = "" Then MsgBox ("Please Select Your QN#s Before Run

我正在尝试完成此宏,该宏将打开另一个工作簿,复制选定的单元格,并将其粘贴到另一个工作簿中。仅当选择在列A中且仅当选择包含数据时,我才希望执行此操作

“如果选择包含数据”部分很简单,但是如何声明如果选择不在a列中,那么
MsgBox(“请选择数据”)

这里是到目前为止的if语句,它仍然需要上面直接提到的部分

'Warns if no QN#s are selected
If Selection = "" Then
MsgBox ("Please Select Your QN#s Before Running This Macro")
Exit Sub
End If

这似乎有助于识别单元格是否在某个列中

If Not Intersect(Selection, Range("A:A")) Is Nothing Then
'Proceed
Else
MsgBox ("Please Select Your QN#s Before Running This Macro")
Exit Sub
End If

为什么不使用工作表\u选择更改

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Column <> 1 Then
        MsgBox "Please Select Your QN#s Before Running This Macro", vbOKOnly, "Data Selection"
    Else
        RunMacro
    End If

End Sub
Private子工作表\u selection更改(ByVal目标作为范围)
如果是Target.Column 1,那么
MsgBox“请在运行此宏之前选择QN”,vbOKOnly,“数据选择”
其他的
运行宏
如果结束
端接头

使用这种代码模式。这只是处理选择,而不是检测更改

Dim a As Integer
Dim b As Integer
Dim c As String
a = Selection.Row
b = Selection.Rows.Count - 1
c = "A" & a & ":" & "A" & a + b
If ((Selection.Column = 1) And (WorksheetFunction.CountA(Range(c)) > 0)) Then

MsgBox "ready to go"

End If
在上述代码中,将考虑包含数据的隐藏行。
合并的单元格被视为一个有值的单元格,其他单元格为空白(例如:合并A2:A5时,则有3个空白单元格)

选择是单个单元格吗?选择可以是多个单元格。我找到了我质疑的部分,但是现在我在识别多重选择是否为空(“”)时遇到了问题。有没有办法让它认识到这一事实,以便如果有人高亮显示a列中的多个空白单元格,它将运行msgbox?只有在选择有数据时,这意味着什么?选择可以跨越多个列-因此,您需要严格的一列还是允许有多个列,但必须与列
A
相交?