Accessシステムを開発していると、「社員番号を0001で表示したい」「伝票番号を8桁固定にしたい」「入力された値が数値か判定したい」といった細かい数値処理の要件が頻繁に発生します。
結論から言うと、業務システムの品質を左右するのは複雑な処理よりも、このような”ちょっとした数値処理”です。
実際の現場では、
- 社員番号
- 設備番号
- 製品コード
- 発注番号
- 管理番号
- ロット番号
などで桁数の統一が求められます。
今回はAccess VBAで実務でよく利用する、
- ゼロ埋め
- 桁数揃え
- 数値判定
- Null対策
- 桁区切り
- 符号表示
といった実践テクニックを紹介します。
- なぜ数値整形が重要なのか
- ゼロ埋めしたい
- 8桁固定で表示したい
- 英字と組み合わせたい
- 桁数をチェックしたい
- 数値かどうか判定したい
- 空白かどうか確認したい
- Nullを0に変換したい
- 数値を文字列に変換したい
- 文字列を数値へ変換したい
- 桁数を取得したい
- カンマ付き表示をしたい
- マイナスだけ表示したい
- パーセント表示したい
- 先頭文字を取得したい
- 後ろ3桁を取得したい
- 指定位置の文字を取得したい
- 数値を指定桁で切り捨てたい
- 千円単位へ変換したい
- 実務活用例① 設備管理システム
- 実務活用例② 測定データ管理
- 実務活用例③ CSV取込
- Copilot活用術① 入力チェックコード生成
- Copilot活用術② マスタ管理機能作成
- Copilot活用術③ エラー対策支援
- 数値処理で失敗しないポイント
- まとめ
なぜ数値整形が重要なのか
例えば管理番号が次のように登録されていたとします。
1
12
123
1234
画面や帳票では見づらくなります。
そこで、
0001
0012
0123
1234
として表示します。
たったこれだけでもシステムの見栄えは大きく改善します。
業務システムは機能だけでなく、「見やすさ」も非常に重要です。
ゼロ埋めしたい
最も利用頻度が高い処理です。
例えば社員番号を4桁表示する場合です。
Format(社員番号,"0000")
結果
1
↓
0001
12
↓
0012
非常にシンプルです。
8桁固定で表示したい
伝票番号によく利用します。
Format(伝票番号,"00000000")
結果
123
↓
00000123
発番システムでは定番です。
英字と組み合わせたい
設備管理ではよくあります。
"EQ-" & Format(Me!設備番号,"000000")
結果
15
↓
EQ-000015
設備台帳や資産管理で便利です。
桁数をチェックしたい
入力チェックで利用します。
If Len(Me!社員番号) <> 4 Then
MsgBox "4桁で入力してください"
End If
管理番号の品質向上につながります。
数値かどうか判定したい
入力チェックの定番です。
If IsNumeric(Me!入力値) Then
MsgBox "数値です"
Else
MsgBox "数値ではありません"
End If
結果
123 → True
ABC → False
CSV取込でもよく利用します。
空白かどうか確認したい
実務では非常に重要です。
If Nz(Me!入力値,"") = "" Then
MsgBox "未入力です"
End If
Nullエラー防止に役立ちます。
Nullを0に変換したい
Access開発では必須テクニックです。
Nz(Me!数量,0)
結果
Null
↓
0
集計処理で頻繁に利用します。
数値を文字列に変換したい
外部システム連携で利用します。
CStr(Me!社員番号)
結果
100
↓
“100”
CSV出力で便利です。
文字列を数値へ変換したい
逆に数値へ変換する場合です。
CLng(Me!入力値)
結果
“100”
↓
100
計算前によく利用します。
桁数を取得したい
データチェックに利用します。
Len(CStr(Me!管理番号))
結果
12345
↓
5
管理番号管理では定番です。
カンマ付き表示をしたい
金額管理では必須です。
Format(Me!金額,"#,##0")
結果
1234567
↓
1,234,567
帳票の見やすさが向上します。
マイナスだけ表示したい
収支資料で便利です。
Format(利益,"+#,##0;-#,##0")
結果
5000
↓
+5,000
-5000
↓
-5,000
損益管理に最適です。
パーセント表示したい
稼働率や達成率で利用します。
Format(0.956,"0.0%")
結果
95.6%
経営資料でよく利用します。
先頭文字を取得したい
製品コード判定です。
Left(Me!製品コード,1)
結果
A12345
↓
A
分類処理で活躍します。
後ろ3桁を取得したい
伝票番号分析で利用できます。
Right(Me!伝票番号,3)
結果
INV123456
↓
456
検索キー生成にも利用できます。
指定位置の文字を取得したい
Mid(Me!社員コード,3,2)
結果
AB1234
↓
12
コード体系の分析に便利です。
数値を指定桁で切り捨てたい
例えば百円単位です。
Int(金額 / 100) * 100
結果
1234
↓
1200
予算管理で利用されます。
千円単位へ変換したい
帳票でよく見かけます。
Format(金額 / 1000,"#,##0")
結果
1234567
↓
1,235
単位:千円表示に利用できます。
実務活用例① 設備管理システム
設備番号を統一します。
保存データ
1
35
125
表示
EQ-000001
EQ-000035
EQ-000125
設備台帳の見やすさが向上します。
実務活用例② 測定データ管理
測定値の入力チェックです。
If Not IsNumeric(Me!測定値) Then
MsgBox "数値を入力してください"
End If
入力ミス防止に有効です。
実務活用例③ CSV取込
CSV連携では定番です。
strValue = Nz(rs!数量,0)
Nullエラーを防止できます。
大量データ取込では必須です。
Copilot活用術① 入力チェックコード生成
Copilotへ次のように依頼します。
Access VBAです。
社員番号が4桁の数字のみ入力できる
チェック処理を作成してください。
基本コードを短時間で作成できます。
Copilot活用術② マスタ管理機能作成
設備管理システムです。
設備番号をEQ-000001形式で
自動採番するVBAを作成してください。
実務レベルのコード作成を支援できます。
Copilot活用術③ エラー対策支援
Nz関数とIsNull関数の違いを
わかりやすく説明してください。
Access初心者の学習にも役立ちます。
数値処理で失敗しないポイント
表示と保存を分ける
おすすめは次の方法です。
保存値
123
表示値
000123
データベースには加工せず保存する方が保守しやすくなります。
Null対策を徹底する
Accessエラーの多くはNullが原因です。
実務では、
Nz()
を積極的に利用しましょう。
コード体系は固定する
例えば設備番号なら、
EQ-000001
社員番号なら、
EMP-0001
のように事前にルール化することをおすすめします。
まとめ
Access VBAでは複雑な処理だけでなく、
- ゼロ埋め
- 桁数統一
- 数値判定
- Null対策
- 文字列変換
- パーセント表示
- カンマ表示
といった日常的な数値処理が非常に重要です。
実際の業務システムでは、このような細かな処理の積み重ねが操作性や保守性を大きく左右します。
最近はCopilotを活用することで、入力チェックや採番処理、データ変換処理などのVBAコードを効率よく作成できるようになりました。
派手さはありませんが、Access開発者が必ず身につけておきたい実践テクニックです。



コメント