[英]Excel VBA Click Cell to Fire Macro - Not working with Merged Cells
我正在使用下面的代碼在單擊單元格時觸發宏。 有問題的單元是標題“Mitch的宏”,但它在合並的單元格B5到J5上。 我已經嘗試將這個合並范圍命名為MITCH,但它仍然沒有在點擊運行...任何想法? 先感謝您!
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Count = 1 Then
If Not Intersect(Target, Range("MITCH")) Is Nothing Then
MsgBox ("Hello World")
End If
End If
End Sub
問題是Selection.Count = 1.合並的單元格有多個單元格,因此一旦選擇合並區域中的任何單元格,代碼就不會被執行。
請試一試......
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("MITCH")) Is Nothing Then
MsgBox ("Hello World")
End If
End Sub
編輯:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range
Set rng = Range("MITCH")
If Target.CountLarge > rng.Cells.Count Then Exit Sub
If Not Intersect(Target, rng) Is Nothing And Target.Cells(1).Address = rng.Cells(1).Address Then
MsgBox ("Hello World")
End If
End Sub
經過一番思考后,我意識到大多數答案都有一些缺點,我認為這就是我們真正追求的:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range
Set rng = Range("MITCH")
If Target.Address = rng.MergeArea.Address Then 'check if what's selected matches the named range entirely
MsgBox ("Hello World")
End If
End Sub
因為這會檢查您選擇的單元格是否完美地映射到命名區域 - 特別是命名范圍的MergeArea 。
與Intersect
匹配只檢查選擇是否包含命名范圍
通過TL單元匹配意味着具有與指定范圍相同的TL的任何選擇也將返回正數。 例如,如果[B2:D3]
是您合並的命名范圍,那么如果選擇[B2:D3]
(如預期的那樣),則[B2]
匹配將返回正數,但是當選擇[B2:XX100]
也是如此
當區域相同時,此代碼僅返回正數,即僅選擇合並的單元格。
如果您已命名范圍,則可以使用以下代碼
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tName As String
On Error Resume Next
tName = Target.Name.Name
On Error GoTo 0
If Len(tName) > 0 Then
If tName = "MITCH" Then
MsgBox ("Hello World")
End If
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.