![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
'コンボボックスに追加
Private Sub Form_Load()
Combo1.AddItem "AAA"
Combo1.AddItem "BBB"
Combo1.AddItem "CCC"
End Sub
'コンボボックスの入力欄に直接入力した場合
Private Sub Combo1_Change()
Debug.Print Combo1.Text
End Sub
'リストから選択して、Changeイベントを発生
Private Sub Combo1_Click()
Call Combo1_Change
End Sub
No.1
- 回答日時:
MSDNにChangeイベントはTextボックスの内容を変更した際に発生するものであり 矢印キーやドロップダウンリストから選択された場合は発生しないと明記されています
どうしてもということであれば CBN_SELCHANGEメッセージ捕まえてChangeイベントを起こすしかないようです
Combo1_ChangeをPrivateからPublicに変更します
標準モジュールを追加して
Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias _
"CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const GWL_WNDPROC = (-4)
Public Const CBN_SELCHANGE = 1
Global lpWndProc As Long
Public Function ComboProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim NM As Long
ComboProc = CallWindowProc(lpWndProc, hwnd, uMsg, wParam, lParam)
NM = (wParam And &HFFFF0000)
If NM = CBN_SELCHANGE * &H10000 Then
Form1.Combo1_Change
End If
End Function
を記述します
Form1のLoadイベントとQueryUnLoadイベントを追加します
Loadイベントで
lpWndProc = SetWindowLong(Combo1.hwnd, GWL_WNDPROC, AddressOf ComboProc)
QueryUnloadイベントで
SetWindowLong Combo1.hwnd, GWL_WNDPROC, AddressOf lpWndProc
を記述します
これで選択を変更した際に Changeイベントが呼ばれます
ただし、WindowProcを書き換えているのでVB上から実行した際にブレークポイントなどを設定していると VBのシステム自体が落ちてしまいます
Debug.Printなどで 変数をインディエイトに表示することは可能です
回答ありがとうございました。
API関係は詳しくない為、このような方法があるとは知りませんでした。
専門的な知識に感謝いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Application.InputBoxの表示形式 2 2022/08/09 22:32
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- その他(プログラミング・Web制作) PythonのTkinterイベントについて 2 2022/12/10 23:00
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- Visual Basic(VBA) VBA ComboBoxについて 2 2022/10/21 12:15
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- マウス・キーボード パソコンのゲームで押しずらいキーがあったのでchange keyというキーの割り当てを変える ソフト 1 2023/03/17 09:43
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
VB6 配列を初期化したい
Visual Basic(VBA)
-
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
【VB6.0】 あるフォームから他のフォームへ値を受け渡したい
Visual Basic(VBA)
-
-
4
frxファイルの役目
Visual Basic(VBA)
-
5
VB6とVB.NETでNullの扱いが違う?
Visual Basic(VBA)
-
6
テキストボックスの入力制限
Visual Basic(VBA)
-
7
comboboxのクリックイベントについて
Visual Basic(VBA)
-
8
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
9
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
10
VB6.0 ファイルの一括読込み
Visual Basic(VBA)
-
11
配列を関数に渡す方法
Visual Basic(VBA)
-
12
vb6のVSFlexGridで選択行、列の値を取得し構造体に入れたい
Visual Basic(VBA)
-
13
VBプログラムの終了
Visual Basic(VBA)
-
14
定数配列の書き方
Visual Basic(VBA)
-
15
他のモジュールのプロシージャの呼び出したい。
Visual Basic(VBA)
-
16
VB6のwinsockでconnectできない
Visual Basic(VBA)
-
17
VB6のListの使い方
Visual Basic(VBA)
-
18
VBPをダブルクリックするとたまに「メソッドは失敗しました " オブジェクト」と出るのですが?
Visual Basic(VBA)
-
19
VisualBasic6.0のFormat関数でmSecを表示したい
Visual Basic(VBA)
-
20
コンボボックス内の文字サイズ変更
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タブキー押下時のイベントをひ...
-
ユーザーフォームのテキストボ...
-
VB.NETのDropDownListをReadOnl...
-
【VB】タブ切り替え時のイベント
-
複数のテキストボックスのカン...
-
EXCEL VBA でIEを制御して、INP...
-
コンボボックスにキー入力をさ...
-
コマンドボタン(入力)をクリッ...
-
VB6で電卓を作っているのですが...
-
KEYPREVIEW=TRUEについて。意味...
-
【Mouse Down】キーリピートを...
-
特定のキーを押すまでループさ...
-
ListViewで、PageDownキーイベ...
-
javascript スムーズな動作
-
WPFでの時刻入力コントロールに...
-
Excel VBA マクロ実行中のみテンキ...
-
Access データ表示 完了時のイ...
-
EXCEL VBA----ユーザーフォーム...
-
SelectionChangeCommitted
-
VB.NETでフォームがない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
特定のキーを押すまでループさ...
-
一定時間操作されないと自動で...
-
Visual Basic 6.0 コンボボック...
-
タブキー押下時のイベントをひ...
-
WPFでの時刻入力コントロールに...
-
コンボボックスにキー入力をさ...
-
(VBA)チェックボックスのclick...
-
VB.NETのDropDownListをReadOnl...
-
Excel VBA マクロ実行中のみテンキ...
-
EXCEL VBA でIEを制御して、INP...
-
キーイベントを擬似的に発生さ...
-
KEYPREVIEW=TRUEについて。意味...
-
テキストボックスの入力文字を1...
-
VB.NETでフォームがない...
-
エクセルVBAのテキストボック、...
-
IEで、BackSpaceで「戻る」機能...
-
C# WMPメディアの終了検知 その2
-
複数のテキストボックスのカン...
-
コマンドボタン(入力)をクリッ...
おすすめ情報