- ベストアンサー
タブのページを切り替えたらイベントを発生させたい
図のようにフォーム上にタブを乗せました。 ページ1とページ2があるのですが ページ2がアクティブになったら(ページ2をクリックしたら)イベントを発生させたいのですが、どうすればいいでしょうか? Private Sub ページ2_Click() MsgBox "ページ2_Click" End Sub として実験してみましたが タブの部分(ページ2と書かれているつまみの部分)にカーソルを当てて、アクティブにしただけではダメで つまみの下をクリックしないと発生しませんでした。 なのでページ1からページ2を上にしてイベントを発生させるには 1回目→つまみの部分をクリック 2回目→つまみの下の部分をクリック と言うように2回クリックしないとイベントが発生しません。 理想はつまみの部分をアクティブに(クリック)すると イベントを発生させたいです。 よろしくお願いします。
- qwfgjo
- お礼率100% (282/282)
- オフィス系ソフト
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
タブコントロールにChangeイベントがあります。 また、タブのValueプロパティを見れば表示ページが分かります。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17068)
#1でお答えが出ていますが エクセルVBAでテストをやりました例ですが、 ユーザーフォーム上にマルチページを2ページ作りました。 Private Sub MultiPage1_Change() MsgBox "multipage" & MultiPage1.Value + 1 & "が選択されました" End Sub で切り替えるごとに、選択したページ番号を表示します。 ーー また UserForm1 で Private Sub UserForm_Click() If UserForm1.MultiPage1.Value = 1 Then UserForm1.MultiPage1.Value = 0 Else UserForm1.MultiPage1.Value = 1 End If End Sub を入れると、ユーザーフォーム上のクリックで、マルチページが2つしかない場合は、相互に入れ替わります。
お礼
ありがとうございます。参考になりました。
関連するQ&A
- コンボボックス ▼ボタンをクリックしたらイベント
コンボボックスのクリックイベントについて。 コンボボックスの▼ボタンをクリックしたらイベントを発生させたいのですが Private Sub コンボ0_Click() MsgBox "" End Sub として、▼ボタンを押しても無反応です。 どうやらClickイベントは値が入力されたら発生するようですが 値を入力する前に、▼ボタンでプルダウンで値を入力しようとしたとき位 発生させるにはどうすればいいでしょう? GotFocusイベントだと、▼ボタン以外の部分に触れてもイベントが発生してしまいます。
- ベストアンサー
- オフィス系ソフト
- 今発生しているイベントのコントロール名を取得
エクセルです 例えば、シートにコマンドボタンを一つ設置して、クリックイベントで Private Sub CommandButton1_Click() MsgBox "CommandButton1が押されました" End Sub こうしたら、コマンドボタン1を押した時に、 "CommandButton1が押されました"が表示されますが、 CommandButton1の部分を変数みたいなのにすることはできますか? MsgBox Me.Name & "が押されました" だとシート名が取得されるし MsgBox Me.Control.Name & "が押されました" や MsgBox Me.ActionControl.Name & "が押されました" だとエラーになります。
- ベストアンサー
- オフィス系ソフト
- 現在アクティブなタブのページ名を取得したい
アクセス2007のVBAについて質問します。 図のようにフォームにタブとコマンドボタンを設置しました。 コマンドボタンを押すと、現在アクティブなページ番号を表示させたいです。 今は Private Sub コマンド5_Click() Dim i As Long MsgBox "現在アクティブなタブはページ" & i & "です。" End Sub としていますが どういうVBAコードを書けば 現在アクティブなタブのページ名を取得できるのでしょうか? アドバイスよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 任意のタブのページをアクティブにするには
アクセス2007です。 フォームにタブコントロール(タブ0)を置きました。 テキストボックス(テキスト_ページ番号)とコマンドボタン(コマンド_移動)も置いたのですが、 コマンドボタンをクリックしたら、 テキストボックスに入ってる値のページ番号に移動するプログラムを組みたいのですが コードが分かりません。 例えば、テキストボックスに「2」と入力して、コマンドボタンを押したら、 ページ2が選択され前面に表示されるようにしたいです。 Private Sub コマンド_移動_Click() Me!タブ0.Pages(Me.テキスト_ページ番号.Value).SetFocus End Sub としてみたのですが、エラーになってしまいます。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 不要なイベントを削除したい
フォームにコマンドボタン(名前:コマンド0)を置いて、 [イベント プロシージャ]にしてクリックするとVBE画面にプロシージャーが作成されますよね。 しかしそのコマンドボタンの名前を変更して(新しい名前:新コマンド0)、さっきと同じように [イベント プロシージャ]にしてクリックすると新たなプロシージャの型が作成されますよね。 Private Sub コマンド0_Click() End Sub Private Sub 新コマンド0_Click() End Sub こんなかんじで。 そんな事を一杯やり過ぎて、 Private Sub コマンド0_Click() End Sub の方がいっぱい余ってる?浮いてる?イベントに紐づいてない状態なのですが、 量が多すぎてどれが不要なプロシージャーなのかわからないのですが、 一気に削除する方法はありますか? 別にほっといても問題ないとは思うのですが、不要なものは削除したいです。
- ベストアンサー
- オフィス系ソフト
- 標準モジュールとイベントの質問
初めて質問します。 ビジュアルベーシックで標準モジュールで ボタンのクリックイベントを実行したいのですが どうやってプログラムすればいいんでしょうか? 今の会社に入っていきなりVBの仕事させられて とっても困っています。 Private Sub Frm1Command1_Click() Call Module1.Frm1Command1_Click End Sub こんな書き方じゃなくて、標準モジュール内で Public Sub Command1_Click() MsgBox "sine" End Sub って書いて実行できるようにしなくてはダメなんです。 どうすればいいんでしょうか? もしかして無理なんでしょうか? これ、上司の嫌がらせだったらイヤですね・・・。
- 締切済み
- Visual Basic
- フォームモジュール イベントが発動しない半角→全角
コマンドボタンのコントロール名に「カード」(←これは半角です)とつけて、クリックイベントのプロシージャーを紐づけようとしたら、 Private Sub カード_Click() End Sub になってしまい、そのコマンドボタンをクリックしてもイベントが発生しません。 Private Sub カード_Click()の部分にブレークポイントを設置しても、通過されません。 都合上全て半角でコントロール名をつけてしまったため、コントロール名を変えたくないのですが VBAのフォームモジュールで「カード」(←これは半角です)とすると、 勝手に全角になってしまうのですが、 この機能を止める方法はありますか?
- ベストアンサー
- オフィス系ソフト
- VB6でClickイベントを一時的に削除したい
お世話になります VB6で二つのコンボックス内でお互いのリストを編集する処理を作りたいのですが、 イベントを止めないと、編集時に相手のコンボックスにClickイベントが発生して無限ループになってしまいます。 そこでRemoveHandler、AddHandlerで一時的にイベントを停止させたいのですが、 今度は「メソッドまたはデータメンバが見つかりません。」のエラーが出てしまいます。 ※Me.を付けても同じ結果でした どのように記述したらClickイベントを止められますか? Private Sub Combo1_Click() RemoveHandler Combo2.Click, AddressOf Combo2_Click ここでCombo2の編集 AddHandler Combo2.Click, AddressOf Combo2_Click End Sub Private Sub Combo2_Click() RemoveHandler Combo1.Click, AddressOf Combo1_Click ここでCombo1の編集 AddHandler Combo1.Click, AddressOf Combo1_Click End Sub
- ベストアンサー
- Visual Basic
- アクセスのイベント記述について。
アクセスで登録ボタンをコントロールウィザードで作ったのですが、登録と同時にそのフォームを閉じるにはどうしたらよいでしょうか。現在の登録ボタンのイベント記述は下記のとおりです。よろしくお願いいたします。 Private Sub 登録_Click() On Error GoTo Err_登録_Click DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Exit_登録_Click: Exit Sub Err_登録_Click: MsgBox Err.Description Resume Exit_登録_Click End Sub
- ベストアンサー
- オフィス系ソフト
- VBAから変更した時だけイベントを発生させない方法
Excel VBA で、コンボボックスの選択をユーザーが変更した時はイベントハンドラが呼び出されて処理をしていますが、VBAのコードからコンボボックスの選択を変更した時には、このイベントハンドラが呼び出されないようにしたいのですが、どのように記述すればよいでしょうか。 例えば、下記のコードの (A) の部分で、VBAのコードからコンボボックスの選択を変更していますが、ここでイベントが発生しないようにしたいのですが、Application.EnableEvents = False を記述してもイベントが発生していますがなぜでしょうか。どのように記述すれば (A) の部分でイベントが発生しなくなりますでしょうか。 よろしくお願いします。(Windows7 , Excel2010 ) ---Module1---------- Option Explicit Sub main() UserForm1.Show End Sub ---UserForm1-------- Option Explicit Private Sub UserForm_Initialize() Dim i As Integer ComboBox1.Style = fmStyleDropDownList For i = 1 To 30 ComboBox1.AddItem Format(i, "00") Next i End Sub Private Sub CommandButton1_Click() Dim num As Integer Dim index As Integer num = ComboBox1.ListCount index = ComboBox1.ListIndex If index = num - 1 Then Application.EnableEvents = False ComboBox1.ListIndex = -1 '<----------(A) Application.EnableEvents = True Else ComboBox1.ListIndex = index + 1 End If End Sub Private Sub ComboBox1_Change() MsgBox ("ComboBox1_Changeイベント発生") End Sub ------------------------------------
- ベストアンサー
- Excel(エクセル)
お礼
できました! ありがとうございます。