Страница: 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, что изменится?
Извините, если вопросы очень простые и глупо было бы их задавать.
Ответить
|
Номер ответа: 1 Автор ответа: Незнайка
Вопросов: 7 Ответов: 188
|
Профиль | | #1
|
Добавлено: 04.07.06 18:50
|
Достаточно посмотреть в Object Browser:
[QUOTE]Const xlCellTypeLastCell = 11
Member of Excel.XlCellType[/QUOTE] - то бишь это константа последней ячейки ... и далее ссылка на строку (естественно последнюю). О методе SpecialCells можно почитать набрав это сочетание в хелпе VBA. Применима к листу. Так что применять Cells вполне допустимо. Так как методу пофигу - он будет искать последнюю на листе. Считаю, что нужно очень осторожно относится к этому методу - по возможности избегать - так как велики могут бы ошибки.
Ответить
|
Номер ответа: 3 Автор ответа: Незнайка
Вопросов: 7 Ответов: 188
|
Профиль | | #3
|
Добавлено: 04.07.06 22:20
|
Ничего страшного не произойдет, если пробежишься до первого не пустого значения:
Do While Len(Trim$(Лист.Cells(x, y).value)) > 0
x = x + 1
Loop
Совет (добрый) не ищи оптимальности на ничтожном кусочке кода - не старайся сделать его быстрее чем Гагарин на ракете. Лучше будь уверен, что это действительно последняя ячейка. А вот программу лучше писать так, чтобы эта пробежка свершалась единожды - а не много раз.
Один раз пробежался - считал в массив (память) - перебираешь/преобразовываешь и т.д. Ваще старайся не обращаться без надобности к ячейкам - это самое медленное. Считывай - засовывай в массивы и коллекции - преобразовывай - и выводи. Т.о. к ячейкам обращаешься лишь дважды.
Ответить
|
Страница: 1 |
Поиск по форуму