マクロでいこう! ~ Excel活用HomePage ~

VBAでラクしたい ~Part 2~

こちらのコーナーでは、VBAの使い方を中心にご紹介していきます。
作者自身の経験から書いておりますので、本とかとは違ったコトを
書いてるトコロもあるかもしれません。 そういう場合は、良さそうな方を信じましょう(^_^;
TOPVBAでラクしたい ~Part 2~ > レコード表示Change時の処理の続き

レコード表示Change時の処理の続き

前回はレコードが1件も無い場合の処理まで書きました。

今回はその残りの部分について見ていきましょう。ヽ(^-^ )


では「前へ」ボタンの条件判断について考えてみましょうか。

「前へ」ボタンが使用不可になる条件は何でしょう?
"現在のレコード番号が1件目を指している時"ですよね d(^-^ )

後ろに何件あろうと1件目を指しているときは、それ以上前にはいけません。
また、レコードが1件もなければ、同じく前にはいけませんよね(後ろにもいけませんが)。

ということでここの条件判断は


        '現在のレコード番号が1以下の場合
        If LngCurRecNumDsp <= 1 Then
            CmdPrev.Enabled = False        '前へ(不可)
        Else
            CmdPrev.Enabled = True         '前へ(可)
        End If


となろうかと思います。


続いて「次へ」の場合。

「次へ」が使用不可になる条件は何でしょう?
最終レコードを表示している時ですよね?

前に何件あろうと最後のレコードを表示している時には、それ以上後に進めません。
また、0件であれば「前へ」同様です。

ですので、

        '現在のレコード番号と全レコード数が同じ場合
        If LngCurRecNumDsp = LngAllRecCntDsp Then
            CmdNext.Enabled = False        '次へ(不可)
        Else
            CmdNext.Enabled = True         '次へ(可)
        End If

ということになりますねヽ(^-^ )


以上3つの処理を順番に並べておいて、おもむろに実行して動きを確認してみて下さい。

どうでしょうか?正しく切り替わってますか?

なんかパッと見ではこれで良さそうですよね。

「え?ということはこれでもダメなの?」という貴方。
ヒントは「新規」モードにあります。

「登録」ボタンをクリックすればレコードが追加されますよね。そうしますとレコードの表示はど
うなるでしょうか?
・・・そう! 最終レコード番号と全レコード数が一致してしまいます。

そうすると、それに反応して「前へ」ボタンが使用可能になってしまいますよね(^^;)
「新規」モード中は「登録」しか使えない状態でなければいけませんので、とりあえずこれら3つ
の処理をぐるっと囲ってしまいましょう。


Private Sub TxtRecCnt_Change()

    If OptUpdMode.Value = True Then

        '全レコード数が0件の場合
        If LngAllRecCntDsp = 0 Then
            CmdUpdate.Enabled = False      '修正(不可)
            CmdDelete.Enabled = False      '削除(不可)
        End If
    
    
        '現在のレコード番号が1以下の場合
        If LngCurRecNumDsp <= 1 Then
            CmdPrev.Enabled = False        '前へ(不可)
        Else
            CmdPrev.Enabled = True         '前へ(可)
        End If
        
        '現在のレコード番号と全レコード数が同じ場合
        If LngCurRecNumDsp = LngAllRecCntDsp Then
            CmdNext.Enabled = False        '次へ(不可)
        Else
            CmdNext.Enabled = True         '次へ(可)
        End If
    
    End If

End Sub


意味はお分かりになりますよね?(^-^

Value が True ですから、いわゆる「修正/削除」モードが選択されている状態です。

で、その状態の時だけ以下の条件判断処理を有効にする、ということです。

もちろん

    If OptUpdMode.Value = True Then

は

    If OptAddMode.Value = False Then

と書き換えても結果は変わりません。

あくまで好みの問題だったりします(^-^;


さて次回はいよいよ最後の詰め、「初期化処理」をやってみたいと思います。
例によって、ご自分で書いてみてからお読みになるとより勉強になりますよ(^^)



それでは次回までごきげんよぉぉ


TOPVBAでラクしたい ~Part 2~
Copyright (C) 2006 マクロでいこう!. All Rights Reserved.