2015-05-26 67 views
1

我在跨兩個子過程傳遞範圍時遇到問題。你能提出可能的錯誤嗎?將命名範圍作爲參數傳遞給VBA時出錯

我在VBA中定義了兩個子過程。在第一個子程序中,我選擇了單元格(3X3 MATRIX),在「ABC」下命名,我將其複製到另一個單元格「PQR」。這是工作:)

我想啓用「所有邊界」時,值從ABC複製到PQR。爲此,我錄製了一個宏。

但是,每當我運行這個子程序時,它都會給出一個對象不存在的錯誤。

我打電話以下列方式宏:

All_border_test PQR 

爲子過程的代碼,如下所示:

Sub All_borders_test(d As Range) 
Range(d).Select 

' Recorded Macro to enable all borders (its working) 
End Sub() 
+0

什麼'呼叫All_border_test(..)'? – Werner

+0

只需使用d.Select代替Range(d)。選擇。你已經有一個範圍對象。 – Tom

+0

嗨湯姆,我按照你的說法做了改變.. d.select。雖然調用我做了這個改變..調用All_borders_test(PQR)---它給出了一個編譯錯誤「Byref參數類型不匹配」 – Gayathry

回答

0

1-看一看:
What's the RIGHT way to reference named cells in Excel 2013 VBA? (I know I'm messing this up)

VBA Reference Named Range ActiveSheet
2-修復您的代碼:

Sub All_borders_test(d As Range) 
    d.Select ' old code was: Range(d).Select 
End Sub 'no parenthesis here 

3-你可以叫All_borders_test使用以下調用之一:

Call All_borders_test([PQR]) 
Call All_borders_test(Range("PQR")) 
Call All_borders_test(Sheet1.Range("PQR")) ' assuming that PQR range exists in Sheet1