![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Какая-то странная проблема. Я хочу определить, где на листе последние использованные ячейки. Для этого смотрю на Sh.Cells.SpecialCells(xlCellTypeLas tCell).Row и Sh.Cells.SpecialCells(xlCellTypeLas tCell).Column. Допустим, мы написали на пустом листе в ячейке B2 число 1. Переменные стали равными 2,2. Теперь мы удалили верхнюю строку, и B2 переместилось на B1. Но эти переменные так и остались равными 2,2!
![]() Как точно определить последние используемые границы (за которыми все пустое) и чтобы они менялись адекватно, а то здесь какая-то странность? |
![]() |
![]() |
![]() |
#2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Действительно, функции SpecialCells(xlCellTypeLastCell) свойственна некоторая задумчивость - Excel забывает обновить значение этого свойства после удаления диапазона ячеек:
Код:
Код:
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Спасибо, надеюсь, эта вещь работает во всех случаях
![]() |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Опять проблема с границами: я сделал, чтобы при открытии книги обновлялись данные о границах на всех листах, кроме последнего. Почему-то определяется неправильно иногда, как будто там старые значения остаются, или вообще непонятно что.
Код:
|
![]() |
![]() |
![]() |
#5 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
А если попробовать так:
Код:
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Если создать пустой файл, то вроде и то, и другое одинаково работает. Может, проблема в том, что когда в каком-то файле были данные, потом это начинает проявляться? Я удалил листы из той книги, где это проверялось, и сделал их пустыми. Пока определяет нормально, но все это довольно странно.
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Да, вот какой-то глюк, при удалении/вставке строк вдруг число исп. колонок становится равным 16384, и ячейки начинают мигать черным!
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
А зачем Вы используете метод SpecialCells? Почему не устраивает UsedRange? Ему "фиолетово", были использованы ячейки вне этого диапазона ранее, или нет.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Сначала я его использовал, но там вроде тоже в каком-то месте неправильно начало определять, и я перешел на SpecialCells. Но если Вы подскажете, как правильно определять с помощью UsedRange, перейду на него. (мне нужно просто определять последнюю используемую строку и столбец - их номер)
Последний раз редактировалось motorway; 23.07.2009 в 16:26. |
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
![]()
При помощи UsedRange лучше определять так
Код:
Хотя вообще определение последней ячейки тема такая... Смотря что кто понимает под последней ячейкой. Значение, формула, форматы...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выбор листа! | Gerek | Microsoft Office Excel | 1 | 27.06.2009 12:58 |
Сборка листа | Berrimor | Microsoft Office Excel | 8 | 24.12.2008 10:56 |
Защита листа! | Marsik | Microsoft Office Excel | 2 | 27.03.2008 18:19 |
в одной ячейке надписи были в 2-х или 3-х рядках и текст отображался целиком а не прятался за границами | KSP | Общие вопросы Delphi | 7 | 20.09.2007 20:33 |