
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB6 開発環境のエディタに行番号を表示
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
コンボボックスでドロップダウンリストにしたときに・・・・
Visual Basic(VBA)
-
-
4
frxファイルの役目
Visual Basic(VBA)
-
5
comboboxのクリックイベントについて
Visual Basic(VBA)
-
6
VB6 配列を初期化したい
Visual Basic(VBA)
-
7
テキストボックスの入力制限
Visual Basic(VBA)
-
8
VBでイベント処理を追加するには?
Visual Basic(VBA)
-
9
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
10
VB6.0で データベースの値をコンボボックスに取り込む方法
Visual Basic(VBA)
-
11
フォームを開く時のイベント処理
Visual Basic(VBA)
-
12
VBAから変更した時だけイベントを発生させない方法
Excel(エクセル)
-
13
VB6のコンボボックスのテキストプロパティ
Visual Basic(VBA)
-
14
DoEventsがやはり分からない
Visual Basic(VBA)
-
15
VB6で、長い時間かかる処理実行中の表示の工夫について
Visual Basic(VBA)
-
16
VB6.0 でメニューを作りたいんですが・・・
Visual Basic(VBA)
-
17
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
18
任意のフォームが表示されているかを知りたい
Visual Basic(VBA)
-
19
スプレッドシートの列名変更の件について
Visual Basic(VBA)
-
20
MSFlexGridのデータ表示位置の設定
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual Basic 6.0 コンボボック...
-
(VBA)チェックボックスのclick...
-
【VB】タブ切り替え時のイベント
-
WPFでの時刻入力コントロールに...
-
DirectXのDIK発進について
-
コンボボックスにキー入力をさ...
-
KEYPREVIEW=TRUEについて。意味...
-
VB.NETのDropDownListをReadOnl...
-
テキストボックスの入力文字を1...
-
C++ Builder6のイベントハンド...
-
コマンドボタン(入力)をクリッ...
-
一定時間操作されないと自動で...
-
Excel VBA マクロ実行中のみテンキ...
-
Delphiでキー入力を投げたい
-
Access データ表示 完了時のイ...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
CloseとDisposeの違い
-
UMLでの例外処理
-
Excelシート上のマクロを登録し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
タブキー押下時のイベントをひ...
-
Visual Basic 6.0 コンボボック...
-
Access データ表示 完了時のイ...
-
VB.NETのDropDownListをReadOnl...
-
KEYPREVIEW=TRUEについて。意味...
-
テキストボックスの入力文字を1...
-
(VBA)チェックボックスのclick...
-
Excel VBA マクロ実行中のみテンキ...
-
特定のキーを押すまでループさ...
-
VB.NETでフォームがない...
-
コンボボックスにキー入力をさ...
-
キーイベントを擬似的に発生さ...
-
IEで、BackSpaceで「戻る」機能...
-
フォーカスについてお教えください
-
VB6で電卓を作っているのですが...
-
VB IEブラウザへのキーイベント...
-
一定時間操作されないと自動で...
-
GetKeyStateについて
-
WPFでの時刻入力コントロールに...
おすすめ情報