【2026年8月最新】VBAのSetステートメントとは?オブジェクト変数の作り方・使い方を徹底解説
この記事の内容
Excel VBAでマクロを書き始めると、必ずと言っていいほどぶつかる壁が「Setステートメント」です。「変数に代入するだけなのに、なぜ=だけじゃダメなの?」「Setを書き忘れたらエラーになった」——このような疑問・つまずきを持って検索している方が多いのではないでしょうか。
結論からいうと、Setは「オブジェクト」を変数に格納するときだけ必要になる特別な代入方法です。数値や文字列のような普通の値とは代入のルールが違うため、最初に仕組みを理解しておかないと、あとで原因不明のエラーに悩まされることになります。
この記事では、Setステートメントの基本文法から、Workbook・Worksheet・Rangeといった主要オブジェクトでの実践的な使い方、Nothingによる参照解放、よくあるエラーの原因と対処法まで、VBA初心者の方が迷わないように順を追って解説します。加えて、弊社(株式会社GENAI)が実際にExcel/VBA関連の業務をAIでどこまで効率化しているかという実データ、そしてVBAだけに頼らない次世代の業務自動化の考え方まで紹介します。
この記事を最後まで読むと、次のことが明確になります。
=のみ)との違い01 VBA BASICS Setステートメントとは何か オブジェクトと普通の値で、代入のルールが違う理由
VBAで変数を使うとき、多くの方は最初にDim x As Integerのような「数値」や「文字列」の変数から学びます。これらの変数への代入は、x = 10のようにイコール記号だけで完結します。ところが、Excelの「シート」や「セル範囲」のようなオブジェクトを変数に入れようとすると、同じ書き方ではエラーになってしまいます。
これは、VBAが「値そのものを代入する」処理と「オブジェクトへの参照(住所のようなもの)を代入する」処理を、意図的に区別しているためです。前者は普段どおりの=だけで済みますが、後者では先頭にSetキーワードを付けるという明示的なルールが定められています。
📚 用語解説
オブジェクト変数:Workbook(ブック)やWorksheet(シート)、Range(セル範囲)など、Excelの「モノ」そのものを参照するために使う変数。数値や文字列を直接格納する「値型の変数」とは異なり、実体そのものではなく実体への「参照」を保持する点が特徴です。
たとえば、以下の2行を比較してみてください。
| 代入したいもの | 正しい書き方 | 間違えた場合に起きること |
|---|---|---|
| 数値・文字列などの値 | x = 10s = "テスト" | Setを付けると逆にエラーになる(値にはSetを使わない) |
| Worksheet・Range・Workbookなどのオブジェクト | Set ws = Worksheets("Sheet1") | Setを省略すると実行時エラーになりやすい(詳細は第5章) |
1-1. なぜSetが必要なのか:「実体」と「参照」の違い
数値変数にx = 10と書くとき、VBAは変数xが使うメモリ領域に「10」という値そのものをそのまま書き込みます。一方、Excelのシートやセル範囲は、VBAの世界の外側にある「Excelという巨大なアプリケーションの一部」であり、変数の中に実体をコピーして持ち込むことはできません。そこでVBAは、実体そのものではなく「どこにあるか」という参照情報だけを変数に持たせる仕組みを用意しました。これがオブジェクト変数の正体です。
この「参照を渡す」という特別な代入だからこそ、VBAは書き手に対してSetという目印を要求します。もし目印がなければ、VBAは「これは値の代入なのか、参照の代入なのか」を正しく判断できません。
1-2. 具体例で見るSetの基本形
もっとも基本的な形は次のとおりです。ワークシートを1つ変数に格納する例です。
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
ws.Range("A1").Value = "こんにちは"
1行目のDimで「ws」という名前のWorksheet型の変数を宣言し、2行目のSetで実際のシート(Sheet1)への参照を代入しています。3行目からは、あたかも「Worksheets("Sheet1")」と直接書いたのと同じようにwsを使ってシートを操作できます。長いシート名やブック名を何度も書く必要がなくなり、コードが読みやすくなるのがオブジェクト変数を使う大きなメリットです。
1-3. Setを忘れるとどうなるか(先に結論)
先に結論だけ触れておくと、オブジェクトを代入する行でSetを書き忘れると、多くの場合は実行時エラーが発生します。既定のプロパティを持たないWorksheetのようなオブジェクトでは、その場で「オブジェクトが必要です」というエラーが表示されます。既定のプロパティを持つRangeのようなオブジェクトの場合は、変数の宣言方法によって挙動が変わります。ObjectやVariant型で受けている場合はエラーにならず「セルの値だけ」が代入されてしまうことがあり、Range型など具体的な型で宣言している場合はNothingへの代入とみなされ実行時エラー91になります。詳しい原因と対処法は第5章で扱います。
Setを付けるべきかどうかは「代入する右辺がオブジェクトかどうか」で決まります。左辺の変数名や見た目では判断できないため、迷ったら「これはExcelの中の“モノ”(シート・セル・ブックなど)を指しているか?」を自問するのが確実です。
02 HOW TO USE Setでオブジェクトを作成する基本手順 「宣言→代入→操作→解放」という一連の型を覚える
Setステートメントを正しく使うには、単発の書き方を覚えるだけでなく、オブジェクト変数を扱うときの一連の流れを型として身につけるのが近道です。実務で書かれるVBAコードのほとんどは、以下の4ステップの繰り返しでできています。
変数の型を
明示的に指定
オブジェクトへの
参照を格納
変数経由で
実際に操作
不要になった
参照を明示解放
2-1. ①Dim宣言:型を決めることで補完とエラーチェックが効く
オブジェクト変数を使う前に、まずDim文で変数の型を宣言します。型には、汎用のObject型と、Worksheet・Range・Workbookといった具体的な型の2種類があります。
| 宣言方法 | 書き方の例 | 特徴 |
|---|---|---|
| 具体的な型で宣言 | Dim ws As Worksheet | VBEの入力支援(インテリセンス)が効き、誤ったプロパティ名を書くと早期にエラーで気づける。実務ではこちらが基本 |
| Object型で宣言 | Dim obj As Object | あらゆるオブジェクトを格納できる万能型だが、入力支援が効きにくく、実行速度もわずかに遅くなる場合がある |
「何が入るか分かっている」場合は、できる限り具体的な型(Worksheet・Range・Workbookなど)で宣言するのがおすすめです。Object型は、実行時までどの種類のオブジェクトが入るか分からない場合や、複数の異なるアプリケーションのオブジェクト(例:Word・Outlookなど)を同じ変数で扱いたい場合に限定して使うと、コードの安全性が上がります。
2-2. ②Setで代入:Newキーワードと組み合わせるケースもある
通常はすでに存在するシートやセルを取得して代入しますが、Collectionやユーザー定義クラスのように、その場で新しいインスタンスを作るケースもあります。この場合はNewキーワードと組み合わせて使います。
Dim col As Collection
Set col = New Collection
col.Add "サンプル"
📚 用語解説
New キーワード:クラスの「新しいインスタンス(実体)」をその場で作成するためのキーワード。CollectionやDictionary、あるいは自作のクラスモジュールを使うときにSet obj = New クラス名という形で使います。既存のシートやセルのように「すでにExcel内に存在するもの」を取得する場合はNewは不要です。
2-3. ③プロパティ・メソッドで操作:変数経由で簡潔に書ける
Setで代入したあとは、変数を通じてプロパティ(値の取得・設定)やメソッド(処理の実行)を呼び出します。以下は、Setを使わない場合と使った場合を比較した例です。
| 書き方 | コード例 | コメント |
|---|---|---|
| Setを使わない(毎回フルパスで指定) | Worksheets("集計").Range("A1").Value = 1 | 同じシートを何度も指定するため冗長になりやすい |
| Setで変数化してから操作 | Set ws = Worksheets("集計") | 2行目以降が簡潔になり、シート名変更時の修正箇所も1箇所で済む |
2-4. ④Nothingで解放:後片付けを忘れない
一連の処理が終わったら、必要に応じてSet ws = Nothingのように参照を解放します。特に外部アプリケーションを操作するコードでは、この後片付けを忘れると意図しない不具合につながることがあります。詳しくは第4章で扱います。
03 CORE OBJECTS Workbook・Worksheet・Rangeオブジェクトの使い方 実務で9割以上使う3つのオブジェクトを押さえる
VBAには非常に多くの種類のオブジェクトが存在しますが、実務のマクロで使う頻度が高いのはWorkbook(ブック)・Worksheet(シート)・Range(セル範囲)の3つです。まずはこの3つの取得方法と役割の違いを整理しておくと、応用が効くようになります。
| オブジェクト | 何を表すか | 代表的な取得方法 | 主なプロパティ/メソッド |
|---|---|---|---|
| Workbook | 開いているExcelブック(ファイル)そのもの | Workbooks("ファイル名.xlsx") | Worksheets、Save、Close、Name |
| Worksheet | ブック内の1枚のシート | Worksheets("シート名")、Sheets(インデックス) | Range、Cells、Name、Rows、Columns |
| Range | シート内のセルまたはセル範囲 | Range("A1:B10")、Cells(1,1) | Value、Value2、Formula、Font、Interior |
3-1. Workbookオブジェクトの利用方法
複数のブックを同時に扱うマクロでは、どのブックを操作しているかを明示するためにWorkbookオブジェクトを変数化するのが定石です。
Dim wb As Workbook
Set wb = Workbooks.Open("C:\data\売上.xlsx")
MsgBox wb.Name
wb.Close SaveChanges:=False
📚 用語解説
Workbookオブジェクト:Excelで開いている1つのブック(ファイル)を表すオブジェクト。実行中のマクロが動いているブック自身はThisWorkbook、現在アクティブに表示されているブックはActiveWorkbookというキーワードで参照できます。複数ブックをまたぐ処理では、この2つを混同しないよう明示的にSetで変数化するのが安全です。
特に「マクロが書かれているブック」と「処理対象のブック」が別ファイルの場合、ThisWorkbookとActiveWorkbookを混同すると、意図しないファイルにデータを書き込んでしまう事故につながります。処理対象を明示的にSetで変数化しておくことは、単なる書きやすさだけでなく事故防止の意味も大きい習慣です。
3-2. Worksheetオブジェクトの利用方法
シート名の変更やシートの追加・削除が発生するマクロでは、Worksheetオブジェクトの変数化がとくに効果を発揮します。
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("集計")
ws.Cells(1, 1).Value = "見出し"
ws.Rows(1).Font.Bold = True
📚 用語解説
Worksheetオブジェクト:ブック内の1枚のシートを表すオブジェクト。シート名(文字列)やインデックス番号(左から何番目か)で取得できますが、シートの並び順は利用者の操作で簡単に変わってしまうため、実務ではシート名を指定した取得の方が事故が少なくおすすめです。
3-3. Rangeオブジェクトの利用方法:もっとも使用頻度が高い
セルの値を読み書きするRangeオブジェクトは、VBAの中でもっとも登場回数が多いオブジェクトです。Range("A1")のようにセル番地を文字列で指定する方法と、Cells(1, 1)のように行番号・列番号で指定する方法の2通りがあり、ループ処理で行番号を変数化したい場合はCellsの方が扱いやすくなります。
Dim rng As Range
Set rng = ws.Range("A1:A10")
Dim c As Range
For Each c In rng
c.Value = c.Value * 2
Next c
📚 用語解説
既定プロパティ(デフォルトメンバー):オブジェクトに1つだけ設定されている「代表的なプロパティ」のこと。Rangeオブジェクトの既定プロパティはValue(セルの値)です。そのためSetを付け忘れてx = Range("A1")と書いてしまっても、既定プロパティ経由でエラーにならず値だけが代入されてしまうことがあり、これが第5章で紹介する「気づきにくいバグ」の原因になります。
固定セルの操作ならRange、行・列番号をループで動かしたい処理ならCellsという使い分けが基本です。さらに複数セルをまとめて扱うならRange(Cells(1,1), Cells(10,1))のように組み合わせることで、開始行・終了行を変数化した柔軟な範囲指定ができます。
04 MEMORY & CLEANUP Nothingで参照を解放する重要性 「作ったら片付ける」がバグと動作不安定を防ぐ
オブジェクト変数を使い終わったら、Set 変数名 = Nothingと書いて参照を明示的に解放する習慣を紹介します。これは必須の構文ではありませんが、特定の場面では意識しておくべき重要な作法です。
4-1. Nothingが必要になる典型的な場面
VBAのプロシージャ(Sub/Function)は、処理が終了すると内部の変数は基本的に自動的に解放されます。しかし、以下のようなケースでは、明示的なNothingでの解放が意味を持ちます。
Dim appWord As Object
Set appWord = CreateObject("Word.Application")
appWord.Visible = False
' ここでWordを操作する処理
appWord.Quit
Set appWord = Nothing
📚 用語解説
メモリ解放(参照の解放):プログラムが使い終わったデータ領域を「もう使いません」とVBAに伝えること。VBAには基本的なメモリ管理の仕組みが組み込まれていますが、外部アプリケーションのプロセスのようにVBAの管理範囲の外にあるリソースは、明示的にQuitやCloseで終了させ、Nothingで参照を切り離す作法が推奨されています。
CreateObjectで起動した外部アプリケーション(Word・Outlookなど)でQuitとNothingを忘れると、画面上には見えないままそのアプリケーションのプロセスがバックグラウンドに残り続けることがあります。何度もマクロを実行するうちにプロセスが積み重なり、PCの動作が重くなる原因になるため、外部アプリケーション連携のマクロでは特に意識してください。
4-2. 通常のシート・セル操作ではそこまで神経質にならなくてよい
一方で、Worksheets("Sheet1")やRange("A1")のようにExcelブック内部のオブジェクトを扱うだけであれば、プロシージャの終了とともに変数は自動的に解放されるため、毎回Nothingを書かなくても実務上大きな問題にはなりません。「外部アプリケーションを起動したときは必ずNothing」「通常のシート操作では過度に気にしすぎない」というメリハリをつけるのが、実務的なバランス感覚です。
05 TROUBLESHOOTING よくあるエラーと対処法 Setまわりで実際につまずく典型パターンを先回りで潰す
ここでは、Setステートメントに関連して実際によく発生するエラーと、その原因・対処法を一覧にまとめます。エラーメッセージで検索してこの記事にたどり着いた方は、まずこの表から該当するものを探してみてください。
| よくあるエラーメッセージ | 主な原因 | 対処法 |
|---|---|---|
| オブジェクトが必要です | オブジェクトを代入する行でSetを書き忘れている | 代入している右辺がオブジェクトかどうかを確認し、Setを追加する |
| オブジェクト変数または With ブロック変数が設定されていません | 一度もSetされていない(Nothingのままの)オブジェクト変数を操作しようとしている | Set文が実行される前にその変数を使っていないか、条件分岐の抜けを確認する |
| 型が一致しません | 宣言した型(例:Worksheet)と、実際にSetしようとしているオブジェクトの種類が合っていない | Dimの型宣言をObject型に緩めるか、正しい型に修正する |
| 実行時エラー9:インデックスが有効範囲にありません(Subscript out of range) | 存在しないシート名・ブック名を指定してSetしようとしている | Worksheets("正しい名前")のようにシート名のスペルミス・全角半角の違いを確認する |
5-1. 「セルの値だけが代入されて気づかない」パターンに注意
第3章で触れたとおり、Rangeオブジェクトには既定プロパティ(Value)があるため、Setを書き忘れてもエラーにならずに値だけが代入されてしまうケースがあります。これはエラーが出ない分、原因究明が難しい厄介なバグです。
Dim rng As Range
rng = Range("A1") ' Setを忘れている。rngはRange型で宣言済みかつまだNothingのため、既定プロパティ経由の代入を試みたこの行で実行時エラー91「オブジェクト変数またはWithブロック変数が設定されていません」が発生する
rng.Value = 100 ' 上の行でエラーが発生し処理が止まるため、実際にはこの行に到達しない
「Setを付けたつもりで忘れていないか」を疑うクセをつけるのが最善策です。特にコピー&ペーストでコードを量産しているときに起きがちなので、オブジェクトへの代入行は書いたあと一呼吸おいて見直す習慣をおすすめします。VBE(VBAエディタ)の構文チェックだけでは検出できないタイプのミスです。
5-2. Withブロックとの組み合わせで起きる勘違い
Withステートメントを使うと同じオブジェクトへの参照を何度も書かずに済みますが、Withの中で扱う対象自体はあらかじめSetで用意しておく必要があります。「Withを使えばSetが不要になる」という誤解をしている方も見かけますが、両者は役割が異なる別々の仕組みです。
With wsのように、事前にSetした変数をWithの対象にする06 GENAI CASE STUDY 【独自データ】GENAI社内でのExcel/VBA業務削減実績 VBAで自動化していた業務を、AIでどこまで効率化できているか
ここからは、弊社(株式会社GENAI)が実際にExcel・VBA関連の業務をどのように効率化しているかを、数値を交えて紹介します。VBAは強力なツールですが、「そもそもVBAを書く時間そのものを減らしたい」というニーズに対しては、AIの活用が大きな役割を果たしています。
6-1. 弊社の導入状況
弊社ではClaude Max 20xプラン(月額$200・約30,000円)を契約し、Claude Codeを経営・営業・広告・開発・経理・秘書業務まで社内のあらゆる業務に活用しています。Excel/VBAが絡む業務も例外ではなく、マクロの新規作成・既存マクロの修正・デバッグの多くをClaude Codeとの対話で進めています。
| 業務領域 | 主な用途(Excel/VBA関連) | 概算削減時間 |
|---|---|---|
| 経理 | 請求書チェック・経費仕訳・Freee連携のExcel集計処理 | 月40時間 → 月5時間 |
| 秘書業務 | 日報・レポートのExcel集計とスケジュール調整 | 日2時間 → 日15分 |
| 開発 | VBAマクロ・Pythonスクリプトの書き捨て・不具合修正 | 都度数時間の削減(作業ごとに変動) |
上記は弊社の肌感ベースの数値であり、業種・業態・担当者のスキルによって削減時間は変動します。「完全自動化」ではなく、人間のレビュー・微調整を伴った上での実感値としてご覧ください。
6-2. 「VBAを書く」から「VBAを説明する」への変化
従来、Excelの集計処理を自動化するには、担当者自身がVBAの文法を学び、Dim・Set・Forループなどを一つずつ書いていく必要がありました。弊社では現在、この作業の多くを「やりたいこと」をClaude Codeに日本語で伝え、生成されたマクロを確認・微調整するという進め方に置き換えています。
やりたい処理を
日本語で伝える
Claude Codeが
VBA/スクリプトを生成
テストデータで
動作を検証
問題なければ
業務に組み込み
この流れの利点は、Setの書き忘れのような文法レベルのミスが起きにくいことです。Claude Codeは型宣言・オブジェクトの参照代入・Nothingでの解放といった作法を踏まえたコードを生成できるため、担当者は「出力されたコードが業務上正しく動くか」というレビューに集中できます。
07 BEYOND VBA VBAの限界とAIエージェントによる次世代の自動化 VBAを「卒業」するのではなく、「使いこなす相棒」を持つという発想
ここまでSetステートメントを中心にVBAの基本を解説してきましたが、実務でVBAを使い続けていると、いくつかの構造的な限界にぶつかります。ここでは、その限界と、AIエージェントを組み合わせることでどう乗り越えられるかを紹介します。
7-1. VBAが抱えがちな3つの課題
VBAは長年にわたってExcel業務の自動化を支えてきた優れたツールですが、実務で運用していく上ではいくつかの課題も見えてきます。
これらの課題は、VBAという言語そのものの限界というより、「一人の担当者が独力でメンテナンスし続けなければならない」という運用体制の限界に近いものです。
7-2. Claude CodeがVBAの弱点を補う3つの使い方
弊社では、VBAを完全に置き換えるのではなく、Claude Codeを「VBAを書く・直す・説明する」ための相棒として使うという方向で活用しています。
| 使い方 | 具体的な内容 | VBA単体との違い |
|---|---|---|
| コード生成 | 「やりたいこと」を日本語で伝えてマクロのたたき台を作る | ゼロから文法を調べる時間が不要になる |
| デバッグ支援 | エラーメッセージとコードを渡して原因箇所を特定してもらう | 該当行を目で追う作業を大幅に短縮できる |
| 引き継ぎ資料化 | 既存の野良マクロの処理内容を日本語で説明してもらう | 属人化したマクロのブラックボックス化を防げる |
📚 用語解説
AIエージェント:人間が細かく指示しなくても、目的を伝えるだけで複数の作業ステップを自ら計画・実行するAIのこと。Claude Codeは「このマクロのA列処理を直して」といった抽象的な指示から、原因の特定・修正案の作成までを一貫して行えるのが特徴です。
さらに一歩踏み込むと、Excelでの集計処理そのものを、VBAではなくPythonなどの別の言語で自動化するという選択肢も見えてきます。VBAはExcelというアプリケーションに縛られた言語ですが、AIエージェントを介せば「Excel前提の自動化」から「業務そのものの自動化」へと視野を広げやすくなります。
VBAの基本文法を理解していることは、AIが生成したコードを正しくレビューするための土台になります。この記事で紹介したSet・Dim・Nothingの仕組みを理解しておくことは、AIと協働する上でもむしろ価値が増しています。
08 CONCLUSION まとめ Setは「参照を渡す」という一点だけ理解すれば怖くない
この記事では、VBAのSetステートメントについて、基本文法から主要オブジェクトでの実践的な使い方、Nothingによる解放、よくあるエラーの原因と対処法、そして弊社GENAIの実運用データとAIエージェントを組み合わせた次世代の自動化までを解説しました。最後にポイントを振り返ります。
Setステートメントは、VBAを学ぶ人が最初にぶつかる壁の一つですが、「オブジェクトは実体ではなく参照を渡す」という原則さえ理解してしまえば、それほど難しいものではありません。まずは今回紹介した「Dim→Set→操作→Nothing」という型を、実際に手を動かしながら覚えていってください。
VBAの属人化・保守負担、AIエージェントで解消しませんか
「野良マクロ」の引き継ぎ、エラー対応、Excel業務の自動化設計。
弊社の実運用ノウハウをベースに、個別に導入設計のご相談を承ります。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
よくある質問
Q. Setステートメントを付けるべきかどうか、簡単に見分ける方法はありますか?
A. 右辺に書いているものが「Excelの中のモノ(シート・セル範囲・ブックなど)」であればSetが必要、「数値や文字列などの単純な値」であればSet不要と考えるのが基本です。迷ったときは、その対象がプロパティやメソッドを持つ「オブジェクト」かどうかを確認すると判断しやすくなります。
Q. SetとLetの違いは何ですか?
A. Letは値そのものを代入するための本来のキーワードで、現在のVBAでは省略するのが一般的なため、普段書いているx = 10は実質的にLetが省略された形です。一方Setはオブジェクトの参照を代入するための専用キーワードで、省略はできません。両者は代入の対象(値かオブジェクトか)によって明確に使い分けられています。
Q. Setを忘れるとどんなエラーが出ますか?
A. Worksheetのように既定プロパティを持たないオブジェクトでは「オブジェクトが必要です」という実行時エラーが発生します。Rangeのように既定プロパティ(Value)を持つオブジェクトでは、エラーにならずに値だけが代入されてしまうことがあり、こちらの方がむしろ原因究明に時間がかかる厄介なパターンです。
Q. Nothingは必ず書かないといけませんか?
A. 必須ではありません。通常のシート・セル操作であれば、プロシージャの終了とともに変数は自動的に解放されるため、毎回書かなくても大きな問題にはなりません。ただし、CreateObjectで外部アプリケーションを起動した場合や、モジュールレベルの変数として長期間オブジェクトを保持する場合は、明示的にNothingで解放することを推奨します。
Q. Object型で宣言するのと、Worksheet型のように具体的な型で宣言するのとでは、何が違いますか?
A. 具体的な型(Worksheet・Range・Workbookなど)で宣言すると、VBE(VBAエディタ)の入力支援が効き、誤ったプロパティ名を書いたときに早期にエラーとして気づけます。Object型は汎用性が高い一方で入力支援が効きにくく、実務では「何が入るか分かっている」場合は具体的な型を優先するのが基本です。
Q. For Each文でオブジェクトをループ処理するときも、Setは必要ですか?
A. For Each文自体は内部的にSetと同等の処理を自動で行っているため、ループ変数に対して明示的にSetを書く必要はありません。ただし、ループ変数自体はオブジェクト型(Range・Worksheetなど)として宣言しておく必要があります。
Q. VBAの文法を覚えるより、最初からAIにコードを書かせた方が早いのでは?
A. 短期的にはAIにコードを生成させる方が速いケースが多いですが、生成されたコードが業務上正しく動作しているかを判断するには、SetやDim、オブジェクトの基本概念を理解しておく必要があります。弊社でも、VBAの基礎を理解した担当者がAIの生成結果をレビューする体制を推奨しています。基礎理解とAI活用は対立するものではなく、両輪として組み合わせるのが実務的です。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




