Определить первую и последнию заполненную ячейку

Программирование на Visual Basic for Applications
goddan
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 29.10.2007 (Пн) 1:59

Определить первую и последнию заполненную ячейку

Сообщение goddan » 04.02.2008 (Пн) 15:16

Добрый день.

Подскажите пожалуйста как можно реализовать следующее. Юзер кликает в экселе на заполненную ячейку данными. Нужно определить адрес первой и последней заполненных ячеек в этой строке. Данные их обьеденить и вставить в textbox(расположен на этом листе).

Если можно направьте мысль как это можно сделать.Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.02.2008 (Пн) 15:48

Можешь пройтись циклом от текущего столбца, вначале назад, до последней непустой ячейки, потом вперед, до последней непустой ячейки. Эти две ячейки будут границами области.
Можешь также посмотреть в направлении свойства Range.CurrentRegion, лимитировав его текущей строкой.
Я бы советовал второе.
Lasciate ogni speranza, voi ch'entrate.

Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 04.02.2008 (Пн) 19:06

Вот, наверное, ещё так можно в первой строке узнать первую и последнуюю заполненную ячейку


Код: Выделить всё
Sub Макрос1()
Dim iFirstColumn As Long
Dim iLastColumn As Long
    iFirstColumn = Cells(1, 1).End(xlToRight).Column
    MsgBox "Первая заполненная ячейка в первом ряду в столбце: " & iFirstColumn
    iLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
    MsgBox "Последняя заполненная ячейка в первом ряду в столбце: " & iLastColumn
End Sub

goddan
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 29.10.2007 (Пн) 1:59

Сообщение goddan » 04.02.2008 (Пн) 22:31

спасибо, решил проблему используя

Selection.End(xlToLeft).Select и Selection.End(xlToRight).Select

Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 04.02.2008 (Пн) 22:38

лучше не испозовать метод Select. Он замедляет работу макроса

@Nik
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 14.05.2007 (Пн) 12:11

Сообщение @Nik » 05.02.2008 (Вт) 17:01

А как вам такой вариант ? :wink:
Вложения
RowsElements_Anik.xls
(29.5 Кб) Скачиваний: 447

goddan
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 29.10.2007 (Пн) 1:59

Сообщение goddan » 05.02.2008 (Вт) 23:43

@Nik писал(а):А как вам такой вариант ? :wink:

Супер!!!! :D

просветите плиз, что это [usedrow] и где моржно о нем почитать.
Если используется комбобокс, то где сам обьект, и как просмотреть его свойства?

Честно я просто восхищен!!!

@Nik
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 14.05.2007 (Пн) 12:11

Сообщение @Nik » 06.02.2008 (Ср) 10:01

Поскольку вы написали [usedrow], то, надо полагать, вы смотрели совсем не туда , куда надо :) Тот кусок кода я просто забыл удалить, он в данном примере совершенно не нужен. Им можно было бы пользоваться в том случае, если бы вам в ComboBox надо было подставлять значения выбранного столбца, а не строки, но для этого надо будет несколько изменить формулу "UsedRow". А так тут всё реализовано без макросов. Увидеть же саму формулу для "UsedRow" можно так: Вставка->Имя->Присвоить... А в ячейках В5:В14 выпадающий список реализован срадствами экселя: Данные->Проверка... Тип данных - "Список".

goddan
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 29.10.2007 (Пн) 1:59

Сообщение goddan » 06.02.2008 (Ср) 10:52

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


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList