お世話になります。
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の処理を通したくないのですが
なにかいい方法はないでしょうか?クリアボタン以外の時は処理を通したいのですが・・・
うまくいかないというのはクリアされるということですか?
そうであればflg()関数の返り値が-1ではないということでしょう。
flg() の関数で返ってくる値はなんですか?
flg() 関数の中身を書かないことには判断のしようがありません。
Function,またはSubが必要ですといわれてしまいます・・・
編集 削除flg関数を記述していないならあたりまえです。
プログラムを自分で作っているんじゃないんですか?
作ってはいますがまだ初心者なのです。。
すいません。。この場合どのようなflg関数を作ればいいでしょうか?
ご教授お願い致します。
自分のやりたいことが分かっているなら
迷わず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()は意味が分からずソースを打ち込んでいた時のタイプミス
とみますがどうでしょう?
<cmdF2_Click内で宣言されている
<Dim flg As String
<をモジュール変数として宣言する
というのはどのように宣言すればいいのでしょう・・・?
…話を聞いている限り、プログラム以前の問題が気がするんだが…?
編集 削除LostFocusが発生しないときの処理がメンドイんで、
LostFocusに処理を書かないほうが良いですよ
っていうかString型って事はないでしょう。
フラグに使用するならBoolean型ですかね。
多分、LostFocus→Validateで解決でしょ。
んで、cmdF2のCausesValidationをFalseにするだけ。
ちなみに、
<以下ヘルプより抜粋>
データの妥当性チェックには、LostFocus イベントよりも Validate イベントが適しています。これは、定義上 LostFocus イベントがフォーカスの移動後に発生するからです。これに対し、Validate イベントを使用すると、すべてのチェック基準が満たされるまで、別のコントロールにフォーカスを移動できなくなります