我正在尝试完成此宏,该宏将打开另一个工作簿,将所选单元格复制并粘贴到另一个工作簿中。我只想在所选内容位于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
答案 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个空白单元格)