web-dev-qa-db-ja.com

Excel-VBA:フォームコントロールから値を取得する

ワークシートに埋め込まれています_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の初心者ですので、できるだけ詳しく説明してください。ありがとう

11
Carlos

これがあなたの望むものかどうかはわかりませんが、それは始まりです。 Shapeオブジェクトには、エラーの原因であるValueプロパティがありません。非推奨のDropDownオブジェクトがありますが、まだ使用可能です。

Sub ButtonPressed_sample()

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

End Sub
7
Dick Kusleika
   Sub QuickSelect_Change()
        With ActiveSheet.Shapes("QuickBox")
            MsgBox "My Selected Value " & .ControlFormat.List(.ControlFormat.ListIndex)
        End With
    End Sub
9
Paul
ActiveSheet.Shapes("combobox_test").ControlFormat.ListIndex
3
rdg515

前に述べたように、ShapeComboBoxにはValueプロパティがありません。

ShapeオブジェクトのDrawingObjectプロパティを使用して、CheckBoxFormControlオブジェクトを取得します。このCheckBoxオブジェクトは、他のFormControlと同じように使用できます。

また、DrawinObjectを使用して、ShapeオブジェクトからComboBoxオブジェクトを取得できる必要があります。

選択したテキストを取得したい場合は、次のコードを切り取ってみてください。

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
1
Stiebl
putItRng.Rows(1)= ActiveSheet.combobox_test.value

試してください:

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

それが機能しない場合、コンボボックスの名前は「Combobox_test」ではありません

1
Patrick