VBA:如何以编程方式创建指向以编程方式创建的工作表的命名范围?

时间:2014-03-24 10:17:11

标签: vba excel-vba named-ranges excel

看来这个问题也包含了正确的答案,Excel出于某些不可思议的原因而无法正确执行它。所以问题有所改变:

为何选择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

offer是包含一些名称的字符串(是的,我希望同时具有相同名称的工作表和命名范围 - 至少现在)。 将有未知数量的那些,所以我只是循环for each

问:如何向RefersToR1C1添加工作表信息,以便命名范围引用某个工作表? (我知道' Sheetname'!A1:A10语法,但如果可能的话,想要使用Sheet / Range / Cell对象)

1 个答案:

答案 0 :(得分:1)

这是因为你没有完全限定你的范围,你需要明确:

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

细胞之前的点很重要。