|
17.12.2008, 12:08 | #1 |
Участник
|
Вай шайтан, заработало, точка с запято, почему-то не с первого раза, видимо поняла что упираться безсмыслено, всем спасибо!
|
|
17.12.2008, 12:16 | #2 |
Участник
|
Цитата:
Иначе можете получить код, который не будет работать на тех ПК настройки которых отличны от ";". |
|
17.12.2008, 12:31 | #3 |
Участник
|
Да, эт я понял.
PS Я понял почму у меня не работало - корректно работает тольо с короткими строками, насколько кроткими не проверял, но вот на такой уже сыпется "6:10;12:16;18:22;24:28;30:34;36:40;42:46;48:52;54:58;60:64;66:70;72:76;78:82;84:88;90:94;96:100;102:106;108:112;114:118;120:124;126:130;132:136;138:142;144:148;150:154;156:160;162:166;168:172;174:178;180:184;186:190;192:196;198:202;204:208;210:214;216:220;222:226;228:232;234:238;240:244" а щассе было так возможно.. придется дробить видимо.. |
|
17.12.2008, 12:40 | #4 |
Moderator
|
Дозвольте со своим пятаком влезть. Существует более человеческий способ объединения диапазонов - методом Union объекта Excel.Application. Его выгодное преимущество - он не зависит от капризов региональных настроек:
X++: static void Job120(Args _args) { ComExcelDocument_RU doc = new ComExcelDocument_RU(); COM xlApp; COM wbook; COM activeSheet; COM range; ; doc.NewFile(); wbook = doc.getComDocument(); xlApp = wbook.Parent(); activeSheet = xlApp.ActiveSheet(); range = activeSheet.Range('7:10'); range = xlApp.Union(range, activeSheet.Range('13:16')); range = xlApp.Union(range, activeSheet.Range('23:26')); range = xlApp.Union(range, activeSheet.Range('33:36')); range.Select(); } |
|
17.12.2008, 13:00 | #5 |
Moderator
|
Цитата:
Сообщение от MironovI
корректно работает тольо с короткими строками, насколько кроткими не проверял, но вот на такой уже сыпется
"6:10;12:16;18:22;24:28;30:34;36:40;42:46;48:52;54:58;60:64;66:70;72:76; 78:82;84:88;90:94;96:100;102:106;108:112;114:118;120:124;126:130;132:136;138:142;144:148; 150:154;156:160;162:166;168:172;174:178;180:184;186:190;192:196;198:202;204:208;210:214;216:220;222:226;228:232;234:238;240:244" Про 30 аргументов можно увидеть, например, в окне отладки Excel, введя: Application.WorksheetFunction.Sum( при этом в качестве подсказки высветится список аргументов, последний из которых будет Arg30. P.S. Впрочем, пишут, что в Excel 2007 "Максимальное число аргументов функции увеличилось с 30 до 255." http://msdn.microsoft.com/ru-ru/library/aa730920.aspx |
|
|
За это сообщение автора поблагодарили: MironovI (2). |
17.12.2008, 13:22 | #6 |
Участник
|
Да,цивилизованный метод рулит
PS правда поскорости сливает.. жость.. лан, пища есть- бум переваривать.. Последний раз редактировалось MironovI; 17.12.2008 в 13:34. |
|
17.12.2008, 14:44 | #7 |
Участник
|
Поискал, нет примера вариантного массива в аксе.
Кстати, а зачем нужно программно выполнять такую задачу? Мы в свое время делали это для построения диаграмм. Какие еще задачи требуют этого? |
|
17.12.2008, 14:48 | #8 |
Участник
|
Задался целю копировать формат секции отчета сразу на диапазон ячеек (именно форматирование - специальой вставкой) Т.е. данные в отчет выводятся скопом через ADO или буфер обмена, а стиль накладывается сверху. Поскольку секция строк прерывается секцией групп - зпоминаю все диапозоны в отчете и разом к ним применяю формат секции.
Вобщем пока что остановился на варианте - строка через точку с запятой, но по 30 значений (дапазонов) в цикле форматирую. Последний раз редактировалось Gustav; 19.12.2008 в 09:15. Причина: первоначально из-за опечатки было написано ДДЕ (вместо ADO) |
|
23.12.2016, 14:55 | #9 |
Участник
|
задача обновить прайс,хаотично вытащить 1500 позиций ,вставив их на другой лист
Последний раз редактировалось AFT; 23.12.2016 в 15:03. |
|
|
|