2011-05-14 59 views
2

我正在構建一個圖表,其中系列被命名爲範圍。這一切正常,因爲我有一個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"

,你可以看到,這是哪裏的問題一命嗚呼

+1

使用字符串連接構建範圍只是要求痛苦和痛苦!改用'Range'類型的變量。這就是'Range'的用途。請參閱@osknows的答案爲例。 – 2011-05-15 11:51:43

回答

2

這樣的事情如何

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 
+0

工作非常好,非常感謝! – Lievcin 2011-05-16 06:31:36

1

一個命名的範圍可以參考其他命名範圍,所以你可以。建立它在幾個名稱塊,然後使用主名稱來指代子塊