[[20240411111556]] 『シート名の名前つけについて』(関数がにがて) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『シート名の名前つけについて』(関数がにがて)

 こんにちは
 一覧データのシートとそのデータに沿った添付資料が貼付けたシートがあり、
 添付資料のシートにはデータ番号を「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.