Access VBAで業務システムを開発していると、
- ファイル名に特定文字が含まれているか確認したい
- CSVファイルか判定したい
- メールアドレスを簡易チェックしたい
- 商品コードの種類を判定したい
- エラーログから特定文字列を抽出したい
という場面が頻繁にあります。
InStr関数を使いこなせるようになると、文字列検索処理の大半を効率よく実装できるようになります。
CSV取込システム、ファイル自動取込、設備管理システム、顧客管理システムなど、実務で非常に利用頻度の高い関数です。またCopilotが生成するコードにも頻繁に登場するため、理解しておく価値があります。
- InStr関数とは
- 基本構文
- 戻り値の意味
- 逆引き① CSVファイルか判定したい
- 逆引き② メールアドレスをチェックしたい
- 逆引き③ 商品コードを判定したい
- 逆引き④ 特定フォルダか調べたい
- 逆引き⑤ エラーメッセージ判定をしたい
- 実務活用例① CSV自動取込
- 実務活用例② 顧客管理システム
- 実務活用例③ ファイル自動取込
- 実務活用例④ 設備管理システム
- 実務活用例⑤ ログ分析
- InStrRevとの違い
- 大文字小文字を無視したい
- Split関数との組み合わせ
- Replace関数との組み合わせ
- Copilot活用術① ファイル判定処理作成
- Copilot活用術② メールチェック作成
- Copilot活用術③ ログ解析支援
- InStr利用時の注意点
- 開発現場での利用頻度
- InStr関数を覚えるメリット
- まとめ
InStr関数とは
InStr関数は、
指定文字列の中に
特定文字が
含まれているか
を調べる関数です。
基本構文
InStr( 対象文字列, 検索文字列)
サンプル
InStr( "AccessVBA", "VBA")
結果
7
が返ります。
戻り値の意味
見つかった場合
開始位置
が返ります。
見つからない場合
0
が返ります。
逆引き① CSVファイルか判定したい
実務で非常によく利用します。
If InStr( strFileName, ".csv") > 0 Then
MsgBox "CSVです"
End If
判定例
TEST.csv
↓
True
逆引き② メールアドレスをチェックしたい
簡易チェックです。
If InStr( strMail, "@") = 0 Then
MsgBox "メール形式エラー"
End If
判定例
↓
正常
逆引き③ 商品コードを判定したい
商品区分です。
If InStr( strCode, "EQ") > 0 Then
MsgBox "設備コード"
End If
判定例
EQ-0001
↓
設備
逆引き④ 特定フォルダか調べたい
パス判定です。
If InStr( strPath, "\IMPORT") > 0 Then
End If
活用
取込フォルダ
バックアップフォルダ
判定
逆引き⑤ エラーメッセージ判定をしたい
ログ解析で利用します。
If InStr( strError, "File not found") > 0 Then
End If
実務活用例① CSV自動取込
フォルダ監視です。
If InStr( strFile, ".csv") > 0 Then
Call ImportCsv
End If
効果
CSVだけ取込
が可能になります。
実務活用例② 顧客管理システム
メールアドレス確認です。
If InStr( Nz(Me!メールアドレス, ""), "@") = 0 Then
MsgBox "メール形式不正"
End If
効果
入力ミス防止になります。
実務活用例③ ファイル自動取込
ファイル種別判定です。
If InStr( strFileName, ".xlsx") > 0 Then
Call ImportExcel
End If
活用例
CSV
Excel
の判別ができます。
実務活用例④ 設備管理システム
設備区分判定です。
If InStr( strEquipmentNo, "EQ") > 0 Then
End If
区分
EQ
MC
MT
などを分類できます。
実務活用例⑤ ログ分析
ログ抽出です。
If InStr( strLog, "ERROR") > 0 Then
End If
効果
エラーだけ抽出できます。
InStrRevとの違い
初心者が混乱しやすいポイントです。
InStr
先頭から検索
InStr
InStrRev
後ろから検索
InStrRev
ファイル名取得例
Mid( strPath, InStrRev(strPath, "") + 1)
結果
C:\DATA\Test.csv
↓
Test.csv
大文字小文字を無視したい
比較方法です。
通常
InStr( "ABC", "abc")
結果
0
UCase利用
If InStr( UCase(strData), "ABC") > 0 Then
安全です。
Split関数との組み合わせ
実務ではセット利用します。
先に判定
If InStr( strData, ",") > 0 Then
分割
arr = Split( strData, ",")
CSV解析で定番です。
Replace関数との組み合わせ
データクレンジングです。
If InStr( strData, "-") > 0 Then
strData = Replace( strData, "-", "")
End If
効率的です。
Copilot活用術① ファイル判定処理作成
Copilotへの依頼例です。
Access VBAです。
CSVファイルかどうか
InStr関数で判定する
コードを作成してください。
Copilot活用術② メールチェック作成
Access VBAです。
メールアドレスに
@が含まれるか
確認するコードを
作成してください。
Copilot活用術③ ログ解析支援
Access VBAです。
ERRORを含む行だけ
抽出するコードを
作成してください。
Copilotとの相性も非常に良い関数です。
InStr利用時の注意点
見つからない場合
0
になります。
存在確認の定番
If InStr( strData, "ABC") > 0 Then
です。
Null対策
安全な書き方です。
If InStr( Nz(strData, ""), "ABC") > 0 Then
開発現場での利用頻度
実務での利用頻度です。
| 順位 | 用途 |
|---|---|
| 1位 | CSV判定 |
| 2位 | ファイル判定 |
| 3位 | ログ解析 |
| 4位 | メールチェック |
| 5位 | コード分類 |
ほぼ毎日利用します。
InStr関数を覚えるメリット
次のような効果があります。
- CSV取込の品質向上
- ファイル自動化処理の効率化
- 入力チェック強化
- ログ分析の効率化
- Copilot生成コードの理解向上
特に自動化システムでは必須レベルです。
まとめ
InStr関数はAccess VBA開発において最も使用頻度の高い検索関数の一つです。
特に
- CSV取込
- ファイル自動取込
- メールアドレスチェック
- 設備管理
- ログ解析
などで大きな効果を発揮します。
またCopilotを活用することで、
- 検索処理コード生成
- 入力チェック作成
- ログ解析ロジック作成
も効率化できます。
派手な関数ではありませんが、業務システムを開発する上では欠かせない重要関数です。Access VBA開発者なら確実に習得しておきましょう。

コメント