Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: поясните смысл строки в Excel VBA Добавлено: 04.07.06 18:17  

Автор вопроса:  APS | ICQ: 234458121 
max = Sheets(s).Cells(1, 1).SpecialCells(11).Row

Насколько я понимаю, люди пытаются выяснить номер последней не пустой строки.
Нигде не могу найти числовых значений переменной XlCellType для SpecialCells. Что означает 11.
Cells (1,1) - как я понял, ячейка с которой начинается просмотр, а если указать просто Cells, что изменится?
Извините, если вопросы очень простые и глупо было бы их задавать.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Незнайка



Вопросов: 7
Ответов: 188
 Профиль | | #1 Добавлено: 04.07.06 18:50
Достаточно посмотреть в Object Browser:
[QUOTE]Const xlCellTypeLastCell = 11
Member of Excel.XlCellType[/QUOTE]
- то бишь это константа последней ячейки ... и далее ссылка на строку (естественно последнюю). О методе SpecialCells можно почитать набрав это сочетание в хелпе VBA. Применима к листу. Так что применять Cells вполне допустимо. Так как методу пофигу - он будет искать последнюю на листе. Считаю, что нужно очень осторожно относится к этому методу - по возможности избегать - так как велики могут бы ошибки.

Ответить

Номер ответа: 2
Автор ответа:
 APS



ICQ: 234458121 

Вопросов: 38
Ответов: 107
 Профиль | | #2 Добавлено: 04.07.06 20:50
А как тогда наилучшим образом найти последнуюю заполненную ячейку в столбце?

Ответить

Номер ответа: 3
Автор ответа:
 Незнайка



Вопросов: 7
Ответов: 188
 Профиль | | #3 Добавлено: 04.07.06 22:20
Ничего страшного не произойдет, если пробежишься до первого не пустого значения:
Do While Len(Trim$(Лист.Cells(x, y).value)) > 0
   x = x + 1
Loop

Совет (добрый) не ищи оптимальности на ничтожном кусочке кода - не старайся сделать его быстрее чем Гагарин на ракете. Лучше будь уверен, что это действительно последняя ячейка. А вот программу лучше писать так, чтобы эта пробежка свершалась единожды - а не много раз.
Один раз пробежался - считал в массив (память) - перебираешь/преобразовываешь и т.д. Ваще старайся не обращаться без надобности к ячейкам - это самое медленное. Считывай - засовывай в массивы и коллекции - преобразовывай - и выводи. Т.о. к ячейкам обращаешься лишь дважды.

Ответить

Номер ответа: 4
Автор ответа:
 APS



ICQ: 234458121 

Вопросов: 38
Ответов: 107
 Профиль | | #4 Добавлено: 04.07.06 23:44
Я неправильно объяснил. Есть столбец, в котором чередуются заполненные и пустые ячейки. Так вот надо по идее собрать range только из заполенных ячеек, причем принимаются только целые числа.

Ответить

Номер ответа: 5
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #5
Добавлено: 05.07.06 00:27
____ Кажется UserRange охватывает в себя только "тронутые" ячейки.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам