2014-03-24 47 views
0

看來這個問題也包含了正確的答案,因爲某些深不可測的原因Excel不會無錯地執行它。所以這個問題已經改變了一點:VBA:如何編程創建命名範圍指向以編程方式創建的工作表?

爲什麼1004?

基本上我想使用類似(這給我1004):

Dim rngTmp As Range 
For Each offer In SanitizedConstInfo("offers").keys() 
    Set rngTmp = Sheets(offer).Range(Cells(1, 1), Cells(2, 2)) 
    ActiveWorkbook.Names.add name:=offer, RefersToR1C1:=rngTmp 
    ActiveWorkbook.Names(offer).RefersToRange.Cells(1, 1) = offer 
Next offer 

的報價是包含若干名字符串(是的,我想有兩片,並用相同的名字命名的區域 - 現在至少)。 這些人數不詳,所以我只是循環for each

問:如何將表單信息添加到RefersToR1C1,以便命名範圍是指某個表單? (我知道'Sheetname'!A1:A10語法,但想用Sheet/Range/Cell對象來做到這一點)

+0

我不明白你的問題在這裏...... *'如果可能的話,希望使用Sheet/Range/Cell對象來做到這一點'*你能解釋一下嗎? – 2014-03-24 10:29:39

+0

如何更改「工作表(報價)」以使該代碼正常工作。我不確定是否可以使用* Range *()來選擇這些單元格,因爲對於每個名稱,這些單元格將位於不同的表單上。 –

+1

但現在如果你的'offer'變量包含'Test',那麼你命名的'Test'範圍指的是'= Test!$ A $ 1:$ B $ 2',所以我不明白你要改變的是什麼...... – 2014-03-24 10:33:36

回答

1

這是因爲你沒有完全限定範圍,所以你需要明確:

With Sheets(offer) 
    Set rngTmp = .Range(.Cells(1, 1), .Cells(2, 2)) 
End With 

細胞之前的點很重要。

相關問題