2й клик и можно что - то выбрать

Программирование на Visual Basic for Applications
78952
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 03.03.2006 (Пт) 16:08
Откуда: russia, murmansk

2й клик и можно что - то выбрать

Сообщение 78952 » 06.03.2006 (Пн) 18:38

Как сделать так, чтобы при двойно щелчке на ячейку появилось окно в котором можно было выбрать из списка значение и это значение появилось в ячейке по которой щелкали?
Код: Выделить всё
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("J12:j6500")) Is Nothing Then
        Cancel = True
        Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!
    End If
End Sub

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 06.03.2006 (Пн) 20:16

По закрытию окна
Код: Выделить всё
Range("A1")="Selected_value"
А я все практикую лечение травами...

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 07.03.2006 (Вт) 15:29

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

в справке набери Using ActiveX Controls on Sheets

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 07.03.2006 (Вт) 18:14

Код: Выделить всё
     
Worksheets(1).OLEObjects.Add ClassType:="Forms.ListBox.1", Link:=False, _
      DisplayAsIcon:=False, Left:=40, Top:=40, _
      Width:=60, Height:=80
      Worksheets(1).OLEObjects("ListBox1").Activate
      Worksheets(1).OLEObjects("ListBox1").Object.List = Array("выбор_1", "выбор_2", "выбор_N")

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 09.03.2006 (Чт) 9:06

или вообще не париться
Код: Выделить всё
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error Resume Next
    If Not Intersect(Target, Range("J12:j6500")) Is Nothing Then
       Cancel = True
        Dim i(1 To 2) As String, j As Byte
        i(1) = "выбор 1": i(2) = "выбор 2"
        j = InputBox("№ варианта" & vbTab & "значение" & Chr(13) & _
         "1" & vbTab & vbTab & i(1) & Chr(13) & _
         "2" & vbTab & vbTab & i(2), "выберите 1 или 2", "2")
        Target = i(j)
    End If
End Sub

78952
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 03.03.2006 (Пт) 16:08
Откуда: russia, murmansk

Сообщение 78952 » 10.03.2006 (Пт) 12:40

Я сделал по др. :)
Код: Выделить всё
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("J12:j6500")) Is Nothing Then
             Cancel = True
        If Target = vbNullString Then
            UF1.Show
        Else
            UF2.Show
         End If
    End If
End Sub

а в форме:
Код: Выделить всё
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ActiveCell = ListBox1.Value
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim n As Single
n = 13
Do Until Sheets("КК").Range("a" & n).Value = ""
ListBox1.AddItem Sheets("КК").Range("a" & n).Value
n = n + 1
Loop
End Sub

тоже просто и красиво :)


Вернуться в VBA

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

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

    TopList