变通方法命名范围字符限制

时间:2011-05-14 07:54:14

标签: excel excel-vba vba

我正在构建一个图表,其中系列名为范围。这一切都很好,因为我有一个Dropbox,在那里我选择客户,它循环遍历数据,为命名范围创建字符串并编辑它,刷新图表,瞧!

现在,问题是这个字符串似乎有255个字符的限制,如果客户有很多记录,那么它就会出错。

是否有人遇到类似问题或知道解决方法?

For i = 8 To lRow
    If Sheets("Data").Cells(i, 4).Value = cmbInst.Value Then
        nRangeTrade = nRangeTrade & "Data!$A$" & i & ","
        nRangeSettle = nRangeSettle & "Data!$C$" & i & ","
    End If
Next

nRangeTrade的价值:

Data!$A$85,Data!$A$97,Data!$A$98,Data!$A$156,Data!$A$157,Data!$A$308,Data!$A$309,Data!$A$464,Data!$A$473,Data!$A$474,Data!$A$478,Data!$A$490,Data!$A$541,Data!$A$546,Data!$A$633,Da"

正如您所看到的,这就是问题所在。

2 个答案:

答案 0 :(得分:3)

这样的事情

Sub test()
Dim nRangeTrade As Range, nRangeSettle As Range
lrow = 1000
For i = 8 To lrow
    If Sheets("Data").Cells(i, 4).Value = cmbInst.Value Then

        If nRangeTrade Is Nothing Then
            Set nRangeTrade = Sheets("Data").Range("A" & i)
        Else
            Set nRangeTrade = Application.Union(nRangeTrade, Sheets("Data").Range("A" & i))
        End If

        If nRangeSettle Is Nothing Then
            Set nRangeSettle = Sheets("Data").Range("C" & i)
        Else
            Set nRangeSettle = Application.Union(nRangeSettle, Sheets("Data").Range("C" & i))
        End If
    End If
Next i
'nRangeTrade.Select
Sheets("Data").Names.Add Name:="nRangeTrade", RefersTo:=nRangeTrade
Sheets("Data").Names.Add Name:="nRangeSettle", RefersTo:=nRangeSettle
End Sub

答案 1 :(得分:1)

命名范围可以引用其他命名范围,因此您可以在多个名称块中构建它,然后使用主名称来引用子块