Excel VBA質問箱 IV

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

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


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

【35757】コンボボックスによるマクロ起動 わいわい 06/3/12(日) 15:17 質問[未読]
【35785】Re:コンボボックスによるマクロ起動 よろずや 06/3/12(日) 21:01 回答[未読]
【35793】Re:コンボボックスによるマクロ起動 Jaka 06/3/13(月) 13:07 発言[未読]
【35833】Re:コンボボックスによるマクロ起動 わいわい 06/3/14(火) 13:59 お礼[未読]

【35757】コンボボックスによるマクロ起動
質問  わいわい  - 06/3/12(日) 15:17 -

引用なし
パスワード
   コンボボックスの数値選択によるマクロ起動を考えています。
先ずは、下記の要領にてA1とA2の数値が変わったらB1の数値を変えるというマクロを作成しました。
次にシート上に配置したコンボボックス(フォームツールバー)のリンクセルをA1に指定しました。
コンボボックスの選択をすると、A1セル数値は変化しますが、B1セルには、反映されません。どうすれば良いのでしょうか?今回は簡単にするためセルの書換にしていますが、実際には、標準モジュー上のマクロを呼び出す予定です。
宜しくお願いいたします。

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim x As Long, y As Long
  Dim St As String

  If Intersect(Target, Range("A1:A2")) Is _
  Nothing Then Exit Sub
  If Target.Count > 1 Then Exit Sub
  x = Range("a1").Value
  St = "aaa" + Range("A1").Text + Range("A2").Text
  Select Case St
   Case "kiki11": [b1].Value = "aaa11"
   Case "kiki22": [b1].Value = "aaa22"
   Case Else: [b1] = ""
  End Select
End Sub

【35785】Re:コンボボックスによるマクロ起動
回答  よろずや  - 06/3/12(日) 21:01 -

引用なし
パスワード
   イベントが発生してることはmsgboxとかで確認できてますか?

バージョンによってはイベントが発生しません。

【35793】Re:コンボボックスによるマクロ起動
発言  Jaka  - 06/3/13(月) 13:07 -

引用なし
パスワード
   どんなバージョンなのかわかりませんが、97だとイベントが発生しませんでした。
シート保護には反応するんだけど....
こんな感じのコードをコンボボックスにマクロ登録しないとダメですね。

Sub コンボチェンジ()
  With ActiveSheet.Shapes("ドロップ 1").OLEFormat.Object
    MsgBox .List(.ListIndex)
  End With
End Sub

【35833】Re:コンボボックスによるマクロ起動
お礼  わいわい  - 06/3/14(火) 13:59 -

引用なし
パスワード
   よろずや さん、Jaka さん
回答ありがとうございます。

私の環境はWinXP+Excel2000SP-3です。
フォームのコンボボックスでは、イベントが発生しないようなので、コントロールツールボックスのコンボボックスに切り替えたところ以下の式であっけなく実現しました。

Private Sub ComboBox1_Change()
  Macro_test
End Sub

とは言え、コントロールツールボックス自体が、初挑戦だったので、確認に今まで掛かってしまい、お礼が遅くなりました。申し訳ありません。
ついでと言っては失礼ですがコンボボックスについて教えてください。
  A  B  C
1 赤  1  ???
2 青  2
3 黄  3   とシートにある場合

フォームのコンボボックスでは
入力範囲 A1:A3,リンクするセル C1 としたとき ボックスで青を選ぶとC1には『2』が入ります。・・・(1)
一方コントロールツールボックスのほうでは
ListFillRange A1:A3,LinkedCell C1 とすると ボックスで青を選ぶとC1には『青』が入ります。(1)と同様な動作をさせるため ListFillRange A1:B3
BoundColumn 2 としました。これは正しい方法でしょうか?正式又は簡単な方法があれば宜しくお願いいたします。


>どんなバージョンなのかわかりませんが、97だとイベントが発生しませんでした。
>シート保護には反応するんだけど....
>こんな感じのコードをコンボボックスにマクロ登録しないとダメですね。
>
>Sub コンボチェンジ()
>  With ActiveSheet.Shapes("ドロップ 1").OLEFormat.Object
>    MsgBox .List(.ListIndex)
>  End With
>End Sub

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