トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 新たなる挑戦編: 第5話「システムの保守をしよう!」3/4 :どうりで正しく判定しないわけだ…

やってみよう!Excel VBAで業務改善! 新たなる挑戦編|第5話 「システムの保守をしよう!」

どうりで正しく判定しないわけだ…

席に戻った星くんは、うまくいかなかったときのオーダー表を使って、デバッグを行うことにしました。

「(オーグチさんのシステムが最優先といわれたけど、バグ対応は別だ。
これを修正しないと、先輩の作業量がまるで違ってくる…。
いったい、どこに問題があるんだ??)」
星くんは、正しく処理が行われなかったデータの箇所を、ステップモードで実行し、
セルに格納されている値を調べました。

「んん??おかしいぞ…。
このアイテムとこのアイテムは"同じ"と判定されなければいけないのに………なんで?」
星くんは、コードにDebug.Printを追加し、セルの値をイミディエイトウィンドウに出力させました。 (※Debug.Printという命令を使うと、イミディエイトウィンドウに文字列を出力することができます。)

「なんだこれ…全角文字と半角文字が混在してるじゃないか…。
どうりで正しく判定しないわけだ…」

オーダー表は担当者が手で直接入力するため、様々な文字列が入力されています。
VBAで比較するためには、全角半角や大文字小文字、これらを統一して比較する必要があります。

「…なんだ、こんなの簡単じゃないか。
比較するための文字列を作るFunctionプロシージャを1つ追加するだけだ。
よかった、簡単に修正できるエラーで…」
星くんはホッと胸をなでおろし、カタカタカタ…と、Functionプロシージャを作成し始めました。

Function 比較文字作成(ByVal item As String) As String
    item = StrConv(item, vbNarrow + vbLowerCase)
    item = Replace(item, " ", "")
    比較文字作成 = item
End Function

「…これでヨシ…っと!比較文字作成プロシージャの引数itemにセルの値を渡すんだ。
まず、StrConv関数で引数itemを半角、小文字に変換する。
vbNarrowは半角、vbLowerCaseは小文字に変換する指定だからこれでオッケーだ。
次に、Replace関数で引数itemの中のスペースを削除する。
Trim関数は文字列の中にあるスペースまでは削除してくれないから、この方が確実だ…」
再びカタカタカタ…とコードを打ち始めます。

「…あとは、このFunctionプロシージャを、条件判定のとき呼び出すようにすればいい…。
こうしてっと…」

一覧にもどる