我幾乎沒有VBA背景,對其整體結構瞭解甚少,但需要對現有電子表格進行添加/修改才能完成某些目標。該電子表格包含數百個命名範圍以及數十個VBA函數和計算。訪問Worksheet_SelectionChange子例程中的命名範圍
現在,所有我試圖做的是:
- 在表1創建一個下拉(數據驗證類型) - 根據您的選擇
- DONE,複製許多有名有姓的範圍之一存儲在工作表2中,到工作表3上的某個位置(如A1)。
要實現第2步,我開始了Worksheet_SelectionChange子例程,代碼如下所示。假設兩個下拉選項= ABC & XYZ。假定兩個對應的命名範圍爲ABC_data & XYZ_data。這兩個命名範圍是工作簿範圍。它們將被複制到標有SheetC的工作表中。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PD As String, transferRange As Range
PD = Target.Value
Select Case PD
Case "ABC"
transferRange = ABC_data
Case "XYZ"
transferRange = XYZ_data '<~ error here, assuming "XYZ" selection
End Select
Range(transferRange).Copy ThisWorkbook.Sheets("SheetC").Range("A1")
End Sub
請幫我理解這有什麼問題。當我做出選擇並調試該子例程時,假設選擇了XYZ,我會在transferRange = XYZ_data
行處得到「對象變量或塊變量未設置」錯誤。看起來我無法訪問此子例程中的命名範圍。我應該採取什麼措施?
請耐心等待我對自己在做什麼的拼湊知識。
我的意思的錯誤是在該行:transferRange = XYZ_data – Jabberwocky 2015-02-11 02:36:51
歡迎堆棧溢出一個開始,'Range'變量必須用'Set'關鍵字賦值,如下所示:'Set transferRange = ABC_data'或'Set transferRange = XYZ_data' – 2015-02-11 02:38:24
謝謝。已經有進展了,添加Set取消了第一個錯誤,我需要一個「對象需要」的錯誤,之後,我將行改爲:Set transferRange = ThisWorkbook.Sheets(「SheetB」)。Range(「XYZ_data」)。第二個錯誤然後消失了。英尺在我試圖複製命名範圍的最後一行發生錯誤。我看到以下消息:對象「_Worksheet」的方法「範圍」失敗。 – Jabberwocky 2015-02-11 03:10:02