如果仅在特定列内进行选择时才执行操作的if语句

时间:2018-11-27 16:53:46

标签: excel vba excel-vba

我正在尝试完成此宏,该宏将打开另一个工作簿,将所选单元格复制并粘贴到另一个工作簿中。我只想在所选内容位于A列中并且仅当所选内容包含数据时才这样做。

如果选择包含数据部分很容易,但是我该如何声明如果选择不在A列中,那么MsgBox("Please select data")会如此?

到目前为止,这里是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

3 个答案:

答案 0 :(得分:2)

这似乎可以识别单元格是否在特定列中。

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

答案 1 :(得分:1)

为什么不使用Worksheet_SelectionChange?

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

答案 2 :(得分:0)

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

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个空白单元格)