Excel 命名范围字符限制的解决方法
我正在构建一个图形,其中序列被命名为范围。这一切都很好,因为我有一个dropbox,在这里我选择了客户,它在数据中循环,为命名范围创建字符串并编辑它,刷新图表,瞧 现在,问题是这个字符串的长度限制为255个字符,如果客户有很多记录,那么它就会出错 有没有人遇到过类似的问题或知道解决方法Excel 命名范围字符限制的解决方法,excel,vba,Excel,Vba,我正在构建一个图形,其中序列被命名为范围。这一切都很好,因为我有一个dropbox,在这里我选择了客户,它在数据中循环,为命名范围创建字符串并编辑它,刷新图表,瞧 现在,问题是这个字符串的长度限制为255个字符,如果客户有很多记录,那么它就会出错 有没有人遇到过类似的问题或知道解决方法 For i = 8 To lRow If Sheets("Data").Cells(i, 4).Value = cmbInst.Value Then nRangeTrade = nRang
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的值
:
数据$A 85美元,数据$A 97美元,数据$98美元,数据$156美元,数据$A 157美元,数据$308美元,数据$309美元,数据$464美元,数据$473美元,数据$474美元,数据$478美元,数据$490美元,数据$541美元,数据$546美元,数据$A$633,Da“
如您所见,这就是问题的症结所在。命名范围可以引用其他命名范围,因此您可以在几个名称块中构建它,然后使用主名称引用子块命名范围可以引用其他命名范围,因此您可以在几个名称块中构建它,然后使用主名称引用子块像这样的怎么样
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
像这样的怎么样
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
使用字符串连接构建范围只会带来痛苦和痛苦!请改用
Range
类型的变量。这就是Range
的作用。请参阅@osknows'答案以获取示例。使用字符串连接构建范围只会带来痛苦和痛苦!改用Range
类型的变量。这就是 范围
用于。有关示例,请参见@osknows'答案。