Excel VBA 質問スレッド №1387 (解決済)
エラー1004の対処法
投稿者 : 困り眉 投稿日時 : 2023/04/26(Wed) 11:28:54 OS : Windows 11 EXCEL : Excel 2019
有識者の皆様の知恵をお借りしたく投稿いたしました。
下記VBAで出力を行うと、http://club-vba.tokyo/vba-delete-error/#toc3 のサイトに書かれているエラーが出てしまいます。
このエラーを解消するには、どこを修正すればよいでしょうか?
よろしくお願いいたします。
有識者の皆様の知恵をお借りしたく投稿いたしました。
下記VBAで出力を行うと、http://club-vba.tokyo/vba-delete-error/#toc3 のサイトに書かれているエラーが出てしまいます。
このエラーを解消するには、どこを修正すればよいでしょうか?
よろしくお願いいたします。
Sub outputFile()
On Error GoTo ERR_HANDLER
Dim mywb As Workbook
Dim targetwb As Workbook
Dim sheetcnt As Long
Dim targetsheet As Worksheet
Dim sheetcheck As Boolean
Dim intRow As Long
Dim i As Variant
Dim FSO As Variant
Dim c As Variant
Dim fPath As String
Dim strOutputFileName As String
Dim ws
Dim strDay
If Range(dateRange) = "" Then
MsgBox "日付が設定されていません。", vbExclamation
Exit Sub
End If
GP_StopSCUPD
fPath = ThisWorkbook.Path & "\"
strDay = Range(dateRange)
For i = 1 To 7
strOutputFileName = fPath & "配置表_" & Format(strDay, "yymmdd") & ".xlsx"
Set mywb = ActiveWorkbook
Set targetwb = Workbooks.Add
ThisWorkbook.Sheets(Array("配置表1週間分", "隊員名簿")).Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
targetwb.Sheets(ActiveSheet.Name).Name = "配置表"
Application.DisplayAlerts = False
For Each ws In targetwb.Sheets
If ws.Name = "Sheet1" Then
ws.Delete
Exit For
End If
Next ws
Set targetsheet = targetwb.Sheets("配置表")
For Each c In targetsheet.Shapes
c.Delete
Next
With targetsheet
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 1
.Columns("A:A").Delete Shift:=xlToLeft
If i = 1 Then
.Rows("19:120").Delete Shift:=xlUp
ElseIf i = 2 Then
.Rows("36:120").Delete Shift:=xlUp
.Rows("2:18").Delete Shift:=xlUp
ElseIf i = 3 Then
.Rows("53:120").Delete Shift:=xlUp
.Rows("2:35").Delete Shift:=xlUp
ElseIf i = 4 Then
.Rows("70:120").Delete Shift:=xlUp
.Rows("2:52").Delete Shift:=xlUp
ElseIf i = 5 Then
.Rows("87:120").Delete Shift:=xlUp
.Rows("2:69").Delete Shift:=xlUp
ElseIf i = 6 Then
.Rows("104:120").Delete Shift:=xlUp
.Rows("2:86").Delete Shift:=xlUp
ElseIf i = 7 Then
.Rows("2:103").Delete Shift:=xlUp
End If
.Range(Cells(2, 1), Cells(18, 1)).Copy
.Range("A19").PasteSpecial
.Range("L2:U18").Cut
.Range("B19").Select
ActiveSheet.Paste
.Range("A35").Borders(xlEdgeBottom).Weight = xlMedium
.Range("B19:B35").Borders(xlEdgeLeft).Weight = xlMedium
.Columns("A:A").EntireColumn.AutoFit
.Range("R1") = ""
.Range("J1") = strDay
.Range("J1").NumberFormatLocal = "yyyy年mm月dd日(aaa)"
.Range("J1:K1").Merge
.Range("A1").Select
End With
Application.DisplayAlerts = True
'印刷設定
Application.ActivePrinter = "Microsoft Print to PDF on Ne01:"
Application.PrintCommunication = False
ActiveSheet.PageSetup.PrintArea = "A1:K35"
With Worksheets("配置表").PageSetup
.PaperSize = xlPaperB4
.Orientation = xlLandscape
.CenterHorizontally = True
.Zoom = False
.FitToPagesWide = 1
End With
Application.PrintCommunication = True
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(strOutputFileName) = True Then
FSO.DeleteFile strOutputFileName
End If
ActiveWorkbook.SaveAs strOutputFileName
ActiveWorkbook.Close
strDay = DateAdd("d", 1, strDay)
Next i
MsgBox "ファイルの保存が完了しました。", vbInformation
QUIT_OPER:
GP_StartSCUPD
Exit Sub
ERR_HANDLER:
MsgBox Err.Number & ")" & Err.Description, vbExclamation
GoTo QUIT_OPER:
End Sub
スポンサーリンク
[返信 1] Re : エラー1004の対処法
投稿者 : さんこう 投稿日時 : 2023/04/26(Wed) 12:17:23
これ↓があると、エラーの原因が見えなくなってしまいます。
On Error GoTo ERR_HANDLER
エラーが解消されるまでは、コメントアウトしておくといいでしょう。
これ↓があると、エラーの原因が見えなくなってしまいます。
On Error GoTo ERR_HANDLER
エラーが解消されるまでは、コメントアウトしておくといいでしょう。
[返信 2] Re : エラー1004の対処法
投稿者 : 困り眉 投稿日時 : 2023/04/26(Wed) 12:40:11
■[返信 1] さんこうさん(2023-04-26 12:17:23)の記事
> これ↓があると、エラーの原因が見えなくなってしまいます。
>
> On Error GoTo ERR_HANDLER
>
> エラーが解消されるまでは、コメントアウトしておくといいでしょう。
>
>
さんこうさん、返信ありがとうございます!
コメントアウトして出力してみると、
実行時エラー 1004エラー
Rangeクラスのdeleteメソッドが失敗しました。
と表示されました。調べながら修正を試みてますが、
Excelデータの軽量化のため、Accessのデータベースを
参照するようになってからこの調子です。
またアドバイス等ございましたら、何卒宜しくお願い致します。
■[返信 1] さんこうさん(2023-04-26 12:17:23)の記事
> これ↓があると、エラーの原因が見えなくなってしまいます。
>
> On Error GoTo ERR_HANDLER
>
> エラーが解消されるまでは、コメントアウトしておくといいでしょう。
>
>
さんこうさん、返信ありがとうございます!
コメントアウトして出力してみると、
実行時エラー 1004エラー
Rangeクラスのdeleteメソッドが失敗しました。
と表示されました。調べながら修正を試みてますが、
Excelデータの軽量化のため、Accessのデータベースを
参照するようになってからこの調子です。
またアドバイス等ございましたら、何卒宜しくお願い致します。
[返信 3] Re : エラー1004の対処法
投稿者 : 困り眉 投稿日時 : 2023/04/26(Wed) 15:41:32
■[返信 2] 困り眉さん(2023-04-26 12:40:11)の記事
> ■[返信 1] さんこうさん(2023-04-26 12:17:23)の記事
> > これ↓があると、エラーの原因が見えなくなってしまいます。
> >
> > On Error GoTo ERR_HANDLER
> >
> > エラーが解消されるまでは、コメントアウトしておくといいでしょう。
> >
エラーの箇所が見つかりました!
64行目 .Rows("2:18").Delete Shift:=xlUp でエラーが返ってきてます。
今まではこの分で通っていたのですが、何が原因でしょう?
どなたか、ご指摘いただけますでしょうか?
■[返信 2] 困り眉さん(2023-04-26 12:40:11)の記事
> ■[返信 1] さんこうさん(2023-04-26 12:17:23)の記事
> > これ↓があると、エラーの原因が見えなくなってしまいます。
> >
> > On Error GoTo ERR_HANDLER
> >
> > エラーが解消されるまでは、コメントアウトしておくといいでしょう。
> >
エラーの箇所が見つかりました!
64行目 .Rows("2:18").Delete Shift:=xlUp でエラーが返ってきてます。
今まではこの分で通っていたのですが、何が原因でしょう?
どなたか、ご指摘いただけますでしょうか?
[返信 4] Re : エラー1004の対処法
投稿者 : さんこう 投稿日時 : 2023/04/26(Wed) 17:49:25
>64行目 .Rows("2:18").Delete Shift:=xlUp でエラーが返ってきてます。
とくにおかしなところは見当たりませんが。
当該シートの2~18行を、手動で削除するとどうなりますか?
>64行目 .Rows("2:18").Delete Shift:=xlUp でエラーが返ってきてます。
とくにおかしなところは見当たりませんが。
当該シートの2~18行を、手動で削除するとどうなりますか?
[返信 5] Re : エラー1004の対処法
投稿者 : 困り眉 投稿日時 : 2023/04/27(Thu) 11:38:24
■[返信 4] さんこうさん(2023-04-26 17:49:25)の記事
> >64行目 .Rows("2:18").Delete Shift:=xlUp でエラーが返ってきてます。
>
> とくにおかしなところは見当たりませんが。
>
> 当該シートの2~18行を、手動で削除するとどうなりますか?
>
削除して実行すると、82行目のところでエラーが返ってきますね…。
セルの保護など外してみても同じ結果でした…
■[返信 4] さんこうさん(2023-04-26 17:49:25)の記事
> >64行目 .Rows("2:18").Delete Shift:=xlUp でエラーが返ってきてます。
>
> とくにおかしなところは見当たりませんが。
>
> 当該シートの2~18行を、手動で削除するとどうなりますか?
>
削除して実行すると、82行目のところでエラーが返ってきますね…。
セルの保護など外してみても同じ結果でした…
[返信 6] Re : エラー1004の対処法
投稿者 : さんこう 投稿日時 : 2023/04/27(Thu) 11:52:01
>> 当該シートの2~18行を、手動で削除するとどうなりますか?
>削除して実行すると、82行目のところでエラーが返ってきますね…。
「手動で削除」は問題なくできたのですね?
「82行目」とは、「.Range(Cells(2, 1), Cells(18, 1)).Copy」ですか?
>> 当該シートの2~18行を、手動で削除するとどうなりますか?
>削除して実行すると、82行目のところでエラーが返ってきますね…。
「手動で削除」は問題なくできたのですね?
「82行目」とは、「.Range(Cells(2, 1), Cells(18, 1)).Copy」ですか?
[返信 7] Re : エラー1004の対処法
投稿者 : 困り眉 投稿日時 : 2023/04/27(Thu) 13:11:48
■[返信 6] さんこうさん(2023-04-27 11:52:01)の記事
> >> 当該シートの2~18行を、手動で削除するとどうなりますか?
>
> >削除して実行すると、82行目のところでエラーが返ってきますね…。
>
>
> 「手動で削除」は問題なくできたのですね?
>
> 「82行目」とは、「.Range(Cells(2, 1), Cells(18, 1)).Copy」ですか?
>
すみません確認不足でした!
デバッグで上から一個ずつ実行し、躓いたところで手動で削除することはできました。
> 「82行目」とは、「.Range(Cells(2, 1), Cells(18, 1)).Copy」ですか?
そうです。82行目であってます。
■[返信 6] さんこうさん(2023-04-27 11:52:01)の記事
> >> 当該シートの2~18行を、手動で削除するとどうなりますか?
>
> >削除して実行すると、82行目のところでエラーが返ってきますね…。
>
>
> 「手動で削除」は問題なくできたのですね?
>
> 「82行目」とは、「.Range(Cells(2, 1), Cells(18, 1)).Copy」ですか?
>
すみません確認不足でした!
デバッグで上から一個ずつ実行し、躓いたところで手動で削除することはできました。
> 「82行目」とは、「.Range(Cells(2, 1), Cells(18, 1)).Copy」ですか?
そうです。82行目であってます。
[返信 8] Re : エラー1004の対処法
投稿者 : 困り眉 投稿日時 : 2023/04/27(Thu) 13:18:38
申し訳ありません。今もう一度「手動で削除」をしたところ、
2~18は削除できませんでした。
申し訳ありません。今もう一度「手動で削除」をしたところ、
2~18は削除できませんでした。
[返信 9] Re : エラー1004の対処法
投稿者 : さんこう 投稿日時 : 2023/04/27(Thu) 13:27:01
>「.Range(Cells(2, 1), Cells(18, 1)).Copy」
このエラーであれば、「.Range」(targetsheet.Range)に、
アクティブシートの「Cells」を使っているからかと思います。
(とはいうものの、すんなり動作していれば「targetsheet」はアクティブシートみたいですね)
参考になれば。
<range cells 組み合わせ エラー>
https://www.google.com/search?q=range+cells+%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B+%E3%82%A8%E3%83%A9%E3%83%BC
>「.Range(Cells(2, 1), Cells(18, 1)).Copy」
このエラーであれば、「.Range」(targetsheet.Range)に、
アクティブシートの「Cells」を使っているからかと思います。
(とはいうものの、すんなり動作していれば「targetsheet」はアクティブシートみたいですね)
参考になれば。
<range cells 組み合わせ エラー>
https://www.google.com/search?q=range+cells+%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B+%E3%82%A8%E3%83%A9%E3%83%BC
[返信 10] Re : エラー1004の対処法
投稿者 : 困り眉 投稿日時 : 2023/04/27(Thu) 14:13:16
■[返信 9] さんこうさん(2023-04-27 13:27:01)の記事
> >「.Range(Cells(2, 1), Cells(18, 1)).Copy」
>
> このエラーであれば、「.Range」(targetsheet.Range)に、
> アクティブシートの「Cells」を使っているからかと思います。
> (とはいうものの、すんなり動作していれば「targetsheet」はアクティブシートみたいですね)
>
> 参考になれば。
>
> <range cells 組み合わせ エラー>
> https://www.google.com/search?q=range+cells+%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B+%E3%82%A8%E3%83%A9%E3%83%BC
>
>
ありがとうございます!さんこうさんのおかげで.Rengeの部分は無事に修正できました!
助かりました!
■[返信 9] さんこうさん(2023-04-27 13:27:01)の記事
> >「.Range(Cells(2, 1), Cells(18, 1)).Copy」
>
> このエラーであれば、「.Range」(targetsheet.Range)に、
> アクティブシートの「Cells」を使っているからかと思います。
> (とはいうものの、すんなり動作していれば「targetsheet」はアクティブシートみたいですね)
>
> 参考になれば。
>
> <range cells 組み合わせ エラー>
> https://www.google.com/search?q=range+cells+%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B+%E3%82%A8%E3%83%A9%E3%83%BC
>
>
ありがとうございます!さんこうさんのおかげで.Rengeの部分は無事に修正できました!
助かりました!
[返信 11] Re : エラー1004の対処法
投稿者 : さんこう 投稿日時 : 2023/04/27(Thu) 14:20:29
> もう一度「手動で削除」をしたところ、2~18は削除できませんでした。
そうであれば、VBAの問題ではないです。
(メッセージとか出ないのですか?)
シートでの何らかの設定が影響しているのでしょう。
最悪、シートの作り直しが必要になるかもしれません。
> もう一度「手動で削除」をしたところ、2~18は削除できませんでした。
そうであれば、VBAの問題ではないです。
(メッセージとか出ないのですか?)
シートでの何らかの設定が影響しているのでしょう。
最悪、シートの作り直しが必要になるかもしれません。
[返信 12] Re : エラー1004の対処法
投稿者 : 困り眉 投稿日時 : 2023/04/27(Thu) 14:46:31
■[返信 11] さんこうさん(2023-04-27 14:20:29)の記事
> > もう一度「手動で削除」をしたところ、2~18は削除できませんでした。
>
> そうであれば、VBAの問題ではないです。
> (メッセージとか出ないのですか?)
>
> シートでの何らかの設定が影響しているのでしょう。
>
> 最悪、シートの作り直しが必要になるかもしれません。
ありがとうございます。原因が分かりました。
当該範囲の中にテーブルが含まれていたため削除できないとはじかれてました。
非常に勉強になりました!本当にありがとうございます!
■[返信 11] さんこうさん(2023-04-27 14:20:29)の記事
> > もう一度「手動で削除」をしたところ、2~18は削除できませんでした。
>
> そうであれば、VBAの問題ではないです。
> (メッセージとか出ないのですか?)
>
> シートでの何らかの設定が影響しているのでしょう。
>
> 最悪、シートの作り直しが必要になるかもしれません。
ありがとうございます。原因が分かりました。
当該範囲の中にテーブルが含まれていたため削除できないとはじかれてました。
非常に勉強になりました!本当にありがとうございます!
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2026-04-05 02:48:34 )