2017-04-12 26 views
0

我已經爲此寫了一些代碼,具有以下目的:用戶必須在Sheet1上選擇一個範圍,然後按下一個指定宏的按鈕。然後,宏將檢查用戶選擇的範圍是否等於預定範圍,也在Sheet1上。如果兩個範圍相同,則宏將選擇Sheet2並完成其他任務。如果範圍不相等,則宏將停止。下面是代碼:檢查選擇是否等於預定範圍

Sub Example_1() 

    Dim OriginalSelection As Range 
    Set OriginalSelection = Selection 

    If Worksheets("Sheet1").Range("S8:AC8") = OriginalSelection Then 
     Sheets("Sheet2").Select 
     'The macro will do other things here 
    Else 
     Exit Sub 
    End If 

End Sub 

這就是說,每當我試圖運行宏,我得到以下錯誤:

Run-time error '13': Type Mismatch

有誰知道問題出在哪裏?我仍然試圖繞過VBA的頭腦!

謝謝:)

+1

如果「兩個範圍相同」意味着什麼? – SJR

+0

例如,如果預定範圍是Sheet1上的S8:AC8,並且如果用戶在Sheet1上選擇範圍S8:AC8,那麼這兩個範圍是相同的。我不是在說這裏的細胞內容。對不起,如果它是模棱兩可的,我仍然在學習適當的行話! – YesHelloThisIsDog

+1

好吧,試試這個'If Worksheets(「Sheet1」)。Range(「S8:AC8」)。address = OriginalSelection.address'。 – SJR

回答

1

要檢查表也是一樣,你可以使用完整的地址:

If Selection.Address(0, 0, , 1) = "[Book1]Sheet1!S8:AC8" Then 

If Selection.Address(0, 0) = "S8:AC8" And Selection.Parent.Name = "Sheet1" Then 
0

您可以嘗試比較Range.Address與一行:

If Worksheets("Sheet1").Range("S8:AC8").Address(True, True, xlA1, True) = OriginalSelection.Address(True, True, xlA1, True) Then 

第四個參數External = True將返回完整範圍,包括Workbook.NameSheet.Name

相關問題