• ベストアンサー

VBA:イベントの準備を別のイベントにより行いたい。詳しくは↓↓↓↓↓↓↓↓↓↓↓↓↓

VBAのイベントについて質問です。イベント1と勝手に私が定義したイベント処理があると致します。通常は、ある動作の後イベント1が発生する仕組みですが、これを例えばKYE[t]を押すという動作により始めて、イベント10が起動できる準備に入り、さらにある別の動作に入ると初めてイベント1が動作するというようにしたいです。 私は大まかには以下の二つの連結で成立つと考えています。宜しくお願い致します。 1.Application.OnKey "^{t}", "イベント1" 2.Private Sub Worksheet_Change(ByVal Target As Excel.Range) '⇒例としてこれをイベント1とする。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

フラグ系は 単純にスコープ範囲の変数を自分で確保するか 引数が渡せるサブルーチンを使って、 処理したよ!!って証拠の値を独自規格で作りそれを 変数に格納するで条件にまっちしたら該当のイベントを実行する方法 イベントの強制コールは 単純にサブルーチンを呼ぶ方法となんらかわりませんよ。 手元に今開発環境が無いので 実例があげれない・・・・

e-l
質問者

補足

有難う御座います。強制コールまで教えていただいてよろしいでしょうか。一応自分なりにやってみました。しかし、CALLするイベントのサブルーチンをどのような名前で呼べばよいのかわかりませんでした。質問のところと多少違ったり、今回の御回答を受けて修正致しましたが、実際には以下のプログラムを動かしたいです。callステートメントでいつもエラーになってしまいます。宜しければ、是非ご教授願います。 Private Sub Auto_Open() MsgBox "Ctrl + t でイベント実行準備を行います。" Application.OnKey "^{t}", "実行準備SUB" End Sub Sub 実行準備SUB() Call Worksheet_Change(ByVal Target As Excel.Range) End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim r As Range For Each r In Target If r.Column = 2 Then r.Offset(0, -1).Value = Now End If Next r End Sub

その他の回答 (3)

回答No.4

下記の矢印がずれてました。 単純にエクセルのRANGEデータをTargetと言う変数に入れないと動かないと思います。

e-l
質問者

お礼

細かなところまでお聞きいたしました。付き合って頂き大変勉強になりました。有難う御座います。

回答No.3

例えば、、別イベント内で call Form_Load と記述するとフォームロード時のイベントをコールできます。 ちなみに、どの言語でもそうですが 引数に適切な値を代入して呼ばないとエラーになりますよ Call Worksheet_Change(ByVal Target As Excel.Range)                 ↑この場合ここ

e-l
質問者

補足

御回答有難う御座います。ByVal のところに値を代入すればよいのでしょうか?例えば、 Call Worksheet_Change(0) 見たいな感じでしょうか?ここに入るのは、xl・・・クラスの定数とかになるのでしょうか?ヘルプで探してみましたが、正直理解が追いつきませんでした。宜しければ、もう一度ご教授願います。すいません、何度も。

回答No.1

フラグをイベント毎にもって それを順序処理したか判断するか イベント自体をCallするかでしょうか。

e-l
質問者

補足

御回答有難う御座います。イベント自体をCALLする方法を是非教えて頂きたいのですが宜しいでしょうか? あと、フラグの意味も教えて頂けたら大変助かります。宜しくお願い致します。

関連するQ&A