トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 揺るぎない力編: 第26話「岬さんの夢」3/4 :支給品管理システム修正の続き

やってみよう!Excel VBAで業務改善! 新たなる挑戦編|第26話 「岬さんの夢」

支給品管理システム修正の続き

席に戻った星くんは、保存した作業中の支給品管理システムを開きます。

「まさか、岬さんがセミナー講師をやりたいなんて言い出すとは、思わなかったなあ。ビックリだよ。
…でもよかった。
会社をやめてセミナー講師に転職するなんて言われたら、どうしようかと思ったよ。
彼女、業務改善部隊の貴重な戦力だからなあ…」
ブツブツ言いながら星くんは、起動した支給品管理システムのモジュールを確認します。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Row >= 5 Then
        If Target.Column = 1 Then
            Cancel = True

        End If
    End If
End Sub

「昼前は、ここまで実装したんだったっけ。
"Cancel = True"に来るのは、5行目以下のA列のセルをダブルクリックしたときだけだったな。
うん、いいぞ。
この後は、A列のセルにオーダーNoが入力されているかどうかを判定し、
未入力ならば入力フォームを、入力済みならば修正フォームを、それぞれ表示するだけだ」
星くんは、カタカタとキーボードを叩きます。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Row >= 5 Then
        If Target.Column = 1 Then
            Cancel = True
            If Target.Value = "" Then
                If Target.Row = Cells(Rows.Count, 1).End(xlUp).Row + 1 Then
                    Form入力.Show
                End If
            Else
                Form修正.Show
            End If
        End If
    End If
End Sub

※赤字のコードが、新しく追加されたコードです。

「うん、いい感じだ。'Target.Value = ""'と、ダブルクリックしたセルが空ということは、
オーダーNoが未入力の時だから、今まで同様、最終データの次行のみ、入力フォームを表示する。
最終データの次行かどうかは、"Target.Row = Cells(Rows.Count, 1).End(xlUp).Row + 1"で判定できる。
ダブルクリックしたセルが空でないときは、オーダーNoが入力されているときだから、
このときはElse以降に処理が移り、修正フォームを表示する……いいんじゃないか?」
星くんは、追加したコードを眺めながら、ウンウンと首を振ります。

一覧にもどる