Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
1

Запись на лист Excel одной и той же опции ListBox два раза подряд

20.10.2009, 01:56. Показов 3095. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброе время суток !

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

Visual Basic
1
Worksheets("Лист1").Cells(intI, 1).Value=UserForm1.List1
Для того чтобы записать подряд (в следующую строку) одну и ту же опцию необходимо закрыть форму вместе с ListBox, после чего та же опция становится доступной для записи на лист.

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

Visual Basic
1
2
3
Worksheets("Лист1").Cells(intI, 1).Value=UserForm1.List1
 
UserForm1.List1.Свойство.Value = Значение (первоначальное состояние)
С уважением.

Добавлено через 1 час 32 минуты
Использую событие Click

Visual Basic
1
2
3
4
5
Private Sub ListBox1_Click()
      ....   .....   .....
Worksheets("Лист1").Cells(intI, 1).Value=UserForm1.ListBox1
   .....  .....  .....
End Sub
При первом клике срабатывает, опция выделяется, клик по выделенной опции не срабатывает. Необходимо убрать выделение опции для записи на лист два раза подряд одной и той же опции.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2009, 01:56
Ответы с готовыми решениями:

Ноутбук не заряжается два раза от одной и той же розетки
Даже не знаю, что в поиске вбивать, чтобы найти похожие проблемы ) Ноутбук Asus N76V не...

Появляется bsod каждый день 2-3 раза с одной и той же ошибкой
ВОТ ОТКРЫЛ В ДЕБАГГЕРЕ Microsoft (R) Windows Debugger Version 6.12.0002.633 X86 Copyright...

Открытия нескольких ссылок, создаваемых в цикле, подряд, в одной и той же вкладке
Собственно код var id = 49237813; var k = 14864; var i; var n=6; for (i=0; i<n; i++) {...

Скопировать один лист из одной книги excel в другую книгу excel
Мне нужно скопировать 1 лист из одной книги excel в другую книгу excel. Именно лист, а не диапазон...

10
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
29.10.2009, 00:04  [ТС] 2
По другому этот вопрос можно сформулировать так:

Какой код необходимо вписать в процедуру обработки события ListBox1_MouseDown (см. ниже) для того, что бы кликом левой кнопкой мыши по опции ListBox на форме можно было эту опцию записать на лист Excel ? И, в частности, два раза подряд.


Visual Basic
1
2
3
4
5
6
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 
код?
 
Worksheets("Лист1").Cells(1, 1).Value = UserForm1.ListBox1
End Sub
0
3896 / 899 / 122
Регистрация: 16.04.2009
Сообщений: 1,825
29.10.2009, 14:46 3
Visual Basic
1
2
Worksheets("Лист1").Cells(1, 1).Value = UserForm1.ListBox1
Worksheets("Лист1").Cells(2, 1).Value = UserForm1.ListBox1
Чет так и не понял вопрос.
0
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
29.10.2009, 19:16  [ТС] 4
Toxa33rus! Спасибо за предложенный вариант.

Не подходит. Согласно предложенного кода выбранная опция ListBox будет всегда записываться два раза подряд. В подавляющем большинстве случаев опцию ListBox достаточно записать один раз, и лиш в редких случаях необходимо записать одну и туже опцию два раза подряд. Код должен соответствовать такому сценарию.
Один из вариантов решения может быть такой:

Visual Basic
1
2
3
4
5
6
7
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
Т. е. используются две процедуры. Работает в принципе не плохо, но возможно есть код из одной процедуры ?!
0
3896 / 899 / 122
Регистрация: 16.04.2009
Сообщений: 1,825
29.10.2009, 19:24 5
Повторюсь:
Цитата Сообщение от Toxa33rus Посмотреть сообщение
Чет так и не понял вопрос.
0
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
29.10.2009, 19:59  [ТС] 6
Вопрос был такой - как записать, при необходимости, одну и ту же опцию ListBox1 на лист Excel два раза подряд ? Т. е как повторно записать на лист Excel, при необходимости, выбранную при первом клике опцию. Или по другому. Как програмно реализовать сценарий:
1. Клик по опции "а" в списке , запись на лист опции "а";
2. Повторный клик по опции "а" в списке , запись на лист опции "а".
0
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
29.10.2009, 21:14 7
Я кажись воткнула, правда тоже не сразу. Там в коде в процедуре MouseDown курсок листбокса сбрасывается, уберите из процедуры строчку
Цитата Сообщение от Mishel915 Посмотреть сообщение
ListBox1.ListIndex = -1
и тогда будет возможность кликнуть второй раз, и запись добавится снова, если конечно в коде, который тут
Цитата Сообщение от Mishel915 Посмотреть сообщение
Private Sub ListBox1_Click()
Код
End Sub
положение ячейки для записи сдвигается. Но происходит ли там это, я знать не могу, ибо ещё не умею читать такие коды, как
Цитата Сообщение от Mishel915 Посмотреть сообщение
Код
1
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
29.10.2009, 23:15  [ТС] 8
Abu ! Спасибо за поддержку.

Процедура

Visual Basic
1
2
3
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
возвращает ListBox, в состояние, в котором возможно срабатывание повторного клика по уже выделенной опции. Без этой процедуры повторный клик по выделенной опции не срабатывает.
Более естественно наоборот - вписать

Visual Basic
1
ListBox1.ListIndex = -1
во вторую процедуру т. е. :

Visual Basic
1
2
3
4
Private Sub ListBox1_Click()  
Код
ListBox1.ListIndex = -1
End Sub
Однако накая вставка приводит к небольшому зацикливанию.
Пишу слово "Код" вместо конкретного кода из-за того, что могут быть разные коды - копирование из одного столбца ListBox в один столбец на листе Excel и копирование из двух столбцов ListBox в два столбца на листе Excel. Второй вариант копирования сложнее первого.
0
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
30.10.2009, 22:56 9
Ничё не понятно. Давайте сюда полностью код, если очень большой, то прикрепите файлом. Посмотрим. Только во вложение отметьте комментариями проблемные участки кода, те, в которых возникают проблемы, и укажите какие именно проблемы возникают. Я не могу понять, какую функцию тут выполняет ListBox1.ListIndex = -1?
0
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
30.10.2009, 23:53  [ТС] 10
Полагаю так - если в коде записано ListBox1.ListIndex = -1, то елемент управления ListBox отображается без предварительно выбранной опции, следовательно, второй клик сработает и по выбранной опции при первом клике.
0
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
01.11.2009, 13:09  [ТС] 11
Abu. Вы правы !

Можно без

Visual Basic
1
ListBox1.ListIndex = -1
Для этого необходимо заменить MouseDown на MouseUp.
Два клика подряд по одной и той же опции ListBox срабатывают в такой одной процедуре:

Visual Basic
1
2
3
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Код
End Sub
0
01.11.2009, 13:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2009, 13:09
Помогаю со студенческими работами здесь

Цикл while выполняется два раза подряд
Есть такой код, у меня этот цикл выполняется 2 раза за одно нажатие клавиши, в чем может проблема?...

Выгрузить таблицу из ListBox на лист в excel
Здравствуйте, такая проблема, есть 2 ListBox. В первом список всех возможных видов работ (они...

Symbol LS2208 считывает штрих-код два раза подряд
Здравствуйте. Есть 1С 8,3 Розница 1 и сканер штрих-кодов Symbol LS2208. Сканер подключен через...

Если кнопка нажата более чем два раза подряд
Здравствуйте! Пишу несложный калькулятор и возникла небольшая проблема: Допустим я складываю числа...

Монету бросают, пока два раза подряд не выпадет герб
Монету бросают, пока два раза подряд не выпадет герб. Найти вероятность того что будет сделано n...

Два адреса одной и той же страницы
Просматривая ошибки в Google админ увидел повторяющиеся одинаковый тайтл ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru