2015-02-11 74 views
0

我幾乎沒有VBA背景,對其整體結構瞭解甚少,但需要對現有電子表格進行添加/修改才能完成某些目標。該電子表格包含數百個命名範圍以及數十個VBA函數和計算。訪問Worksheet_SelectionChange子例程中的命名範圍

現在,所有我試圖做的是:

  1. 在表1創建一個下拉(數據驗證類型) - 根據您的選擇
  2. 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行處得到「對象變量或塊變量未設置」錯誤。看起來我無法訪問此子例程中的命名範圍。我應該採取什麼措施?

請耐心等待我對自己在做什麼的拼湊知識。

+0

我的意思的錯誤是在該行:transferRange = XYZ_data – Jabberwocky 2015-02-11 02:36:51

+1

歡迎堆棧溢出一個開始,'Range'變量必須用'Set'關鍵字賦值,如下所示:'Set transferRange = ABC_data'或'Set transferRange = XYZ_data' – 2015-02-11 02:38:24

+0

謝謝。已經有進展了,添加Set取消了第一個錯誤,我需要一個「對象需要」的錯誤,之後,我將行改爲:Set transferRange = ThisWorkbook.Sheets(「SheetB」)。Range(「XYZ_data」)。第二個錯誤然後消失了。英尺在我試圖複製命名範圍的最後一行發生錯誤。我看到以下消息:對象「_Worksheet」的方法「範圍」失敗。 – Jabberwocky 2015-02-11 03:10:02

回答

0

試一下這個(注意我說的目的地:=位希望解決您的最終錯誤:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim PD As String, transferRange As Range 
PD = Target.Value 
Select Case PD 
    Case "ABC" 
     Set transferRange = ThisWorkbook.Sheets("SheetB").Range("ABC_data") 
    Case "XYZ" 
     Set transferRange = ThisWorkbook.Sheets("SheetB").Range("XYZ_data") 
End Select 
Range(transferRange).Copy Destination:=ThisWorkbook.Sheets("SheetC").Range("A1") 
End Sub 
+0

我試過這個,但仍然收到「Method Range ...」錯誤。看起來,在四處看到明確定義源工作表等等,所以我最後一行改爲:ThisWorkbook.Sheets(「SheetB」)。Range(transferRange).Copy Destination:= ThisWorkbook.Sheets(「SheetC 「).Range(」 A1" )。現在,我有一個「應用程序定義或對象定義的錯誤」! – Jabberwocky 2015-02-11 03:25:42

+0

我認爲你已經測試了丹最後的建議? – 2015-02-11 03:36:21

+0

不,我還沒有嘗試過,但我現在可以報告它確實有效。謝謝。 – Jabberwocky 2015-02-11 04:19:20