目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
47 / 107 ツリー ←次へ | 前へ→

【157】シート上、フォームのコンボボックス使用例 Jaka 06/10/26(木) 9:55 Excel[未読]
【199】シート上アクティブXコントロールの場合 Jaka 07/7/6(金) 9:28 Excel[未読]

【157】シート上、フォームのコンボボックス使用例
Excel  Jaka  - 06/10/26(木) 9:55 -

引用なし
パスワード
   シート上に
表示 → ツールバー フォーム のコンボボックスがあるとして、
名前は、「ドロップ 1」「ドロップ 2」の場合。

1、
ListFillRangeを使用(セル参照)
コンボボックス右クリック → コントロールの書式設定 →
コントロール → 入力範囲
の場合、

Sub コンボ初期設定()
  ActiveSheet.Shapes("ドロップ 1").OLEFormat.Object.ListFillRange = "Sheet2!A10:A15"
End Sub

Sub コンボクリア()
  ActiveSheet.Shapes("ドロップ 1").OLEFormat.Object.ListFillRange = Clear
End Sub

作ったコンボボックスに下記マクロをマクロ登録(2、と共通で使用できます。)

Sub コンボチェンジ()
  CBXNm = Application.Caller
  With ActiveSheet.Shapes(CBXNm).OLEFormat.Object
    No = .ListIndex
    MsgBox No & " 番目" & vbLf & vbLf & _
       .List(No)
  End With
End Sub

2、
ListFillRangeを使わない方法(配列仕様)

Sub コンボ初期設定配列()
  Dim ListTb As Variant
  'ListTb = Array("A1", 5, "A3", "A4", "A5")
  '           ↑ 数値が入るとだめ。
  '           ↓ 文字ならOK。
  ListTb = Array("A1", "5", "A3", "A4", "A5")
  ActiveSheet.Shapes("ドロップ 1").OLEFormat.Object.List = ListTb
  Erase ListTb
End Sub

Sub コンボクリア()
  ActiveSheet.Shapes("ドロップ 2").OLEFormat.Object.List = vbNullString
End Sub

マクロ登録するコンボチェンジマクロは、1と同じ。

【199】シート上アクティブXコントロールの場合
Excel  Jaka  - 07/7/6(金) 9:28 -

引用なし
パスワード
   シート上アクティブXコントロールとは、
表示 → ツールバー → コントロールツールボックス
の各コントロール。

チェックボックスの場合

Worksheets("Sheet1").OLEObjects("CheckBox1").Object.Value = True

複数のチェックボックスの場合

For i = 1 To 10
  Worksheets("Sheet1").OLEObjects("CheckBox" & i).Object.Value = True
Next

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
47 / 107 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free