2015-08-27 20 views
0

我有簡單的宏其打開時的範圍內的單元中的一個被選擇的的InputBox:的InputBox選擇行後打開

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

If Not Application.Intersect(Target, Range("H18:H" & Worksheets("LookUpLists").Cells(2, "N").Value - 1)) Is Nothing Then 
    UserForm1.Show 
End If 

End Sub 

問題我面對的是,打開的InputBox也當我選擇全行。

你有什麼想法如何避免這種情況?

回答

0

檢查細胞的數量:

If Not Application.Intersect(Target, Range("H18:H" & _ 
    Worksheets("LookUpLists").Cells(2, "N").Value - 1)) Is Nothing And _ 
     Target.Cells.Count = 1 Then '// <~~ Check number of cells selected is 1 

    Userform1.Show 

End If 
0

如果要允許所有選項不屬於一整行(1個或多個),這應該這樣做。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

Dim bEntireRow as Boolean 
    With Target 
     bEntireRow = .Address = .EntireRow.Address 
     '/ Excel evaluates (.Address = .Entirerow.address) as a Boolean True/False and assigns it to bEntireRow 
    End With 

    If bEntireRow = false and Not Application.Intersect(Target, Range("H18:H" & Worksheets("LookUpLists").Cells(2, "N").Value - 1)) Is Nothing Then 
     UserForm1.Show 
    End If 

End Sub