LostFocusについて。


NINA RICCI  2004-06-09 19:35:14  No: 83938  IP: [192.*.*.*]

お世話になります。

Private Sub cmdF2_Click()

Dim strcbo As String
Dim flg    As String

    flg = -1                      'ここで - 1 を持たせる
    
    If gfDbNum(strcbo) = 0 Then   '項目のクリア

        Cbo_Koukei.ListIndex = 0
        txt_Kihon_Suiryou = ""
        txt_Kihon_Ryoukin = ""
        txt_Kaisi_Suiryou = ""
        txt_Chouka_Ryoukin = ""
        txt_Tijou_Meta = ""
        txt_Tika_Meta = ""
        
End Sub

Private Sub cbo_koukei_LostFocus()

    If flg() = -1 Then Exit Sub      ' flg = - 1 の場合終了
    If Cbo_Koukei <> pstrCode Then
        Call setSelectDb(Cbo_Koukei)
        pstrCode = Trim(Cbo_Koukei)
    End If

End Sub

上記のようにしているのですがうまくいきません。
F2(クリアボタン)を押下した時はLostFocusの処理を通したくないのですが
なにかいい方法はないでしょうか?クリアボタン以外の時は処理を通したいのですが・・・

編集 削除
みり  2004-06-09 22:10:09  No: 83939  IP: [192.*.*.*]

うまくいかないというのはクリアされるということですか?
そうであればflg()関数の返り値が-1ではないということでしょう。
flg() の関数で返ってくる値はなんですか?
flg() 関数の中身を書かないことには判断のしようがありません。

編集 削除
NINA RICCI  2004-06-09 22:15:57  No: 83940  IP: [192.*.*.*]

Function,またはSubが必要ですといわれてしまいます・・・

編集 削除
みり  2004-06-09 22:23:53  No: 83941  IP: [192.*.*.*]

flg関数を記述していないならあたりまえです。
プログラムを自分で作っているんじゃないんですか?

編集 削除
NINA RICCI  2004-06-09 22:27:16  No: 83942  IP: [192.*.*.*]

作ってはいますがまだ初心者なのです。。
すいません。。この場合どのようなflg関数を作ればいいでしょうか?
ご教授お願い致します。

編集 削除
みり  2004-06-09 22:45:28  No: 83943  IP: [192.*.*.*]

自分のやりたいことが分かっているなら
迷わずcmdF2_Clickでセットしたflgの値を
返す関数を作ればよいということは
分かるはずですが。。。

何か話題がLostForcusからずれてきましたね。
で以下推理で書くと
cmdF2_Click内で書かれたflgの値をcbo_koukei_LostFocus内で
判断して処理を分岐させたいということだと思いますので
以下の変更をすれば意図通り動くでしょう

cmdF2_Click内で宣言されている
Dim flg    As String
をモジュール変数として宣言する

cbo_koukei_LostFocus内のIfの判断を
If flg = -1 Then Exit Sub      
に直す

ようはflg()は意味が分からずソースを打ち込んでいた時のタイプミス
とみますがどうでしょう?

編集 削除
NINA RICCI  2004-06-10 00:53:44  No: 83944  IP: [192.*.*.*]

<cmdF2_Click内で宣言されている
<Dim flg    As String
<をモジュール変数として宣言する

というのはどのように宣言すればいいのでしょう・・・?

編集 削除
いちゆ  2004-06-10 01:10:47  No: 83945  IP: [192.*.*.*]

…話を聞いている限り、プログラム以前の問題が気がするんだが…?

編集 削除
イタタ  2004-06-10 09:16:13  No: 83946  IP: [192.*.*.*]

LostFocusが発生しないときの処理がメンドイんで、
LostFocusに処理を書かないほうが良いですよ

編集 削除
ぴろあき  2004-06-10 11:06:19  No: 83947  IP: [192.*.*.*]

っていうかString型って事はないでしょう。
フラグに使用するならBoolean型ですかね。

多分、LostFocus→Validateで解決でしょ。
んで、cmdF2のCausesValidationをFalseにするだけ。

ちなみに、
<以下ヘルプより抜粋>
データの妥当性チェックには、LostFocus イベントよりも Validate イベントが適しています。これは、定義上 LostFocus イベントがフォーカスの移動後に発生するからです。これに対し、Validate イベントを使用すると、すべてのチェック基準が満たされるまで、別のコントロールにフォーカスを移動できなくなります

編集 削除