2014-02-27 97 views
-1

下面提到的代碼是由@simoco寫的。我需要一個小的更正。該代碼適用於兩個範圍。我希望代碼只能運行列A:E。換句話說,如果我在A:E以外的任何列中選擇一個單元格,那麼當代碼運行時,只會選擇兩個單元格。我不希望這種情況發生。如果我選擇A:E中的任何單元格,我想要選擇A:E。如果我不選擇A:E列的單元格,然後代碼不應該運行和消息框應顯示:更正VBA代碼

msgbox("Please select a cell in columns A:E"). 

請幫助。

的代碼是:

Sub test1() 
Dim rng As Range 
Dim ar As Range 
Dim rngAE As Range, cell As Range 

With Selection 
For Each ar In .Areas 
    If rng Is Nothing Then 
    Set rng = ar.Resize(1, 2) 
    Else 
     Set rng = Union(rng, ar.Resize(1, 2)) 
    End If 
Next ar 

Set rngAE = Intersect(.Cells, Range("A:E")) 
If Not rngAE Is Nothing Then 
    For Each cell In rngAE 
     Set rng = Union(rng, Range("A" & cell.Row & ":E" & cell.Row)) 
    Next cell     
End If 
End With 

rng.Select 
End Sub 

回答

0

嘗試改變這一點:

Set rngAE = Intersect(.Cells, Range("A:E")) 
If Not rngAE Is Nothing Then 
    For Each cell In rngAE 
     Set rng = Union(rng, Range("A" & cell.Row & ":E" & cell.Row)) 
    Next cell     
End If 

這樣:

Set rngAE = Intersect(.Cells, Range("A:E")) 
If Not rngAE Is Nothing Then 
    For Each cell In rngAE 
     Set rng = Union(rng, Range("A" & cell.Row & ":E" & cell.Row)) 
    Next cell 
Else 
    msgbox "Please select a cell in columns A:E", vbCritical  
    Exit Sub   
End If 
+0

ARich您好,感謝您的回覆。我修改了代碼。但在我的代碼中,我希望這個被刪除。我的意思是我不想讓這些代碼工作。 Set rng = ar.Resize(1,2) Else Set rng = Union(rng,ar.Resize(1,2)) End If .... – user3340121

+0

嗨ARich,再次感謝。我再次檢查。它工作完美。再次感謝你。 – user3340121