重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

A 回答 (4件)

フラグ系は


単純にスコープ範囲の変数を自分で確保するか
引数が渡せるサブルーチンを使って、
処理したよ!!って証拠の値を独自規格で作りそれを
変数に格納するで条件にまっちしたら該当のイベントを実行する方法

イベントの強制コールは
単純にサブルーチンを呼ぶ方法となんらかわりませんよ。

手元に今開発環境が無いので 実例があげれない・・・・

この回答への補足

有難う御座います。強制コールまで教えていただいてよろしいでしょうか。一応自分なりにやってみました。しかし、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

補足日時:2004/07/02 02:22
    • good
    • 0

下記の矢印がずれてました。


単純にエクセルのRANGEデータをTargetと言う変数に入れないと動かないと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/07/03 01:06

例えば、、別イベント内で


call Form_Load
と記述するとフォームロード時のイベントをコールできます。


ちなみに、どの言語でもそうですが
引数に適切な値を代入して呼ばないとエラーになりますよ
Call Worksheet_Change(ByVal Target As Excel.Range)
                ↑この場合ここ

この回答への補足

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

補足日時:2004/07/02 11:34
    • good
    • 0

フラグをイベント毎にもって それを順序処理したか判断するか


イベント自体をCallするかでしょうか。

この回答への補足

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

補足日時:2004/07/02 00:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!