Excel-VBA: получение значений из элементов управления формы - PullRequest
11 голосов
/ 19 ноября 2010

Внедрено в лист sheet1 У меня есть комбинированное окно управления формой с именем combobox_test, и в дополнение к этому выбрано значение x

, я также вставил кнопку, которая при нажатиия хочу, чтобы он взял значение combobox_test и поместил его в something.Rows(y).Но я не могу заставить его работать, и я немного расстроен.Может быть, вы можете указать мне правильное направление

Sub ButtonPressed_sample()
    Dim value As String

    Set putItRng = Range("theCells")        
    putItRng.Rows(1) = ActiveSheet.Shapes("combobox_test").Value        
End Sub

Любой совет?Я абсолютный новичок в VBA, поэтому, пожалуйста, будьте как можно подробнее.Спасибо

Ответы [ 5 ]

9 голосов
/ 15 декабря 2010
   Sub QuickSelect_Change()
        With ActiveSheet.Shapes("QuickBox")
            MsgBox "My Selected Value " & .ControlFormat.List(.ControlFormat.ListIndex)
        End With
    End Sub
7 голосов
/ 19 ноября 2010

Я не уверен, что это то, что вы хотите, но это начало. У объекта Shape нет свойства Value, которое является источником ошибки. Существует объект DropDown, который устарел, но все еще доступен.

Sub ButtonPressed_sample()

    Set putitrng = Range("theCells")
    putitrng.Rows(1) = ActiveSheet.DropDowns("combobox_test").value

End Sub
3 голосов
/ 10 января 2014
ActiveSheet.Shapes("combobox_test").ControlFormat.ListIndex
1 голос
/ 19 ноября 2010
putItRng.Rows(1)= ActiveSheet.combobox_test.value

Попробуйте:

activesheet.cells(1,putItRng.column).value=activesheet.combobox_test.value

Если это не сработает, ваш комбинированный список не будет назван "Combobox_test"

0 голосов
/ 18 октября 2018

Как уже говорилось ранее, Shape ComboBox не имеет свойства Value.

Я использую свойство DrawingObject объекта Shape для получения объекта CheckBox FormControl.Этот объект CheckBox может затем использоваться как любой другой FormControl.

Вы также можете использовать DrawinObject для получения объекта ComboBox из объекта Shape.

Если вы хотите получить выделенный текст, вы можете попробовать следующий код:

Dim sh as Shape
Dim cB as ComboBox
For Each sh In ws.Shapes
    If sh.Type = msoFormControl Then
        If TypeOf sh.DrawingObject Is ComboBox Then
            Set cB = sh.DrawingObject
            ... 
            your code for getting the Data from ComboBox
            ...
        End If
    End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...