『シート名の名前つけについて』(関数がにがて)
こんにちは 一覧データのシートとそのデータに沿った添付資料が貼付けたシートがあり、 添付資料のシートにはデータ番号を「Sheet」の後に付けて名前を付けています。 作業後に見返して必要ないデータと添付資料シートを削除して確認しておりますが、 添付資料シートを削除するとシート名と一覧データの番号に相違が出るため、 シート名を変更する下記のコードを作りました。
Sub シート名前つけ()
'仮番号を付ける Worksheets(3).Select
Dim 仮数 As Long, 数 As Long
With Worksheets("一覧") For 仮数 = 3 To .Cells(.Rows.Count, "A").End(xlUp).Row
On Error GoTo myError: If .Cells(仮数, 1) = "" Then Exit For
Dim 仮 As String 仮 = .Cells(仮数, 1).Value
With ActiveSheet .Name = 仮 .Next.Select End With
Next End With myError: Worksheets(3).Select
'正しい番号を付ける With Worksheets("一覧") For 数 = 3 To .Cells(.Rows.Count, "A").End(xlUp).Row
On Error GoTo myError1: If .Cells(数, 1) = "" Then Exit For
Dim 名前 As Integer 名前 = .Cells(数, 1).Value
With ActiveSheet .Name = "Sheet" & 名前 .Next.Select End With Next End With
myError1: Worksheets("一覧").Select
End Sub
仮番号を付けてシート名を変更してくれているのですが、 「実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません。」 とエラーが出ます。 デバッグで確認すると 「'正しい番号を付ける」の方の .Next.Selectに色がついており、 エラーを回避出来ていません。
どうしたらエラー表示なく実行出来るのかご教示いただけませんでしょうか。
よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
イメージ的な話です。
プログラムを実行開始(Subプロシージャなど)した時、
エラーフラグは、Flaseという状態で実行されます。
この状態でOn Errorでエラーを掴むという感じです。
そして、エラーが発生した瞬間にエラーフラグはTrueになります。
エラーフラグがFalseの状態であれば、On Errorステートメントは有効ですが、
エラーフラグがTrueの時は、On Errorステートメントは無効です。
上記のコードでいうと、
「myError」
という行ラベルにGotoした時、すでにエラーフラグがTrueになっています。
従って、エラー処理をした場合は、Resumeなどで
エラーフラグを解除してあげる必要があります。
※実際にはエラーフラグがあるのではないですが、
あくまでもイメージの例え話です。
通常On Errorを使う時は、以下の様に、
エラー時の処理を通常時の処理の外側に書きます。
Sub Sample()
On Error GoTo Err_Exit1 ActiveSheet.Next.Select
Ret:
On Error GoTo Err_Exit2 ActiveSheet.Next.Select
Exit Sub
Err_Exit1:
MsgBox "1!" Resume Ret
Err_Exit2:
MsgBox "2!"
End Sub
(匿名) 2024/04/11(木) 12:32:00
匿名 様
ありがとうございます。 教えていただいた通りに記載した所、エラー表示が出ませんでした。 1つ目のエラー処理は行っていたので、何故2つ目のエラー処理が行われないのか??? 分かっていませんでした。
本当にありがとうございました。 (関数がにがて) 2024/04/11(木) 13:00:50
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.