2017-02-15 18 views
0

私はVBAコードでコンボボックスを作成しました。私はComboBoxで項目を選択すると、ここでComboBoxから値を取得する

Sub CreateFormControl() 

ActiveSheet.DropDowns.Add(0, 0, 100, 15).Name = "ComboBox1" 
ActiveSheet.Shapes("ComboBox1").ControlFormat.RemoveAllItems 

Dim i As Integer 
With ActiveSheet.Shapes("ComboBox1").ControlFormat 
    For i = 1 To 25 
     .AddItem i 
    Next i 
End With 
ActiveSheet.Shapes.Range(Array("ComboBox1")).Select 
Selection.OnAction = "ComboBox1_Change" 
Range("B2").Select 

End Sub 

問題は、ある、それは

実行時エラー424オブジェクトが表示されません

を必要と私を与えます選択された値私も宣言をSub CreateFormControl() Public Sub CreateFormControl()に変更しようとしましたが、それでも動作しません。

Sub ComboBox1_Change() 

MsgBox (ComboBox1.Value) 'The error is here 

End Sub 

答えて

2

Worksheets("YoutSheetName")のように、qualifed WorksheetActiveSheetを交換しようとすると、以下のコードを試してみてください。以下は

Sub ComboBox1_Change() 

Dim ws As Worksheet 
Dim MyDropDown As DropDown 

' try not to use ActiveSheet, replace "Sheet1" with your sheet's name 
Set ws = Worksheets("Sheet1") ' ActiveSheet 
Set MyDropDown = ws.Shapes("ComboBox1").OLEFormat.Object ' <-- set my Object with "ComboBo1" drop-down 

MsgBox MyDropDown.List(MyDropDown.ListIndex) '<-- display the value of the selected item 

End Sub 

(ちょうど完全修飾オブジェクトを使用)ActiveSheetSelectSelectionを使用せずにWorksheetに新しいDropDownを追加するには、「クリーン」な方法です。

サブCreateFormControlコード

Option Explicit 

Sub CreateFormControl() 

Dim MyDropDown As DropDown 
Dim i As Long 

' set the drop-down object to the new created drop-down (replace "Sheet1" with your sheet's name) 
Set MyDropDown = Worksheets("Sheet1").DropDowns.Add(0, 0, 100, 15) 

' modify the drop-down properties 
With MyDropDown 
    .Name = "ComboBox1" 

    .RemoveAllItems 
    For i = 1 To 25 
     .AddItem i 
    Next i 

    .OnAction = "ComboBox1_Change" 
End With 

End Sub 
+0

おかげシャイそれが動作します。素晴らしい... – Vincent

+0

@DaveRyanあなたは大歓迎です:) –

関連する問題