2016-07-14 75 views
-1

我想創建一個動態名稱,可以幫助拉一個具有匹配名稱的工作表。首先,我創建了一個字符串變量的國家,是動態的,將採取值從列各行:動態工作表名稱

For k = 2 To 59 
    srange0 = "A" & k & "" 
Country = wsforecast.Range(srange0).value 

然後我想這個國家與工作表名稱相匹配:

If Country = wbregion.Worksheets("Country").Name Then 'subscript out of range 
    For i = 1 To cntyn 
     For j = 5 To forec 
     If Cells(i, "A").value = rcell Then 
      If Cells(i, "C").value = wbregion.Worksheets("Country").Cells(j, "B").value Then 
       srange1 = "I" & j & ":" & "n" & j 
       srange2 = "D" & i & ":" & "i" & i 
       wsforecast.Range(srange2).Value2 = wsregion.Range(srange1).Value2 
      End If 
     End If 
     Next j 
    Next i 
    End If 
Next k 

但我將收到一條消息,告訴我此方法不受支持。你有什麼建議如何使這個標籤名稱動態?萬分感謝!

+0

所以,你然後試圖找到'國家'是工作表'國家'的名稱?試試'If Country = wbregion.Workseets(「Country」)。Name Then' – BruceWayne

回答

0

,如果我得到正確,您需要什麼,試着改變你的循環,以這樣的:

Dim shCheck as Object 
On error Resume next 
set shCheck = wbregion.Worksheets(Country) 
on error goto 0 

If Not (shCheck is nothing) Then 
For i = 1 To cntyn 
    For j = 5 To forec 
    If Cells(i, "A").value = rcell Then 
     If Cells(i, "C").value = wbregion.Worksheets(Country).Cells(j, "B").value Then 
      srange1 = "I" & j & ":" & "n" & j 
      srange2 = "D" & i & ":" & "i" & i 
      wsforecast.Range(srange2).Value2 = wsregion.Range(srange1).Value2 
     End If 
    End If 
    Next j 
Next i 
End If 
Next k 

,我也根本不知道究竟是什麼wbregion在你的代碼

編輯:也許值得說明的一點 - 這樣做是爲了「抓取」工作表,但如果工作表不存在,則需要確保它忽略錯誤,然後檢查工作表是否存在,如果存在,則循環將啓動,如果不存在,它會跳過。

+0

Thanks!但是這個代碼與工作表名稱不匹配? – user95902

+0

@ user95902不知道我明白你的意思嗎?它會嘗試檢查在工作簿「wbregion」中是否有名稱已存儲在變量「country」中的工作表。順便說一句,我剛剛修復了我在我的答案中提出的錯字 - 我從「Country」的第二次出現中除去了引號。 – Raugmor

+0

@ user95902你能否確認它是否有效? – Raugmor