2011-05-14 2 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 для примера. –

ответ

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

1

именованный диапазон может ссылаться на другие именованные диапазоны, так что вы могли бы. постройте его в нескольких блоках имен, а затем используйте главное имя для ссылки на подблоки

Смежные вопросы