0

エラー時にGotoを使ってみたのですが、スクリプトのどこに配置するかによって、エラーが発生してもこれをスキップしたり、エラーが発生していないのに実行したりするようです。

次のコード行でランタイム エラーが発生しました。

Range(Worksheets("Search Engine").Cells(9, 1), Worksheets("Search Engine").Cells(Endcolumn, Endrow + 2)).Select Selection.RowHeight = 20` when `Endcolumn = 0
4

1 に答える 1

4

あなたのコメントに基づいて、変数が 0 のApplication-defined or object-defined errorときに表示されます。Endcolumnこれは、ExcelRangeが 0 ベースではなく 1 ベースであるため、列 0 がないことを意味します。

特にエラー処理に最も関心があるように見えるので、大まかに次のように処理する必要があります。

Sub ErrorExample()

    On Error GoTo ErrHandler ' Set the Error Handling Condition
                             '  in this case, if an error occurs
                             '  goto the ErrHandler label

    ' do stuff
    Debug.Print "I am in `do stuff` code"

    Range(Worksheets("Search Engine").Cells(9, 1), 
           Worksheets("Search Engine").Cells(Endcolumn, 
           Endrow + 2)).Select Selection.RowHeight = 20

    Exit Sub ' Exit from the Sub gracefully and do not run the
             '  following lines of code (if this is not
             '  included, the ErrHandler code will run in all
             '  cases, not just error cases

    Debug.Print "I will never run"

ErrHandler:
    Debug.Print "I am in the error code"
    ' Code to run in case of error
    ThisWorkbook.Worksheets("Search Engine").Protect ' protect your sheet
    On Error GoTo 0 ' Reset the error handling condition
End Sub
于 2012-07-23T12:54:17.403 に答える