ComboBox по клику в ячейке Excel?

Программирование на Visual Basic for Applications
Deja-vu
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 02.11.2004 (Вт) 22:02

ComboBox по клику в ячейке Excel?

Сообщение Deja-vu » 25.04.2005 (Пн) 23:14

Мир всем!
У меня задача - по клику в к-либо ячейке Excel появляется combobox в той же ячейке (желательно, чтобы он по размерам также был как и ячейка). Я выбираю в списке к-либо вариант. Как только я по нему кликнул, комбобокс исчезает, а в ячейке остается то, что я выбрал. :)

Ну, комбобокс я могу создать.
Не могу врубиться, как его вызвать именно в ячейку?? :shock:
Кто-нибудь, подскажите пожалуйста.

Stas-ka
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 28.02.2005 (Пн) 15:31
Откуда: Красноярск

Сообщение Stas-ka » 26.04.2005 (Вт) 5:59

А зачем париться и делать комбобоксы? Не проще сделать проверку по списку допустимых значений (Меню Данные-Проверка, выбрать Список значений), которые уже перечислены где-то на листе. По-моему, тебе это подойдёт. :roll:

Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Сообщение Brudda » 26.04.2005 (Вт) 9:36

Привет.
А ты не хочешь сделать так:
свойство ShowDropButtonWhen установить 1 - fmShowDropButtonWhenFocus.
ComboBox будет выглядеть как поле TextBox а при помещении в него курсора - как ComboBox
Ну, а размеры и расположение или ручками, или через свойства Top, Left, Width, Height.
Brudda

Deja-vu
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 02.11.2004 (Вт) 22:02

Сообщение Deja-vu » 27.04.2005 (Ср) 23:04

Brudda
Stas-ka
Спасибо вам за хорошие советы. Но у меня цель вот какая. Чтобы в любой ячейке, где юзер кликнет в excel вызвался combobox и он мог бы выбрать по списку информацию... Дело в том, что очень много вариантов есть... их невозможно впихнуть иным путем, иначе бедный юзер все напутает. :D
Может быть, хоть кто-то имеет идеи, как узнать экранные координаты ячейки, где находится в даный момент курсор?

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 28.04.2005 (Чт) 19:55

combobox можно разместить в контекстном меню или своём Popupmenu, вызываемым правой кнопкой.
И тогда можно не искать положение курсора.

Deja-vu
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 02.11.2004 (Вт) 22:02

Сообщение Deja-vu » 28.04.2005 (Чт) 23:53

Димитрий А контекстное меню можно сделать так, чтобы в excel работало, да? В смысле, я могу добавить к этому меню свою строку, и подменю, чтобы юзер мог выбрать?
А можно ли это меню изменять динамически, то есть, в зависимости от того, на какую ячейку юзер кликнул? :)
Если это так, то это очень даже хороший вариант!

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 29.04.2005 (Пт) 17:42

Посмотри пример
http://dimit.pochta.ru/excel/meny_combo.zip
Добавить свои пункты можно во все командные панели Excel,
в том числе и Popup(всплывающие).

Deja-vu
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 02.11.2004 (Вт) 22:02

Сообщение Deja-vu » 29.04.2005 (Пт) 22:40

Димитрий
Ух ты! Спасибо большое за пример, Димитрий! Очень подходит. А где можно еще инфу найти об этом? Хочу добавить второй комбобокс в меню, и немного настроить его. И кое что не совсем понятно, как работает... Вы откуда инфу черпали? :)

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 02.05.2005 (Пн) 7:12

Джон Уокенбах "Профессиональное прграмирование на VBA в Excel 2002"

AlexMin
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 05.05.2005 (Чт) 9:45

Сообщение AlexMin » 05.05.2005 (Чт) 9:50

ЛОВИ:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If (Selection.Column = n) And (Selection.row = m) _
Then
cbox.Clear
cbox.AddItem ....
cboxSlot.Left = Selection.Left
cboxSlot.Top = Selection.Top
cboxSlot.Visible = True
Cancel = True
End If
End Sub

' cbox
Private Sub cbox_Change()
If cbox.Visible Then
Selection.FormulaR1C1 = cboxSlot.Text
cbox.Visible = False
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If cbox.Visible Then cbox.Visible = False
End Sub

AlexMin
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 05.05.2005 (Чт) 9:45

Сообщение AlexMin » 05.05.2005 (Чт) 9:51

РЕДАКЦИЯ, НО СМЫСЛ ПОНЯТЕН
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If (Selection.Column = n) And (Selection.row = m) _
Then
cbox.Clear
cbox.AddItem ....
cbox.Left = Selection.Left
cbox.Top = Selection.Top
cbox.Visible = True
Cancel = True
End If
End Sub

' cbox
Private Sub cbox_Change()
If cbox.Visible Then
Selection.FormulaR1C1 = cbox.Text
cbox.Visible = False
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If cbox.Visible Then cbox.Visible = False
End Sub

Deja-vu
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 02.11.2004 (Вт) 22:02

Сообщение Deja-vu » 05.05.2005 (Чт) 19:40

Ух ты, мужики, спасибо большое! Хорошие люди на этом форуме. :D


Вернуться в VBA

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

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

    TopList