マクロを実行したら、いきなり画面が止まって「実行時エラー ‘1004’: アプリケーション定義またはオブジェクト定義のエラーです」——。この赤い箱が出たとき、あなたが最初に押すべきボタンは[デバッグ]です。押すとVBAの画面に切り替わり、1行だけ黄色く光ります。そこが原因の行です。そして1004の正体は、ほとんどの場合「VBAが指定した”モノ”が見つからない」こと。確認するのは3つだけ。①Sheets("○○") のシート名の打ち間違い(余分なスペース・全角半角の混在)、②そのシートやブックが開いていない/存在しない、③Range("A1:A0") のような存在しないセル範囲を指している。この3つで大半が直ります。以下の早見表から、あなたの黄色い行に当てはまるものを選んでください。

- まず[デバッグ]を押して「黄色い行」を見る(症状別 早見表)
- 原因1:シート名・ブック名の指定ミス(いちばん多い)
- 原因2:閉じているブック/別ブックのセルを直接さわっている
- 原因3:セル範囲の書き方が壊れている(変数が 0 や空になっている)
- 原因4:Select / Activate を使っている(根本解決は「使わない」)
- 原因5:シートやブックが「保護」されている/読み取り専用で開いている
- 原因6:Copy / PasteSpecial のサイズが合っていない
- 原因7:結合セルやフィルターがかかった範囲を操作している
- 二度と止まらないための書き方(ここが本当の解決です)
- よくある質問(Q&A)
- 次に読むと、もっと自動化が進みます
- まとめ:1004は「モノが見つからない」の合図。あなたのミスではありません
- 出典(一次情報)
まず[デバッグ]を押して「黄色い行」を見る(症状別 早見表)
「実行時エラー 1004」は、エクセルVBAのエラーの中でもいちばん原因の種類が多いエラーです。逆に言えば、エラー文だけを見ていても絶対に原因は分かりません。ここで多くの方が「1004 直し方」で検索して、書いてあることを片っ端から試して疲れてしまいます。
やることは1つです。エラーの箱に出ている[デバッグ]をクリックしてください。VBAの編集画面(VBE)が開き、止まった1行が黄色く塗られます。その行に何が書いてあるかで、原因はほぼ確定します。
💡 黄色い行=「悪い行」とは限りません。正確には「実行しようとして失敗した行」です。原因そのものは、その少し上で変数に入れた値だったりします。まずは黄色い行を起点に、上へ数行たどるクセをつけると一気に解決が早くなります。
あなたの黄色い行はどれ?
| 黄色く光っている行に書いてあるもの | 疑うこと | 進む先 |
|---|---|---|
Sheets("売上") / Worksheets("Sheet1") のようにシート名が書いてある |
その名前のシートが本当にあるか(スペース・全半角) | 原因1 |
Workbooks("○○.xlsx") など別ファイル名が書いてある |
そのブックを開いているか | 原因2 |
Range("A1:A" & i) のように変数で範囲を作っている |
変数が 0 や空になっていないか | 原因3 |
.Select / .Activate で終わっている |
対象のシートがアクティブでない | 原因4 |
値を書き込む行(= 100 や .Value =) |
シートやブックが保護・読み取り専用 | 原因5 |
.Copy / .PasteSpecial がある |
コピー元と貼り付け先のサイズ違い | 原因6 |
.Delete / .Sort / .Merge など範囲を丸ごと操作 |
結合セル・フィルターが範囲に混ざっている | 原因7 |
⚠️ お使いのエクセルのバージョンや言語設定によって、メッセージが「アプリケーション定義またはオブジェクト定義のエラーです」ではなく「Range メソッドは失敗しました: ‘_Global’ オブジェクト」「指定された名前のシートが見つかりません」のように表示されることがあります。番号が1004なら、対処は同じと考えて読み進めて大丈夫です。
直す前に必ずやること:黄色い行の中身を「見る」
黄色い行にマウスカーソルを合わせるだけで、変数の中身が小さな吹き出しで表示されます。これが最強の武器です。もっと確実に見たいときは、VBAの画面で [表示]タブ → [ウィンドウ]グループ → [イミディエイト ウィンドウ](ショートカット Ctrl+G)を開き、次の1行を打って Enter を押してください。
? ActiveSheet.Name
今どのシートを見ているかが表示されます。同じ要領で ? i(変数 i の中身)、? Sheets.Count(シートの数)も確認できます。推測せず、目で見る。これだけで解決時間は半分になります。
原因1:シート名・ブック名の指定ミス(いちばん多い)
1004の最頻出がこれです。VBAは Sheets("売上") と書かれたら、「売上」という名前のシートを1文字違わず探します。1文字でも違えば「そんなモノはありません」=1004です。
❌ ダメな書き方
Sub NGSheetName()
Sheets("売上 ").Range("A1").Value = 100 '← 「売上」の後ろに半角スペース
End Sub
✅ 直した書き方
Sub OKSheetName()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("売上") '← ブックも明示して確実に取る
ws.Range("A1").Value = 100
End Sub
シート名の食い違いは、目視ではまず気づけません。次のマクロを1回流して、実際のシート名を機械に読ませてください。これが最短ルートです。
Sub シート名を全部表示()
Dim ws As Worksheet
Dim s As String
For Each ws In ThisWorkbook.Worksheets
s = s & "[" & ws.Name & "]" & vbCrLf '← [ ] で挟むと余分な空白が見える
Next ws
MsgBox s
End Sub
[売上 ] のようにカッコの内側に空きがあれば、それが犯人です。VBA側のコードを直すか、シートのタブ名から余分なスペースを削ってください。
つまずき対策
「見た目は同じなのに一致しない」——ほぼ全角と半角の混在です。Sheet1(半角)と Sheet1(全角)は、VBAにとって完全に別の文字列です。数字の「1」と英字の「l」、ハイフンと長音符「ー」も定番の落とし穴です。上のマクロで表示された名前をコピーしてコードに貼り付けるのが確実です。
「シート名を後から変えられてしまう」——共有ファイルなら十分あり得ます。その場合は名前ではなくインデックス番号(Worksheets(1))やオブジェクト名(VBA画面の左側に出る Sheet1 という名前。タブ名を変えても変わりません)で指定すると、名前変更に強いマクロになります。
原因2:閉じているブック/別ブックのセルを直接さわっている
VBAは閉じているブックのセルを直接読み書きできません。「別のファイルからデータを取ってくる」タイプのマクロで、ファイルを開かずに実行すると1004で止まります。
❌ ダメな書き方
Sub NGClosedBook()
'「元データ.xlsx」を開いていないのにさわろうとしている
MsgBox Workbooks("元データ.xlsx").Worksheets("Sheet1").Range("A1").Value
End Sub
✅ 直した書き方
Sub OKOpenThenRead()
Dim wb As Workbook
Dim v As Variant
Set wb = Workbooks.Open("C:\data\元データ.xlsx") '← まず開く
v = wb.Worksheets("Sheet1").Range("A1").Value
wb.Close SaveChanges:=False '← 読んだら閉じる
MsgBox v
End Sub
「もう開いているかどうか分からない」場合は、開いていれば使い、閉じていれば開く、という書き方が安全です。
Sub OKOpenIfNeeded()
Dim wb As Workbook
Dim opened As Boolean
On Error Resume Next
Set wb = Workbooks("元データ.xlsx") '← 開いていればここで取れる
On Error GoTo 0
If wb Is Nothing Then
Set wb = Workbooks.Open("C:\data\元データ.xlsx")
opened = True
End If
MsgBox wb.Worksheets("Sheet1").Range("A1").Value
If opened Then wb.Close SaveChanges:=False
End Sub
つまずき対策
「拡張子まで書いていますか?」——Workbooks("元データ") では見つかりません。Workbooks("元データ.xlsx") のように拡張子込みのファイル名が必要です。ただしWindowsの設定で拡張子が非表示だと、本当は .xlsm なのに .xlsx だと思い込んでいる、というすれ違いも起きます。エクスプローラーの[表示]タブ → [表示/非表示]グループ → [ファイル名拡張子]にチェックを入れて確認してください。
「フォルダーの場所が人によって違う」——C:\Users\あなたの名前\... をコードに直書きすると、他の人のPCで必ず落ちます。マクロ入りファイルと同じフォルダーに置くルールにして、ThisWorkbook.Path & "\元データ.xlsx" と書くのがおすすめです。
原因3:セル範囲の書き方が壊れている(変数が 0 や空になっている)
これは「昨日まで動いていたのに今日は止まる」タイプの1004です。原因はコードではなくデータにあります。
Range("A1:A" & i) と書いたとき、変数 i が 0 なら、VBAには Range("A1:A0") という存在しない範囲が渡されます。i が空なら Range("A1:A") です。どちらも「そんなモノはありません」=1004。
❌ ダメな書き方
Sub NGRange()
Dim lastRow As Long
lastRow = Worksheets("売上").Cells(Rows.Count, 1).End(xlUp).Row
'↑ データが1行も無いシートだと lastRow が 1 や 0 になることがある
Worksheets("売上").Range("A2:A" & lastRow - 1).ClearContents '← A2:A0 になり得る
End Sub
✅ 直した書き方
Sub OKRange()
Dim ws As Worksheet
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("売上")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
If lastRow < 2 Then
MsgBox "データがありません。処理を中止します。"
Exit Sub '← 空のときは何もしないで抜ける
End If
ws.Range("A2:A" & lastRow).ClearContents
End Sub
ポイントは「範囲を作る前に、その範囲が成り立つか確かめる」こと。If lastRow < 2 Then Exit Sub の1行を足すだけで、このタイプの1004はほぼ消えます。
つまずき対策
「範囲は正しそうなのに止まる」——シートに 65,536行の壁が絡んでいることがあります。古い形式(.xls)で保存されたブックでは、行数が65,536・列数が256までしかありません。ここに Rows.Count(新しい形式なら1,048,576)で作った範囲を渡すと1004です。上の「✅直した書き方」のように ws.Rows.Count とシートを明示して書くと、そのシートの本当の行数が使われるので安全です。
「1行だけ処理すると落ちる」——Range("A2:A" & lastRow) で lastRow が 2 のとき、範囲は A2:A2。これは有効なので問題ありません。落ちるのは 1 以下のときだけです。
原因4:Select / Activate を使っている(根本解決は「使わない」)
ネットで拾ったマクロや、エクセルの「マクロの記録」で作ったコードには .Select と .Activate が大量に入っています。これが1004の隠れた大量発生源です。
理由はシンプルで、アクティブでないシートのセルは選択できないから。「Sheet2を表示していないのに、Sheet2のセルをSelectしろ」と言われたVBAは、1004で止まります。
❌ ダメな書き方
Sub NGSelect()
Sheets("集計").Range("A1").Select '← 「集計」を表示していないと1004
Selection.Value = "合計"
End Sub
✅ 直した書き方(Selectを消す)
Sub OKNoSelect()
ThisWorkbook.Worksheets("集計").Range("A1").Value = "合計"
End Sub
3行が1行になりました。Select はほぼ全部消せます。「選んでから何かする」ではなく「何をするか、を直接書く」のがVBAの本来の書き方です。速度も体感で変わります。
同じシートを何度もさわるなら、With ステートメントを使うと読みやすくなります。With は「このオブジェクトに対して、一連の処理をまとめて行う」ための書き方です(Microsoft Learn)。
Sub OKWith()
With ThisWorkbook.Worksheets("集計")
.Range("A1").Value = "合計"
.Range("B1").Value = 12345
.Range("A1:B1").Font.Bold = True
End With
End Sub
つまずき対策
「どうしてもSelectが必要な場面」——マクロの最後に「見てほしいセルにカーソルを置いておく」ような用途は残ります。その場合はシートをアクティブにしてから選択してください。
Sub OKSelectIfYouMust()
With ThisWorkbook.Worksheets("集計")
.Activate '← 先にシートを表示する
.Range("A1").Select '← そのうえで選択
End With
End Sub
「非表示のシートは選択できない」——シートが非表示だと .Activate も1004になります。.Visible = xlSheetVisible で先に表示するか、そもそも Select を使わない書き方に直しましょう。
原因5:シートやブックが「保護」されている/読み取り専用で開いている
コードは完璧なのに、書き込む瞬間だけ止まる。これは保護が原因のことが多いです。
まず、あなたのファイルがどの状態か確認してください。
| 状態 | 見分け方 | 対処 |
|---|---|---|
| シートの保護 | [校閲]タブ →[保護]グループが「シート保護の解除」になっている | 解除するか、VBAで一時解除 |
| ブックの保護 | 同じく[校閲]タブに「ブックの保護」が押された状態 | シートの追加・削除ができない |
| 読み取り専用 | タイトルバーに「[読み取り専用]」と出ている | 閉じて開き直す/別名保存 |
| 他の人が開いている | 開くときに「使用中」のメッセージが出た | 相手が閉じるのを待つ |
❌ ダメな書き方
Sub NGProtected()
Worksheets("請求書").Range("C5").Value = 1000 '← 保護されていると1004
End Sub
✅ 直した書き方(一時的に解除して、必ず戻す)
Sub OKUnprotect()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("請求書")
ws.Unprotect Password:="1234" '← パスワードが無いなら Password: は不要
ws.Range("C5").Value = 1000
ws.Protect Password:="1234" '← 処理が終わったら必ず保護し直す
End Sub
つまずき対策
「パスワードが分からない」——ファイルの作成者に確認してください。保護は意図的にかけられたものです。解除方法を無理に探すより、作成者に「この列だけ編集を許可してほしい」と頼むほうが早く、安全です。
「保護は解除したのに、まだ止まる」——シートではなくセル単位のロックが残っている可能性があります。また、ファイル自体が読み取り専用推奨で開かれている場合もあります。タイトルバーを一度確認しましょう。
💡 保護マクロを書くときの鉄則。「解除 → 処理 → 保護し直す」の3点セットにしてください。途中でエラーが出ると解除されたまま放置されます。それが心配なら、後述の On Error GoTo で「何があっても最後に保護し直す」形にするのが安全です。
原因6:Copy / PasteSpecial のサイズが合っていない
コピー&貼り付けを自動化したときの定番1004です。VBAは「コピー元と貼り付け先の形が違う」と拒否します。
❌ ダメな書き方
Sub NGPaste()
Worksheets("元").Range("A1:C10").Copy
Worksheets("先").Range("A1:B10").PasteSpecial xlPasteValues '← 3列を2列に貼れない
End Sub
✅ 直した書き方(貼り付け先は「左上のセル1つ」でいい)
Sub OKPaste()
Worksheets("元").Range("A1:C10").Copy
Worksheets("先").Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False '← 点滅する枠線を消す
End Sub
貼り付け先に左上の1セルだけを指定すれば、サイズ違いのエラーは起きません。
さらに、値をコピーするだけならクリップボードを使わない書き方が最速・最安定です。Copy はクリップボードを経由するため、他のアプリの操作に邪魔されると突然1004になることがあります。
Sub OKValueCopy()
Worksheets("先").Range("A1:C10").Value = Worksheets("元").Range("A1:C10").Value
End Sub
1行です。書式は引き継がれませんが、値だけ移せば十分という場面ならこれが最強です。
つまずき対策
「フィルターで絞った結果を貼りたい」——絞り込み後は行が飛び飛びなので、そのままではサイズが合いません。SpecialCells(xlCellTypeVisible) で「見えているセルだけ」を対象にしてから Copy してください。
Sub OKVisibleOnly()
Worksheets("元").Range("A1:C100").SpecialCells(xlCellTypeVisible).Copy
Worksheets("先").Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
「途中でクリップボードが空になる」——Copy と PasteSpecial の間に MsgBox や他の処理を挟むと、コピー状態が解除されて1004になります。コピーしたら、すぐ貼る。これが原則です。
原因7:結合セルやフィルターがかかった範囲を操作している
最後は、範囲そのものが「素直な四角形になっていない」ケースです。
セルの結合がある範囲に対して Sort(並べ替え)、Delete(削除)、Merge を実行すると、VBAは「この操作はこの範囲に適用できません」と判断して1004を返します。エクセルの画面から手作業でやったときに「この操作を行うには、すべての結合セルを同じサイズにする必要があります」と怒られるのと、まったく同じ現象です。
❌ ダメな書き方
Sub NGMerged()
'見出し行に結合セルが混ざっている範囲を、そのまま並べ替え
Worksheets("売上").Range("A1:D50").Sort _
Key1:=Worksheets("売上").Range("B1"), Order1:=xlAscending, Header:=xlYes
End Sub
✅ 直した書き方(結合を解除してから操作する)
Sub OKUnmergeThenSort()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("売上")
ws.Range("A1:D50").UnMerge '← まず結合を解除
ws.Range("A1:D50").Sort _
Key1:=ws.Range("B1"), Order1:=xlAscending, Header:=xlYes
End Sub
「結合を解除したら見た目が崩れる」場合は、結合の代わりに[セルの書式設定]→[配置]タブ→[横位置]→[選択範囲内で中央]を使うと、見た目はそのままで結合を避けられます。この考え方は、手作業でつまずいたときにも効きます。詳しくはこちらの記事にまとめました。

つまずき対策
「フィルターがかかったまま行を削除したら止まった」——絞り込み中の削除は動作が不安定です。処理の先頭で ws.AutoFilterMode = False と書いてフィルターを解除してから操作してください。
「どこが結合セルか分からない」——次のマクロで一発で分かります。
Sub 結合セルを探す()
Dim c As Range
Dim s As String
For Each c In ActiveSheet.UsedRange
If c.MergeCells Then s = s & c.Address(False, False) & " "
Next c
If s = "" Then s = "結合セルはありません。"
MsgBox s
End Sub

二度と止まらないための書き方(ここが本当の解決です)
原因を1つずつつぶすのも大事ですが、そもそも1004が出にくいコードの書き方を覚えると、明日からのストレスが激減します。3つだけ紹介します。
1. Option Explicit を必ず1行目に書く
これはモジュールの中のすべての変数を、宣言してから使うことを強制する命令です(Microsoft Learn)。
Option Explicit '← モジュールの1行目に書く
Sub Sample()
Dim lastRow As Long
lastRow = 10
MsgBox lastRwo '← 打ち間違い。実行前にエラーで教えてくれる
End Sub
これを書いていないと、lastRwo という新しい空っぽの変数が勝手に作られ、Range("A1:A" & lastRwo) が Range("A1:A") になって——1004です。原因3の正体はこれだった、というケースが本当に多いのです。
毎回自動で書かせる設定もあります。VBAの画面で [ツール]メニュー → [オプション] → [編集]タブ → [変数の宣言を強制する]にチェック。これで新しいモジュールの1行目に自動で入ります。今日、この5秒の設定だけはやっておいてください。
2. シートは必ず「どのブックの」まで書く
Sheets("売上") は、実は ActiveWorkbook.Sheets("売上") の省略形です。つまり「今、手前に表示されているブック」を見に行きます。マクロの実行中に別のブックが手前に来ると、探す場所が変わって1004になります。
'❌ 曖昧
Sheets("売上").Range("A1").Value = 1
'✅ 確実(マクロが入っているブックの、売上シート)
ThisWorkbook.Worksheets("売上").Range("A1").Value = 1
Worksheets プロパティは、指定したブックの中のワークシートを返します(Microsoft Learn)。Sheets はグラフシートも含むので、ワークシートだけを扱うなら Worksheets のほうが安全です。
3. On Error は「握りつぶす」ためではなく「後始末する」ために使う
1004が出るからといって、先頭に On Error Resume Next と書いてエラーを見えなくするのはいちばん危険な対処です。エラーは消えますが、処理も抜け落ちたまま最後まで走ります。「エラーは出ないのに、なぜか数字が合わない」という、もっと厄介な問題に化けます。
正しい使い方は、「何があっても後始末をする」です。On Error GoTo は、エラーが起きたときに指定した場所へ処理を飛ばす命令です(Microsoft Learn)。
Option Explicit
Sub SafeMacro()
Dim ws As Worksheet
On Error GoTo ErrHandler '← エラーが起きたら下へ飛ぶ
Application.ScreenUpdating = False
Set ws = ThisWorkbook.Worksheets("売上")
ws.Unprotect
ws.Range("A2:A100").ClearContents
ws.Protect
CleanUp:
Application.ScreenUpdating = True '← 正常時もエラー時も必ず戻す
Exit Sub
ErrHandler:
MsgBox "エラー番号 " & Err.Number & vbCrLf & Err.Description, vbExclamation
Resume CleanUp '← 後始末に合流してから終わる
End Sub
この形にしておくと、1004が出ても画面が固まったままにならず、エラーの内容もきちんと表示されます。エラー番号と説明が出るので、次の調査もぐっと楽になります。
「変数の型をきちんと宣言する」考え方は、数式でいえば「セルの表示形式を揃える」のと同じです。エクセル側で数値が文字列になっていて計算が合わない、というトラブルとも根っこは同じなので、あわせて読んでおくと理解が深まります。

よくある質問(Q&A)
Q1. [デバッグ]を押したら、パスワードを聞かれました。
そのマクロはVBAプロジェクトにパスワード保護がかけられています。作成者以外は中身を見られない設定です。作成者に連絡して確認してください。無理にこじ開ける方法は、業務ファイルではトラブルの元になるのでおすすめしません。
Q2. 「実行時エラー ‘1004’」ではなく「’424′ オブジェクトが必要です」と出ました。
これは別のエラーですが、原因はよく似ています。424は変数にオブジェクトが入っていないときに出ます。よくあるのは Set の書き忘れです。
'❌ Set が無い
Dim ws As Worksheet
ws = ThisWorkbook.Worksheets("売上")
'✅ オブジェクトを入れるときは Set が必要
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("売上")
Q3. 「’9′ インデックスが有効範囲にありません」との違いは?
9番は「その番号・その名前のものが、コレクションの中に存在しない」ときのエラーです。Worksheets("存在しない名前") や Worksheets(5)(シートが3枚しかない)で出ます。1004とは番号が違うだけで、やることは同じ——原因1の「シート名を全部表示」マクロで実在を確かめてください。
Q4. 自分のPCでは動くのに、同僚のPCでは1004になります。
次の3つを順に疑ってください。①ファイルの保存場所がコードに直書きされている(原因2のつまずき対策)、②同僚のエクセルのバージョンが古い(.xls の行数上限=原因3のつまずき対策)、③同僚側で別のブックが手前にある状態で実行している(「二度と止まらないための書き方」の2番)。ほとんどがこの3つのどれかです。
Q5. そもそもマクロを実行しようとすると、黄色いバーが出て動きません。
それは1004ではなく、マクロが起動する前で止まっている状態です。手順が違うので、こちらの記事を先に読んでください。

次に読むと、もっと自動化が進みます
マクロで自動化したい作業の筆頭が「集計」です。そもそも合計が合わない状態のまま自動化すると、間違いが高速で量産されます。先に土台を固めておきましょう。

「VBAはまだ早い」と感じるなら、まずは数式で自動化の感覚をつかむのが近道です。関数1つで仕事が変わる体験を、こちらで。

まとめ:1004は「モノが見つからない」の合図。あなたのミスではありません
今日の要点を、もう一度短く整理します。
- エラーが出たら、まず[デバッグ]→ 黄色い行を見る。原因はそこから数行以内にある。
- 原因1:シート名の打ち間違い(余分なスペース・全半角)。「シート名を全部表示」マクロで実物を確認する。
- 原因2:閉じているブックはさわれない。
Workbooks.Openで開いてから読む。 - 原因3:
Range("A1:A0")のような空の範囲。If lastRow < 2 Then Exit Subを足す。 - 原因4:
Select/Activateは消す。「選んでから」ではなく「直接書く」。 - 原因5:保護は「解除 → 処理 → 保護し直す」の3点セットで。
- 原因6:貼り付け先は左上の1セルだけを指定する。値だけなら
.Value = .Valueが最速。 - 原因7:結合セル・フィルターを先に解除してから範囲を操作する。
- 予防策は3つ。
Option Explicit/ThisWorkbook.Worksheetsで明示/On Error GoToで後始末。
「実行時エラー 1004」という文字列は、たしかに冷たく見えます。でも中身を訳すと、「あなたが言った”それ”が、私には見つかりませんでした」という、ただの報告です。怒られているわけでも、あなたにセンスが無いわけでもありません。エクセルが「どこを探せばいいか分からない」と困っているだけです。
そして今日、あなたはその”どこ”を特定する方法を手に入れました。[デバッグ]を押して黄色い行を見る。この動作ができる人は、職場でもそう多くありません。明日、隣の席で誰かが1004で固まっていたら、そっと「デバッグ、押してみてください」と言ってあげてください。それだけで、あなたは「VBAが分かる人」になります。
40代からのリスキリングは、全部を覚え直すことではありません。詰まったときに、詰まった場所を自分で見つけられるようになることです。その力は、一度身につけば一生使えます。今日がその1日目です。
出典(一次情報)
- Worksheet.Range プロパティ (Excel) – Microsoft Learn
- Application.Worksheets プロパティ (Excel) – Microsoft Learn
- Option Explicit ステートメント (VBA) – Microsoft Learn
- On Error ステートメント (VBA) – Microsoft Learn
- With ステートメント (VBA) – Microsoft Learn
※ エラーの表示文言やメニュー名は、お使いのエクセルのバージョン・更新チャネル・言語設定によって異なる場合があります。ご自身の画面の表示に合わせて読み替えてください。
