Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2009, 01:20   #1
Mishel825
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 15
По умолчанию Запись на лист Excel одной и той же опции ListBox два раза подряд

Всем доброе время суток !

Опции списка элемента управления ListBox извлекаются из диапазона ячеек, определяемого свойством RowSourse. Наведя курсор мыши опция выделяется а значение опции записывается в ячейку листа, например так:

Worksheets("Лист1").Cells(intI, 1).Value=UserForm1.ListBox1

Для того чтобы записать подряд (в следующую строку) одну и ту же опцию необходимо закрыть форму вместе с ListBox, после чего та же опция становится доступной для записи на лист.

Такой вопрос: как записать подряд одну и ту же опцию ListBox не закрывая формы ? Т. е. есть ли свойство у ListBox, которое возвращало бы ListBox в первоначальное состояние, приблизительно так:

Worksheets("Лист1").Cells(intI, 1).Value=UserForm1.ListBox1
UserForm1.List1.Свойство.Value = Значение (первоначальное состояние)

С уважением.
Mishel825 вне форума Ответить с цитированием
Старый 20.10.2009, 01:54   #2
Mishel825
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 15
По умолчанию Запись на лист Excel одной и той же опции ListBox два раза подряд

Использую событие Click

Private Sub ListBox1_Click()
.... ..... .....
Worksheets("Лист1").Cells(intI, 1).Value=UserForm1.ListBox1
..... ..... .....
End Sub

При первом клике срабатывает, опция выделяется, клик по выделенной опции не срабатывает. Необходимо убрать выделение опции для записи на лист два раза подряд одной и той же опции.
Mishel825 вне форума Ответить с цитированием
Старый 20.10.2009, 06:09   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если я правильно понял, то задача состоит в том, чтобы кликом по значениям ListBox-а сформировать столбец значений на рабочем листе. Так?
Если так, то советую выполнять процедуру копирования выбранного в ListBox-е значения по событию
Код:
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    'Ваш код
End Sub
Такой подход позволит копировать уже ранее выделенную опцию.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.10.2009, 02:27   #4
Mishel825
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 15
По умолчанию Запись на лист Excel одной и той же опции ListBox два раза подряд

SAS888! Спасибо за подсказку.

ListBox1_MouseDown должно работать. Попробовал так:

Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If Button = vbLeftButton Then
код
End If

End Sub

Это всё, что удалось найти по ListBox1_MouseDown . Опция выделяется, но код не срабатывает. И так не срабатывает:

Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If Button = vbLeftButton Then
Call код
End If

End Sub

Код
Mishel825 вне форума Ответить с цитированием
Старый 25.10.2009, 02:44   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Всё очень просто:
Код:
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Range("a" & Rows.Count).End(xlUp)(2, 1) = Me.ListBox1
End Sub
См. пример файла:

EducatedFool вне форума Ответить с цитированием
Старый 25.10.2009, 14:25   #6
Mishel825
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 15
По умолчанию Запись на лист Excel одной и той же опции ListBox два раза подряд

EducatedFool ! Большое спасибо !
Быстро и профессионально.

В действительности у меня задача такая - записать подряд опцию ListBox из двух столбцов в два столбца на лист Excel. В такой задаче для ListBox код зацикливается. Буду пробовать, если разберусь.
В ответе представлено событие ListBox1_MouseUp вместо ListBox1_MouseDown.

Последний раз редактировалось Mishel825; 25.10.2009 в 14:56.
Mishel825 вне форума Ответить с цитированием
Старый 29.10.2009, 20:19   #7
Mishel825
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 15
По умолчанию Запись на лист Excel одной и той же опции ListBox два раза подряд

Один из вариантов повторной записи на лист Excel, выбранной ранее опции ListBox может быть такой:

Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox1.ListIndex = -1
End Sub

Private Sub ListBox1_Click()
Код
End Sub

Т. е. используются две процедуры. Работает в принципе не плохо, но возможно есть код из одной процедуры ?!
Mishel825 вне форума Ответить с цитированием
Старый 01.11.2009, 14:08   #8
Mishel825
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 15
По умолчанию Запись на лист Excel одной и той же опции ListBox два раза подряд

Одна процедура получается при обработке события MouseUp, как сообщил EducatedFool.

Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Код
End Sub

Можно копировать из одного столбца ListBox в один столбец на листе Excel и копировать из двух столбцов ListBox в два столбца на листе Excel.
Mishel825 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить несколько копий одной и той же программы? murcot Помощь студентам 4 20.02.2009 11:28
Заменить повторяющиеся символы(которые повторяются два или три раза) в тексте пробелами. Майки Паскаль, Turbo Pascal, PascalABC.NET 3 12.01.2009 17:45
как из одного одной книги экспортировать данные на другой лист mabru Microsoft Office Excel 11 07.01.2009 10:20