Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6263 / 13644 ツリー ←次へ | 前へ→

【46068】シートに貼り付けたComboBox k.akira 07/1/22(月) 12:26 質問[未読]
【46069】Re:シートに貼り付けたComboBox ichinose 07/1/22(月) 12:37 発言[未読]
【46072】Re:シートに貼り付けたComboBox k.akira 07/1/22(月) 13:33 質問[未読]
【46073】Re:シートに貼り付けたComboBox ichinose 07/1/22(月) 13:52 発言[未読]
【46076】Re:シートに貼り付けたComboBox k.akira 07/1/22(月) 14:47 質問[未読]
【46082】Re:シートに貼り付けたComboBox りん@とおりすがり 07/1/22(月) 16:08 回答[未読]
【46089】Re:シートに貼り付けたComboBox ichinose 07/1/22(月) 18:32 発言[未読]
【46309】Re:シートに貼り付けたComboBox k.akira 07/1/30(火) 10:43 質問[未読]
【46312】Re:シートに貼り付けたComboBox りん@とおりすがり 07/1/30(火) 13:13 発言[未読]
【46316】Re:シートに貼り付けたComboBox k.akira 07/1/30(火) 14:16 お礼[未読]

【46068】シートに貼り付けたComboBox
質問  k.akira  - 07/1/22(月) 12:26 -

引用なし
パスワード
   シートに貼り付けたComboBoxにリストを表示させる方法をどなたか教えてください。フォームの表示方法は出来ます。

【46069】Re:シートに貼り付けたComboBox
発言  ichinose  - 07/1/22(月) 12:37 -

引用なし
パスワード
   ▼k.akira さん:
こんにちは。

>シートに貼り付けたComboBoxにリストを表示させる方法をどなたか教えてください。フォームの表示方法は出来ます。

シートに貼付け可能なコンボボックスには、
コマンドバー「フォーム」のそれと
コマンドバー「コントロールツールボックス」にあるものと二つあります。

必ず、形容をして下さい。

「コントロールツールボックス」のコンボボックスだと思って・・・。

標準モジュールに
'======================================
Sub main()
  With ActiveSheet.OLEObjects("ComboBox1").Object
    .Clear
    .List() = Array("a", "b", "c", "d", "e", "f")
    .ListIndex = 0
    .DropDown
    End With
End Sub


として、当該シートをアクティブにした状態で実行してみて下さい。

【46072】Re:シートに貼り付けたComboBox
質問  k.akira  - 07/1/22(月) 13:33 -

引用なし
パスワード
   ichinose 様 大変有り難う御座います。

コンボボックスはお察しの通り「コントロールツールボックス」に有る物です。

私が知りたいのは標準モジュールのformに使用している様な
例:ComboBox1.RowSource = "stock!$b$3:$b$250"
を使用したいのです。
それで、当該シートをアクティブにせずに異なるシートで
コンボボックスを埋め込み表示後
アクティブセルに埋め込みしたいのですが、教えていただけますでしょうか?

よろしくお願いいたします。

【46073】Re:シートに貼り付けたComboBox
発言  ichinose  - 07/1/22(月) 13:52 -

引用なし
パスワード
   >コンボボックスはお察しの通り「コントロールツールボックス」に有る物です。
>
>私が知りたいのは標準モジュールのformに使用している様な
>例:ComboBox1.RowSource = "stock!$b$3:$b$250"
>を使用したいのです。
この例を記述することも大事ですね!!


>それで、当該シートをアクティブにせずに異なるシートで
>コンボボックスを埋め込み表示後
>アクティブセルに埋め込みしたいのですが、教えていただけますでしょうか?

例として、Sheet1というシートにあるコンボボックス(Combobox1)
にSheet2のセルA1からA5の内容を
リストとして登録したい場合です。

標準モジュールに
'====================================================
Sub set_combo()
  Dim ole As OLEObject
  With Worksheets("sheet1").OLEObjects("combobox1")
    .ListFillRange = "sheet2!a1:a5"
    End With
End Sub

というコードで可能です。

【46076】Re:シートに貼り付けたComboBox
質問  k.akira  - 07/1/22(月) 14:47 -

引用なし
パスワード
   ichinose さん有り難う御座います。

早速例をnewbookでSheet1にコントロールツールボックスの
コンボボックスを張り付け、Sheet2のセルA1からA5に
データを入力してコードを実行しましたが、標準モジュールの

>'====================================================
>Sub set_combo()
>  Dim ole As OLEObject
>  With Worksheets("sheet1").OLEObjects("combobox1")
>    .ListFillRange = "sheet2!a1:a5"
>    End With
>End Sub

が動きません?
他のオブジェクトにもコードの入力が必要なのでしょうか?

お願いいたします。

【46082】Re:シートに貼り付けたComboBox
回答  りん@とおりすがり  - 07/1/22(月) 16:08 -

引用なし
パスワード
   k.akira さん、こんにちわ。

>早速例をnewbookでSheet1にコントロールツールボックスの
>コンボボックスを張り付け、・・・

>>Sub set_combo()
>>  Dim ole As OLEObject
   With Application.ThisWorkbook.Worksheets("sheet1").OLEObjects("combobox1")
>>    .ListFillRange = "sheet2!a1:a5"
>>  End With
>>End Sub

新しいバージョンのエクセルでは、複数ブックが開かれているときは、作業対象を明確にしないとエラーになる事があるようです(絶対にエラーになるとは言い切れないのですが)。動作確認(WinXP,XL2003)

【46089】Re:シートに貼り付けたComboBox
発言  ichinose  - 07/1/22(月) 18:32 -

引用なし
パスワード
   k.akira さん、りんさん、こんばんは。

>が動きません?
>他のオブジェクトにもコードの入力が必要なのでしょうか?
意図した動作をしない場合は、もう少し具体的に記述してください。

例えば、

コード上のxxxxxという箇所で「xxxx」というエラーが発生したとか。

プログラムは正常に終了しているようですが、何も起こりません。
xxxxxxxという動作を期待していたのですが・・・。とか・・・。

k.akira さんの記述では、何が問題なのかわかりません。


りんさんのコードで希望通りならそれでよいのですが・・。

何も配置しない(コンボボックスも)新規ブック
(Sheet1、Sheet2というシート名は 存在する)
の標準モジュールに

'================================================================
Sub Main()
  Dim rng As Range
  With Worksheets("sheet1")
    Set rng = Range("b6:d7")
    With .OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
               Left:=rng.Left, _
               Top:=rng.Top, _
               Width:=rng.Width, _
               Height:=rng.Height)
     
      Worksheets("sheet2").Range("a1:a5").Value = _
                [transpose({"a","b","c","d","e","f"})]
      MsgBox "Sheet1にコンボボックスを配置しました。 実際は、手動で配置してください" _
         & vbCrLf & "Sheet2のセルA1:A5にa,b,c,d,eを入力いしました"
         
     
      .ListFillRange = "=sheet2!a1:a5"
      MsgBox "コンボボックスにリストデータを設定しました"
      .Parent.Activate
      .Object.DropDown
      End With
    End With
End Sub

これをこのブックがアクティブな状態で実行してみてください

【46309】Re:シートに貼り付けたComboBox
質問  k.akira  - 07/1/30(火) 10:43 -

引用なし
パスワード
   ichinoseさん、りんさん、有り難うございます。

腰を痛めて休んでいましたのでご返事が遅くなり
大変申しわけ御座いませんでした。

使用していますOSはWindows XP Home Edition(ver.5.1.2600)
Excelは2003(Ver.11.0)です。

最初のSub set_combo()では、
「実行時エラー`1004`:
WorksheetクラスのOLEObjectsプロパティを取得できません。」でSTOP。

次のSub Main()では、ComboBox1を作成直後に
With .OLEObjects.Addで、「中断モードでは入力できません。」でSTOPです。

私なりに色々テストした結果(ichinoseさんの最初のSub set_combo使用して)
'================================================================
Private Sub ComboBox1_DropButtonClick()
  Dim ole As OLEObject
  With Worksheets("sheet1").OLEObjects("combobox1")
    .ListFillRange = "sheet2!a1:a5"
    End With
End Sub
'================================================================
で動くようになりました。
ありがとう御座いました。

そして次の作業ですが、この"sheet2!a1:a5"のリストがComboBoxに表示され、
セレクトされた(数字や文字)をセルに埋め込みたいのですが
どのようにしたら良いのでしょうか。

どなたか教えてください。

【46312】Re:シートに貼り付けたComboBox
発言  りん@とおりすがり  - 07/1/30(火) 13:13 -

引用なし
パスワード
   k.akira さん、こんにちわ。

sheet1にコントロールツールボックスからコンボボックスをひとつ置いて(Combobox1)、sheet2のa1:a5にリストを作成して以下のマクロを実行

Sub test()
  With Worksheets("sheet1").OLEObjects("combobox1")
    .ListFillRange = "sheet2!a1:a5"
    .LinkedCell = "sheet1!A1"
  End With
End Sub

sheet1のA1のセルにコンボボックスの値が入ります。

【46316】Re:シートに貼り付けたComboBox
お礼  k.akira  - 07/1/30(火) 14:16 -

引用なし
パスワード
   りん@とおりすがり さん
有り難う御座いました。

combobox1〜6までをプロパティで編集して
マクロはリンさんの物をを使用したら出来ました。

勉強になりました。
本当に有り難う御座いました。

6263 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free