2010-11-18 185 views
10

ワークシートに埋め込まれているsheet1フォームコントロールのコンボボックスがcombobox_testという名前で、xExcel VBA:フォームコントロールからの値の取得

という値が選択されています。これを押すと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で絶対初心者ですので、できるだけ詳しく説明してください。ありがとう

+0

あなたはどのようなエラーが出るのですか? – Panicos

+0

実行時エラー '438'。オブジェクトはこのプロパティまたはメソッドをサポートしていません。また、 'putItRng.Rows(1)= ActiveSheet.Shapes(" combobox_test ")という行を表示します。値は – Carlos

答えて

6

名前が付いていない私は、これはあなたが望むものであるわからないんだけど、それがスタートです。 Shapeオブジェクトにはエラーの原因となるValueプロパティがありません。 DropDownオブジェクトは廃止予定ですが、引き続き使用できます。

Sub ButtonPressed_sample() 

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

End Sub 
+3

複数の図形をまとめてグループ化すると、グループ内のコントロールがそれらのコレクションオブジェクトに表示されないため、ドロップダウン(およびコンボボックス、ボタンなど)は非推奨です。 このコメントは、この方法(私自身も使用しています)を使用している限り、グループ化された図形にコントロールを入れないようにするための注意です:) – Alain

1
putItRng.Rows(1)= ActiveSheet.combobox_test.value 

は試してみてください。それが仕事doesntの場合

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

その後、あなたのコンボボックスが「Combobox_test」

+0

ですが、同じエラーが表示されます。 – Carlos

+0

ActiveWorkbook .Activesheet(複数のワークブックにそれぞれ1つのActivesheetがあるため)。行(1)は、行1のすべての列の全範囲を示します。これをステップバイステップで実行します。 2つのMsgboxを使用して、問題の実際の原因を見つけてください。一方は左側、もう一方は上記の課題の右側です。それは何が問題なのかを正確に突き止めるでしょう。私はあなたのオブジェクトの命名が間違っていると推測しています。 – jpinto3912

8
Sub QuickSelect_Change() 
     With ActiveSheet.Shapes("QuickBox") 
      MsgBox "My Selected Value " & .ControlFormat.List(.ControlFormat.ListIndex) 
     End With 
    End Sub 
3
ActiveSheet.Shapes("combobox_test").ControlFormat.ListIndex 
+0

これは質問に答えることができますが、なぜそれが正しい解決策であるかを説明する。 –

+0

最高の投票回答はDropDownsコレクションを参照していますが、「複数の図形をグループ化すると、グループ内のコントロールはそれらのコレクションオブジェクトには表示されない」ため、推奨されなくなりました。シェイプコレクションはコンボボックスフォームコントロールを参照するもう1つの手段ですが、Carlos投稿は私のためには機能しませんでした。 – rdg515

+0

私は 'ActiveSheet.Shapes(" combobox_test ")。ControlFormat.Value'を試したところ、同じ結果が得られました。シナリオによっては、これがより適切なコーディングスタイルであると考えられる場合があります。 –

関連する問題