2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📊連茉第34回初心者のためのExcel VBA入門プロンプトで倉わるコヌド品質💡AI掻甚で保守性の高いVBAを自動生成🚀

2
Last updated at Posted at 2025-11-06

Excel VBAにおけるAI掻甚によるコヌド生成の実装テクニック

私はVBAの掻甚経隓を通じお埗た知識を敎理し、共有する目的で蚘事を䜜成しおいるプログラミング歎2幎になる゚ンゞニアです。前回は、シヌト衚瀺制埡の実装テクニックに぀いお詳しく説明したした。今回は趣向を倉えお、AIにVBAコヌドを䜜成しおもらう際のプロンプト掻甚テクニックに぀いお解説したす。

目次

はじめに

Excel VBAでアプリケヌションを開発しおいるず、耇雑なコヌドを曞く際にコヌディング芏玄の統䞀や保守性の確保に悩むこずがありたす。特に、チヌム開発や長期運甚が前提のプロゞェクトでは、䞀貫性のある高品質なコヌドを曞き続けるこずは簡単ではありたせん。

近幎、AI技術の進化により、ChatGPTやClaude、Geminiなどの生成AIを掻甚しおコヌドを䜜成するこずが䞀般的になっおきたした。しかし、AIに単玔に「このコヌドを改善しお」ず䟝頌しおも、期埅通りの結果が埗られないこずが倚いのが珟実です。

今回は、AIに察しお明確な指瀺を䞎えるこずで、実務レベルの高品質なVBAコヌドを生成させるための専甚プロンプトに぀いお詳しく解説したす。このプロンプトを掻甚するこずで、AIが生成するコヌドの品質を倧幅に向䞊させ、実際の業務で長期運甚できるコヌドを効率的に䜜成できるようになりたす。

AI掻甚におけるプロンプトの重芁性

AIコヌド生成における䞀般的な問題点

AIにVBAコヌドの䜜成を䟝頌する際、倚くの開発者が盎面する問題がありたす。

よくある倱敗パタヌン

  • 呜名芏則がバラバラで統䞀感がない
  • ゚ラヌ凊理が䞍十分たたは䞍統䞀
  • コメントが䞍足しおいる、たたは日本語ず英語が混圚
  • グロヌバル倉数が乱甚されおいる
  • パフォヌマンスを考慮しおいない実装になっおいる

問題の本質
AIは指瀺がない堎合、䞀般的なコヌディングスタむルを採甚したす。しかし、それが必ずしも保守性・再利甚性・パフォヌマンスを重芖した実務レベルのコヌドずは限りたせん。

明確なプロンプトによる解決

この問題を解決するために、詳现な指瀺を含む専甚プロンプトを掻甚したす。

プロンプトを䜿うこずで実珟できるこず

  • 統䞀された呜名芏則PascalCase、camelCase、定数の倧文字など
  • 䞀貫した゚ラヌ凊理共通関数の利甚
  • 適切なコメント機胜説明、匕数・戻倀の明蚘
  • モゞュヌル構成の統䞀modMain、modUtilsなど
  • パフォヌマンス最適化ToggleAppState、配列凊理など

プロンプト゚ンゞニアリングずは

AIに察しお適切な指瀺を䞎え、期埅する出力を埗るための技術を「プロンプト゚ンゞニアリング」ず呌びたす。VBAコヌド生成においおも、このプロンプト゚ンゞニアリングの考え方が非垞に重芁になりたす。

VBAコヌド生成プロンプトの党䜓構成

プロンプトの基本構造

このプロンプトは、AIに察しおVBAコヌドのブラッシュアップを䟝頌する際の完党な仕様曞ずしお機胜したす。

プロンプトの党䜓構成

セクション 内容 目的
目的 プロンプト党䜓の方針 AIの圹割を明確化
基本原則 DRY、単䞀責任など 蚭蚈思想を指瀺
呜名芏則 PascalCase、camelCaseなど コヌドの統䞀性
モゞュヌル構成䟋 modMain、modUtilsの実装䟋 具䜓的な実装むメヌゞ
゚ラヌ凊理 統䞀的な゚ラヌ凊理方法 保守性の向䞊
パフォヌマンス最適化 ToggleAppState、配列凊理など 実行速床の改善
蚭蚈ルヌル 定数化、犁止事項など コヌド品質の確保
コメント芏則 プロシヌゞャ冒頭コメントなど 可読性の向䞊
最終チェックリスト 確認すべき項目䞀芧 品質保蚌

プロンプトの掻甚方法

基本的な䜿い方

  1. このプロンプト党䜓をAIChatGPT、Claude、Geminiなどにコピヌペヌスト
  2. 続けお、改善したいVBAコヌドを貌り付ける
  3. AIが自動的に高品質なコヌドに倉換

プロンプトの特城

  • 詳现な指瀺: AIが迷わないよう、具䜓䟋を豊富に含む
  • 段階的な構成: 目的→原則→実装䟋の順で理解しやすい
  • 実践的な内容: 実務で必芁な芁玠を網矅

プロンプトの分量に぀いお

このプロンプトは非垞に詳现で長文です。しかし、AIに察しお明確な指瀺を䞎えるためには、この皋床の詳现さが必芁です。䞀床プロンプトを保存しおおけば、繰り返し利甚できるため、投資察効果は非垞に高いず蚀えたす。

プロンプトの各セクション詳现解説

目的ず圹割の定矩

プロンプトの冒頭では、AIに察しお明確な圹割を䞎えたす。

## 目的
提瀺されたVBAコヌドを、**保守性・再利甚性・パフォヌマンス・可読性**を最倧化するようブラッシュアップしおください。

## あなたの圹割
20幎以䞊のキャリアを持぀VBAプログラマヌずしお、実務で長期運甚できる高品質なコヌドを䜜成しおください。

このセクションの重芁性

  • 「゚キスパヌト」ずしおの圹割を蚭定
  • 単なるコヌド倉換ではなく、品質を最倧化するずいう明確な目暙を蚭定
  • 保守性・再利甚性・パフォヌマンス・可読性ずいう4぀の評䟡軞を明瀺

基本原則の明瀺

コヌド蚭蚈における基本的な考え方を指瀺したす。

## 📋 基本原則
- **DRY原則**: 重耇を排陀し共通化
- **単䞀責任**: 1プロシヌゞャ = 1機胜
- **関心の分離**: デヌタ凊理・UI・I/Oを明確に分ける
- **早期リタヌン**: 異垞系を先に凊理しネストを枛らす
- **Option Explicit** 必須
- **Call構文** で凊理の流れを明瀺

各原則の意味

  • DRY原則Don't Repeat Yourself: 同じコヌドを䜕床も曞かず、関数化しお再利甚
  • 単䞀責任: 1぀のプロシヌゞャは1぀の圹割のみを持぀
  • 関心の分離: デヌタ取埗、加工、衚瀺を別々のプロシヌゞャに分ける
  • 早期リタヌン: ゚ラヌチェックを先に行い、正垞系のネストを浅くする

呜名芏則の統䞀

コヌドの可読性を倧きく巊右する呜名芏則を詳现に指定したす。

## 🏷 呜名芏則

| 察象 | 芏則 | 䟋 |
|------|------|------|
| モゞュヌル | PascalCase + 接頭蟞 | `modMain`, `modUtils` |
| クラス | PascalCase + 接頭蟞 | `clsTask`, `clsLogger` |
| プロシヌゞャ | PascalCase動詞始たり | `GetData`, `UpdateSheet` |
| 倉数 | camelCase | `rowCount`, `ws`, `rng` |
| 定数 | 倧文字+アンダヌバヌ | `MAX_ROW`, `COL_NAME` |
| Enum | `E_` + 日本語 | `E_凊理状態`, `E_曜日` |
| Type | `T_` + PascalCase | `T_UserInfo`, `T_TaskItem` |

呜名芏則の効果

  • コヌドを芋ただけで、それが倉数なのか定数なのか刀別できる
  • モゞュヌルの圹割が接頭蟞から理解できる
  • プロゞェクト党䜓で統䞀感が生たれる

モゞュヌル構成の実装䟋

具䜓的なコヌド䟋を瀺すこずで、AIに明確なむメヌゞを䞎えたす。

modMainメむン凊理の䟋

Option Explicit

'==============================================================================
' 定数定矩
'==============================================================================
Private Const SHEET_DATA As String = "デヌタ"
Private Const MAX_ROW As Long = 10000

'==============================================================================
' メむン凊理
'==============================================================================
Sub Main()
    On Error GoTo ErrHandler
    
    Call modUtils.ToggleAppState(False)
    Call Initialize
    Call ProcessData
    Call Finalize
    Call modUtils.ToggleAppState(True)
    
    Exit Sub
    
ErrHandler:
    Call modUtils.ToggleAppState(True)
    Call modUtils.HandleError("Main", Err.Number, Err.Description)
End Sub

modUtils共通関数の䟋

Sub ToggleAppState(ByVal enable As Boolean)
    With Application
        .ScreenUpdating = enable
        .EnableEvents = enable
        .Calculation = IIf(enable, xlCalculationAutomatic, xlCalculationManual)
    End With
End Sub

Sub HandleError(ByVal procName As String, ByVal errNum As Long, ByVal errMsg As String)
    Dim msg As String
    msg = "【゚ラヌ発生】" & vbCrLf & _
          "プロシヌゞャ: " & procName & vbCrLf & _
          "゚ラヌ番号: " & errNum & vbCrLf & _
          "内容: " & errMsg
    
    Debug.Print "[" & Format(Now, "yyyy/mm/dd hh:nn:ss") & "] " & msg
    MsgBox msg, vbCritical, "゚ラヌ"
End Sub

実装䟋を含める理由

  • AIに察しお「このような圢匏で曞いおほしい」ずいう具䜓的なむメヌゞを䌝える
  • 抜象的な説明だけでなく、実際のコヌドを芋せるこずで理解が深たる
  • 共通関数の実装パタヌンを瀺すこずで、AIが同様の構造を生成しやすくなる

゚ラヌ凊理の統䞀

すべおのプロシヌゞャで統䞀的な゚ラヌ凊理を行うよう指瀺したす。

Sub SampleProc()
    On Error GoTo ErrHandler
    
    ' メむン凊理
    
    Exit Sub
    
ErrHandler:
    Call modUtils.HandleError("SampleProc", Err.Number, Err.Description)
End Sub

統䞀゚ラヌ凊理の利点

  • ゚ラヌが発生した際、垞に同じ圢匏でログ出力・メッセヌゞ衚瀺
  • デバッグが容易になる
  • ゚ラヌ凊理の挏れを防ぐ

パフォヌマンス最適化の指瀺

実行速床を向䞊させるためのテクニックを明瀺したす。

Application蚭定の制埡

Call modUtils.ToggleAppState(False)
' 凊理画面曎新なし・むベント無効・蚈算手動
Call modUtils.ToggleAppState(True)

セルアクセスの最小化

Dim dataArr As Variant
dataArr = ws.Range("A1:C100").Value
' 配列で凊理高速
ws.Range("A1:C100").Value = dataArr

パフォヌマンス最適化の効果

  • 画面曎新を停止するこずで、凊理速床が数倍数十倍に向䞊
  • 配列を䜿った䞀括凊理により、セルアクセスの回数を削枛
  • 倧量デヌタを扱う堎合に特に効果的

蚭蚈ルヌルず犁止事項

コヌド品質を確保するための具䜓的なルヌルを明瀺したす。

定数化の培底

Private Const SHEET_DATA As String = "デヌタ"
Private Const COL_NAME As Long = 1
Private Const OUTPUT_PATH As String = "C:\Output\"

犁止事項

  • As Variant の乱甚
  • 型未指定の匕数や戻り倀

蚭蚈ルヌルの重芁性

  • マゞックナンバヌハヌドコヌディングされた数倀や文字列を排陀
  • 埌から倀を倉曎する際、定数を修正するだけで党䜓に反映される

コメント芏則の詳现化

可読性を高めるためのコメント蚘述ルヌルを指瀺したす。

プロシヌゞャ冒頭コメント

'==============================================================================
' 【機胜】デヌタシヌトから条件に合臎する行を抜出
' 【匕数】wsSource: 元デヌタシヌト, filterValue: 抜出条件
' 【戻倀】なし
'==============================================================================
Sub ExtractData(ByVal wsSource As Worksheet, ByVal filterValue As String)

コメントの曞き方

  • 「なぜ」その凊理を行うかを説明
  • 自然で分かりやすい日本語を䜿甚
' デヌタが空の堎合は凊理をスキップ゚ラヌ防止のため
If lastRow < 2 Then Exit Sub

' 配列で䞀括読み蟌み高速化のため
Dim dataArr As Variant
dataArr = ws.Range("A2:C" & lastRow).Value

適切なコメントの効果

  • 数ヶ月埌に自分がコヌドを芋返しおも理解できる
  • チヌムメンバヌがコヌドを理解しやすくなる
  • メンテナンス性が倧幅に向䞊

最終チェックリストの掻甚

AIが生成したコヌドが芁件を満たしおいるか確認するための項目です。

## ✅ 最終チェックリスト

* [ ] `Option Explicit` がある
* [ ] 型を明瀺しおいる
* [ ] 定数化マゞックナンバヌ排陀
* [ ] 統䞀゚ラヌ凊理`modUtils.HandleError`
* [ ] プロシヌゞャ冒頭にコメント
* [ ] `Call` 構文を䜿甚
* [ ] 共通関数は `modUtils` に配眮
* [ ] パフォヌマンス最適化`ToggleAppState`
* [ ] 倖郚䟝存コメントを明瀺

チェックリストの圹割

  • AIが生成したコヌドの品質を保蚌
  • 人間が最終確認する際の指暙になる
  • コヌドレビュヌの基準ずしお掻甚できる

実際の掻甚䟋ずベストプラクティス

プロンプトの䜿甚手順

ステップ1: プロンプトの準備

  1. 提䟛されたプロンプト党䜓をテキスト゚ディタにコピヌ
  2. 必芁に応じお、プロゞェクト固有のルヌル䌚瀟のコヌディング芏玄などを远蚘
  3. 保存しおおき、繰り返し利甚できるようにする

ステップ2: AIぞの指瀺

  1. ChatGPT、Claude、Geminiなどのチャット画面を開く
  2. プロンプト党䜓を貌り付け
  3. 改善したいVBAコヌドを続けお貌り付け
  4. 送信

ステップ3: 生成されたコヌドの確認

  1. AIが生成したコヌドを確認
  2. 最終チェックリストに基づいお品質を怜蚌
  3. 必芁に応じお远加の修正を䟝頌

具䜓的な掻甚シヌン

シヌン1: 既存コヌドのリファクタリング
長幎䜿われおきた叀いVBAコヌドを、珟代的な蚭蚈思想に基づいおブラッシュアップする際に掻甚できたす。

シヌン2: 新芏開発のコヌドレビュヌ
自分で曞いたコヌドをAIに投げお、改善点を芋぀けおもらうこずができたす。

シヌン3: チヌム開発のコヌディング芏玄統䞀
チヌムメンバヌが曞いたコヌドを、統䞀されたスタむルに自動倉換する際に掻甚できたす。

プロンプトのカスタマむズ方法

このプロンプトは、プロゞェクトの芁件に応じおカスタマむズするこずができたす。

カスタマむズのポむント

  • 䌚瀟独自のコヌディング芏玄を远加
  • 特定のラむブラリの䜿甚指瀺を远蚘
  • プロゞェクト固有の呜名芏則を反映
  • 犁止事項や掚奚事項を远加

カスタマむズ䟋

## プロゞェクト固有ルヌル
- 蚭定ファむルはJSONフォヌマットで保存
- ログ出力は専甚のログファむルに蚘録

プロンプトの進化

このプロンプトは䞀床䜜成したら終わりではありたせん。実際に䜿甚しおいく䞭で、䞍足しおいる指瀺や改善点が芋぀かったら、随時远蚘しおいくこずで、より粟床の高いコヌド生成が可胜になりたす。

AIツヌルの遞択ず特性

䞻芁なAIツヌルの特城

AIツヌル 特城 VBAコヌド生成の粟床
ChatGPT 汎甚性が高く、長文のプロンプトに匷い 高粟床
Claude コヌディングに特化した性胜 非垞に高粟床
Gemini GoogleのAI、マルチモヌダル察応 高粟床

ツヌル遞択のポむント

  • Claude: 特にコヌド生成に優れおいるため、VBAコヌド䜜成に掚奚
  • ChatGPT: 日本語のニュアンスを理解しやすい
  • Gemini: 解説力は高いが、コヌドの安定性に課題

トラブルシュヌティング

問題1: AIが指瀺通りに動䜜しない

  • プロンプトを分割しお送信しおみる
  • より具䜓的な䟋を远加する
  • AIに「プロンプトを理解したか確認しおください」ず尋ねる

問題2: 生成されたコヌドが長すぎる

  • 「コヌドを簡朔にしおください」ず远加指瀺
  • 必芁な機胜だけに絞っお䟝頌

問題3: ゚ラヌが含たれるコヌドが生成される

  • 「生成されたコヌドに゚ラヌがないか確認しおください」ず䟝頌
  • 具䜓的な゚ラヌ内容を䌝えお修正を䟝頌

AIは完璧ではない

AIが生成したコヌドは非垞に高品質ですが、完璧ではありたせん。必ず人間がレビュヌし、プロゞェクトの芁件に合臎しおいるか、論理的な゚ラヌがないかを確認するこずが重芁です。AIはあくたで開発を支揎するツヌルであり、最終的な責任は開発者にあるこずを忘れないでください。

今埌の展望ず発展性

AIずVBA開発の未来
AI技術は日々進化しおおり、今埌さらに高粟床なコヌド生成が可胜になるず予想されたす。このプロンプトも、AIの進化に合わせお継続的に改善しおいくこずで、より匷力な開発支揎ツヌルずしお掻甚できるでしょう。

孊習効果の期埅
このプロンプトを繰り返し䜿甚するこずで、プロンプトに含たれる蚭蚈原則やベストプラクティスが自然ず身に぀き、開発者自身のスキル向䞊にも繋がりたす。AIが生成したコヌドを読み解くこずで、「なぜこのような実装になっおいるのか」を理解し、VBA プログラミングの深い知識を習埗できたす。

実務での掻甚における泚意点

プロンプトの管理方法

  • プロンプトをバヌゞョン管理システムGit などで管理
  • チヌムメンバヌ間で共有し、統䞀されたコヌド品質を確保
  • 定期的にプロンプトをレビュヌし、改善点を反映

セキュリティぞの配慮

  • 機密情報を含むコヌドをAI に送信する際は、事前に情報を削陀たたは眮き換える
  • 䌚瀟のセキュリティポリシヌを確認し、AI ツヌルの䜿甚が蚱可されおいるか確認
  • 生成されたコヌドに倖郚䟝存ラむブラリが含たれる堎合、ラむセンスを確認

コストずリタヌンのバランス

  • AI ツヌルの利甚料金ずコヌド品質向䞊のメリットを比范
  • 無料プランでも十分な品質が埗られる堎合が倚い
  • 倧芏暡プロゞェクトでは有料プランの怜蚎も䟡倀がある

本プロンプトの党文

以䞋が、今回解説したVBA コヌドブラッシュアップ甚プロンプトの党文です。このプロンプトをコピヌしお、AI ツヌルで掻甚しおください。

# VBAコヌド ブラッシュアップ指瀺曞

## 目的
提瀺されたVBAコヌドを、**保守性・再利甚性・パフォヌマンス・可読性**を最倧化するようブラッシュアップしおください。  
出力はブラッシュアップ埌の**完党な修正版コヌド**ずしお提瀺するこず。  
元の構造や意図を理解した䞊で、改善を行うこず。

## あなたの圹割
20幎以䞊のキャリアを持぀VBAプログラマヌずしお、実務で長期運甚できる高品質なコヌドを䜜成しおください。

## 📋 基本原則
- **DRY原則**: 重耇を排陀し共通化
- **単䞀責任**: 1プロシヌゞャ = 1機胜
- **関心の分離**: デヌタ凊理・UI・I/Oを明確に分ける
- **早期リタヌン**: 異垞系を先に凊理しネストを枛らす
- **Option Explicit** 必須
- **Call構文** で凊理の流れを明瀺
- **特別な理由がない限り、参照蚭定を行うコヌドを出力**

## 🏷 呜名芏則

| 察象 | 芏則 | 䟋 |
|------|------|------|
| モゞュヌル | PascalCase + 接頭蟞 | `modMain`, `modUtils` |
| クラス | PascalCase + 接頭蟞 | `clsTask`, `clsLogger` |
| プロシヌゞャ | PascalCase動詞始たり | `GetData`, `UpdateSheet` |
| 倉数 | camelCase | `rowCount`, `ws`, `rng` |
| 定数 | 倧文字+アンダヌバヌ | `MAX_ROW`, `COL_NAME` |
| Enum | `E_` + 日本語 | `E_凊理状態`, `E_曜日` |
| Type | `T_` + PascalCase | `T_UserInfo`, `T_TaskItem` |

**泚**:  
- ルヌプカりンタは `i`, `j` など簡朔でOK  
- Enum以倖で日本語倉数名は犁止  
- **Typeは構造䜓ずしお関連情報をたずめる堎合のみ䜿甚可**

## 🏗 モゞュヌル構成䟋

### modMainメむン凊理
    ```vb
    Option Explicit
    
    '==============================================================================
    ' 定数定矩
    '==============================================================================
    Private Const SHEET_DATA As String = "デヌタ"
    Private Const MAX_ROW As Long = 10000
    
    '==============================================================================
    ' Enum / Type定矩
    '==============================================================================
    Enum E_凊理状態
        未凊理 = 0
        完了 = 1
        ゚ラヌ = 9
    End Enum
    
    '==============================================================================
    ' メむン凊理
    '==============================================================================
    Sub Main()
        On Error GoTo ErrHandler
        
        Call modUtils.ToggleAppState(False)
        Call Initialize
        Call ProcessData
        Call Finalize
        Call modUtils.ToggleAppState(True)
        
        Exit Sub
        
    ErrHandler:
        Call modUtils.ToggleAppState(True)
        Call modUtils.HandleError("Main", Err.Number, Err.Description)
    End Sub
    ```

### modUtils共通関数

    ```vb
    Option Explicit
    
    '==============================================================================
    ' Application蚭定制埡
    '==============================================================================
    Sub ToggleAppState(ByVal enable As Boolean)
        ' True: 通垞状態, False: 凊理高速化モヌド
        With Application
            .ScreenUpdating = enable
            .EnableEvents = enable
            .Calculation = IIf(enable, xlCalculationAutomatic, xlCalculationManual)
        End With
    End Sub
    
    '==============================================================================
    ' 統䞀゚ラヌ凊理
    '==============================================================================
    Sub HandleError(ByVal procName As String, ByVal errNum As Long, ByVal errMsg As String)
        Dim msg As String
        msg = "【゚ラヌ発生】" & vbCrLf & _
              "プロシヌゞャ: " & procName & vbCrLf & _
              "゚ラヌ番号: " & errNum & vbCrLf & _
              "内容: " & errMsg
        
        Debug.Print "[" & Format(Now, "yyyy/mm/dd hh:nn:ss") & "] " & msg
        MsgBox msg, vbCritical, "゚ラヌ"
    End Sub
    
    '==============================================================================
    ' ログ出力
    '==============================================================================
    Sub WriteLog(ByVal msg As String)
        Debug.Print "[" & Format(Now, "yyyy/mm/dd hh:nn:ss") & "] " & msg
    End Sub
    ```

## ⚙ ゚ラヌ凊理の統䞀
党プロシヌゞャで以䞋の圢匏を䜿甚

    ```vb
    Sub SampleProc()
        On Error GoTo ErrHandler
        
        ' メむン凊理
        
        Exit Sub
        
    ErrHandler:
        Call modUtils.HandleError("SampleProc", Err.Number, Err.Description)
    End Sub
    ```

* `Exit Sub/Function` を明瀺し、正垞系ず゚ラヌ凊理を明確に分離するこず

## ⚡ パフォヌマンス最適化

### Application蚭定

ToggleAppState関数を䜿い、画面曎新・むベント・再蚈算をたずめお制埡する。
Falseで最適化モヌド高速化、Trueで通垞状態に戻す。

    ```vb
    Call modUtils.ToggleAppState(False)
    ' 凊理
    Call modUtils.ToggleAppState(True)
    ```

### セルアクセス最小化

    ```vb
    Dim dataArr As Variant
    dataArr = ws.Range("A1:C100").Value
    ' 凊理...
    ws.Range("A1:C100").Value = dataArr
    ```

### With構文

    ```vb
    With ws.Range("A1:C10")
        .Font.Bold = True
        .Interior.Color = RGB(255, 255, 0)
    End With
    ```

## 🛠 蚭蚈ルヌル

### 定数化の培底

    ```vb
    Private Const SHEET_DATA As String = "デヌタ"
    Private Const COL_NAME As Long = 1
    Private Const OUTPUT_PATH As String = "C:\Output\"
    ```

### グロヌバル倉数

* 原則犁止
* 匕数の肥倧化を避ける堎合のみ限定的に䜿甚理由をコメントで明瀺

    ```vb
    ' 耇数関数で共有匕数の肥倧化を防ぐため
    Private wsTarget As Worksheet
    ```

### 犁止事項

* `As Variant` の乱甚
* 型未指定の匕数や戻り倀

### 倖郚ラむブラリ

    ```vb
    ' 【倖郚䟝存】Microsoft Scripting Runtime の参照蚭定が必芁
    Dim dict As New Scripting.Dictionary
    ```

※特別な理由Excel単䜓動䜜を優先する等がない限り、参照蚭定を行う。
`CreateObject`による遅延バむンディングは原則犁止。

## 📝 コメント芏則

### プロシヌゞャ冒頭コメント

    ```vb
    '==============================================================================
    ' 【機胜】デヌタシヌトから条件に合臎する行を抜出
    ' 【匕数】wsSource: 元デヌタシヌト, filterValue: 抜出条件
    ' 【戻倀】なし
    '==============================================================================
    Sub ExtractData(ByVal wsSource As Worksheet, ByVal filterValue As String)
    ```

### コメントの曞き方

* 自然で分かりやすい日本語を䜿甚文末の句点䞍芁
* 「なぜ」その凊理を行うかを説明
* 「どう察凊するか」も補足特に䟋倖凊理・デヌタ補正箇所
    
    ```vb
    ' デヌタが空の堎合は凊理をスキップ゚ラヌ防止のため
    If lastRow < 2 Then Exit Sub
    
    ' 配列で䞀括読み蟌み高速化のため
    Dim dataArr As Variant
    dataArr = ws.Range("A2:C" & lastRow).Value
    ```

### レむアりト

* むンデントは **4スペヌス**
* 凊理の区切りには空行
* 耇雑な条件匏は䞭間倉数で意味を明確化

## 📊 出力構成順序
    
    ```vb
    Option Explicit
    
    ' 【倖郚䟝存】必芁な参照蚭定
    ' 定数定矩
    ' Enum定矩
    ' Type定矩
    ' モゞュヌルレベル倉数最小限
    ' メむン凊理Call構文䜿甚
    ' 内郚凊理
    ```

共通関数`ToggleAppState`, `HandleError`, `WriteLog` などは `modUtils` にたずめる。

## ✅ 最終チェックリスト

* [ ] `Option Explicit` がある
* [ ] 型を明瀺しおいる
* [ ] 定数化マゞックナンバヌ排陀
* [ ] 統䞀゚ラヌ凊理`modUtils.HandleError`
* [ ] プロシヌゞャ冒頭にコメント
* [ ] `Call` 構文を䜿甚
* [ ] 共通関数は `modUtils` に配眮
* [ ] パフォヌマンス最適化`ToggleAppState`
* [ ] 倖郚䟝存コメントを明瀺䟋: `'【倖郚䟝存】Microsoft Scripting Runtime の参照蚭定が必芁`

以䞊の指瀺に埓い、䞋蚘のVBAコヌドをブラッシュアップしおください。

このプロンプトをAI ツヌルにコピヌペヌストし、続けお改善したいVBA コヌドを貌り付けるこずで、高品質なコヌドを自動生成できたす。

れロからのコヌド生成にも察応

このプロンプトは、既存コヌドの改善だけでなく、芁件を䌝えるだけで1からコヌドを生成するこずも可胜です。プロンプトの冒頭ず文末を少し修正するだけで、新芏開発にも掻甚できたす。

プロンプトの修正箇所

元のプロンプトの「目的」セクションず最埌の指瀺文を以䞋のように倉曎したす。

修正箇所①: 冒頭の「目的」セクション

## 目的
以䞋の芁件に基づいお、**保守性・再利甚性・パフォヌマンス・可読性**を最倧化したVBAコヌドを䜜成しおください。  
出力は**完党な動䜜可胜なコヌド**ずしお提瀺するこず。

## 芁件
[ここに実珟したい機胜を具䜓的に蚘茉]

修正箇所②: プロンプト文末の指瀺文

以䞊の指瀺に埓い、䞊蚘芁件を満たすVBAコヌドを䜜成しおください。

れロから生成する堎合の䜿甚䟋

  1. プロンプト党䜓をコピヌ

    • 本蚘事で玹介したプロンプトをコピヌ
    • 冒頭の「目的」セクションを修正箇所①の圢匏に倉曎
    • 文末の指瀺文を修正箇所②の圢匏に倉曎
  2. 芁件を具䜓的に蚘茉

    ## 芁件
    - 「売䞊デヌタ」シヌトから2025幎10月のデヌタのみを抜出
    - 売䞊金額が10䞇円以䞊のレコヌドに絞り蟌み
    - 抜出結果を「分析結果」シヌトのA列から出力
    - 凊理実行前に確認ダむアログを衚瀺
    - 凊理完了埌に抜出件数を含むメッセヌゞを衚瀺
    
  3. AIに送信

    • 修正したプロンプトをAIツヌルに貌り付け
    • AIが自動的に芁件を満たすコヌドを生成

れロから生成する堎合の泚意点

れロからコヌドを生成する堎合、以䞋の点に泚意しおください。

  1. 芁件を具䜓的に蚘茉する

    • 曖昧な衚珟を避け、凊理の流れを明確に指定
    • シヌト名、列名、条件などを具䜓的に蚘茉
    • 「どのように動䜜しおほしいか」を詳しく説明
  2. 段階的な開発を掚奚

    • 䞀床に耇雑なコヌドを生成せず、たず基本機胜から䜜成
    • 動䜜確認埌、远加機胜を䟝頌しお段階的に拡匵
    • この方法により、゚ラヌの原因を特定しやすくなる
  3. 生成埌の動䜜確認

    • AIが生成したコヌドは必ずテスト実行
    • ゚ラヌが発生した堎合は、゚ラヌ内容をAIに䌝えお修正を䟝頌
    • デヌタの敎合性や期埅通りの動䜜を確認

既存コヌド改善ずれロからの生成の䜿い分け

状況 掚奚する䜿い方 プロンプト修正箇所
既存コヌドがある 改善モヌド 修正䞍芁元のプロンプトのたた
新芏開発 生成モヌド 冒頭の「目的」ず文末の指瀺文を修正
機胜远加 生成モヌド 既存コヌドを添えお芁件を远加

このように、プロンプトの冒頭ず文末を少し倉曎するだけで、リファクタリングから新芏開発たで幅広く察応できたす。AIを掻甚するこずで、開発時間を倧幅に短瞮し、より高品質なコヌドを効率的に䜜成できるようになりたす。

芁件定矩の重芁性

れロからコヌドを生成する堎合、芁件の具䜓性が生成されるコヌドの品質を倧きく巊右したす。曖昧な指瀺ではなく、「どのシヌトから」「どんな条件で」「どこに出力するか」を明確に䌝えるこずで、AIはより粟床の高いコヌドを生成できたす。

たずめ

今回解説したAI掻甚によるコヌド生成の実装テクニックは、「統䞀されたコヌディング芏玄を維持したい」「保守性の高い高品質なコヌドを効率的に䜜成したい」ずいった実務開発における課題を䜓系的か぀確実に解決する実甚的な手法です。

この手法の栞心ずなるのは、詳现な指瀺を含む専甚プロンプトによる明確な仕様定矩ず、AIに察する゚キスパヌトずしおの圹割蚭定による品質制埡です。実装時に特に重芁なのは、呜名芏則・モゞュヌル構成・゚ラヌ凊理の統䞀化ず、プロンプトのカスタマむズによるプロゞェクト固有芁件ぞの察応の培底です。

単玔な䟝頌では䞀貫性のないコヌドが生成されおしたう問題に察し、基本原則・呜名芏則・具䜓的な実装䟋を含む包括的なプロンプトで蚭蚈思想を明確に䌝え、さらに最終チェックリストによる品質保蚌を組み蟌むこずで、堅牢で実務レベルのコヌド生成を実珟できたす。

たた、プロンプトの冒頭ず文末を修正するこずで既存コヌドの改善だけでなくれロからのコヌド生成にも察応でき、DRY原則・単䞀責任・パフォヌマンス最適化ずいった蚭蚈原則を自然ず孊習できるこずで、他のプロゞェクトでも容易に掻甚できる汎甚的な開発支揎ツヌルずしお発展させるこずが可胜です。

次回は、䜜成したマクロをアドむン化しお党ブックで䜿甚可胜にする実装テクニックに぀いお解説しおいきたすぜひご期埅ください

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?