はじめに
この記事は実務で使った技法を、そこら中からまとめたものになります(書籍・有料情報等は除く)。
技法の参考元は各項目の末尾に記載しております。
詳しい解説を見たい方は、是非とも参考元をご覧ください。
※一部「YouTube」へと飛ぶリンクがあるため、音量にご注意ください。
随時更新する予定です。
情報の誤り・不足等はコメント欄にてご指摘頂けますと幸いです。
①最終行を取得したい
【使用例】
- 行の終着点が分からない場合
- データ一覧の最後尾を知りたい場合
- etc
【コード】
'A列の最終行を取得後、「Ctrl + ↑」でデータの最後尾を選択するイメージ
Cells(Rows.Count, 1).End(xlUp).Select
【参考元】
②最終列を取得したい
【使用例】
- 列の終着点が分からない場合
- etc
【コード】
'1行目の最終列を取得後、「Ctrl + ←」でデータの最後尾を選択するイメージ
Cells(1, Columns.Count).End(xlToLeft).Select
【参考元】
③変数などの定義情報へジャンプしたい
【使用例】
- 変数の定義情報を探すのが面倒なとき
- etc
【使い方】
『Shift + F2』 でジャンプできる
※元の行に戻りたいときは 『Ctrl + Shift + F2』
【参考元】
④対象列の値が「〇〇」の場合、別列の値末尾に「〇」を付与する(ループ処理)
【使用例】
- 特定のデータを判別する場合
- etc
【コード】
'7列目の値が「〇〇」の場合、1列目の値末尾に「〇」を付与するイメージ
Dim i As Long
Dim a As Long
'1列目の最終行を取得
a = Cells(Rows.Count, 1).End(xlUp).Row
'先頭行から最終行までループ
For i = 1 To a
If Cells(i, 7) = "〇〇" Then
Cells(i, 1).Value = Cells(i, 1).Value & "〇"
End If
Next i
【参考元】
⑤指定フォルダ内のファイルを順次開き、処理を行う(FileSystemObject)
【使用例】
- フォルダに対して操作を行う場合
- FileSystemObjectを使用
- etc
【参考元】
⑥想定外エラー発生時に対応する処理を作りたい
【使用例】
- 想定されたエラー以外の処理が発生する場合(実装上必須となる)
- etc
【参考元】
➆セルの文字色を変更したい場合
【使用例】
- エラー発生時、画面に『NG』を表示し、強調するために赤色にする
- etc
【参考元】
⑧外部設計時のポイント
【ポイント】
①システム仕様記載の際、まずは処理概要を文字で表現してみる(あくまでユーザーから視認できる箇所を)。
②文字で表現してみて、それだけでは分かりにくいものにはついては、その機能に特化した図を書いてみる(詳しく書く必要はなく、ポンチ図でOK)。
③プログラム的な記載は内部設計の領域になるため、そこまで詳しく記載しない。
④システム概要、システムフロー図、開発方針、前提制約事項、入出力ファイル情報、入出力ファイル項目定義、メッセージ定義などを作成。
⑤FileSystemObjectを使用してフォルダ内のファイル一覧を処理する場合、フォルダ内をソート(名前の昇順)などの対応を考慮すること。
※上記オブジェクトでは、ソート機能を有するオプションがないため、自分でロジックを組み、部品化をして呼び出す必要がある。
➡ファイルサーバのファイルシステムが『NTFS』の場合、ツール実行時は必ず名前順で処理される仕組みとなっている。
⑥エラー時のメッセージ表示、それ以外の想定外エラーの対応も考慮すること。
➆FileSystemObjectを使用してフォルダ内のファイルを繰り返して処理する場合、『For Each file in files』を使用する。
このとき、既に開かれているファイルがある場合、そちらが優先されて開く仕組みとなっている。
【もしツール実行時にユーザーに伝えたいこと、制限したいことが発生した場合】
- すべてロジックに落とし込む必要はなく、場合によっては外部設計『システム仕様書』の前提制約事項に書いて保険を置くことも大事になってくる。
【システム仕様書の項目について】※あくまで一例
項目名 |
---|
システム概要 |
機能一覧(モジュールごと) |
開発方針 |
前提条件 |
システムフロー図(隣接システム含めたフロー) |
入出力情報 |
入出力ファイル項目(定義情報) |
システム仕様 |
⑨ツール開発時のポイント
【ポイント】
①モジュール単位、処理単位で実装後、機会を作ってデモンストレーション&レビューをした方がいい。
※余計な手戻りが発生しないようにするため。
②共通化できる処理はユーザー定義関数(Function)を作成した方がいい。
③ツールは必ずバージョン管理、もしくはファイルサーバに履歴を持った方がいい。
④モジュール単位で実装後、疎通テストを実施した方がいい
※I/Oでファイル比較ツール(WinMerge等)を使用し、変更箇所の変更がないか確認する
⑤入力チェック処理等は必ず実装すること
・INファイルのフォーマットチェック、項目ごとのNULLチェック、フォルダ存在チェックなどなど。
⑥想定外のエラーに対処する処理は追加するべき
VBAの場合:On Error goto ***
➆処理途中のメッセージ(保存しますか等々)は表示させないようにする。
また、処理中の動作は省略させること。
⑧件数をカウントする場合、最初に0を代入させた変数を宣言し、その後、追加する件数をその変数に+する。
⑩UTテストケース作成のポイント
【ポイント】
①初期動作(ツール起動時の処理、初期画面の表示、2回目起動の表示確認)
②ボタン検証(ボタン押下時の結果確認)
③出力ファイル検証
④エラー検証
【証跡作りの考え方】
・証跡フォルダの構成
No.**
・入力ファイル
・出力ファイル
・差分比較用(WinMerginなどによる比較結果に使用したCSV)
・証跡ファイル(xlsx)
・
UTテスト時のポイント
・テスト項目以外に思いついた検証観点がある場合、まずはモンキーテストを実施してみること。
➡そこから落ち度を発見する可能性があるため、その時にUTテスト項目として追加し、実施すること(その際にデグレテストも実施する)。