ワークシート変数にSetする際「エラー13型が一致しません」が表示される
ExcelVBAで以下エラーが発生する場合があります。
実行時エラー ’13’:
型が一致しません。
WorkSheet変数に代入する際に、このエラーが出る場合はValueの省略が問題の可能性が高いです。
「実行時エラー13型が一致しません」が発生、回避するサンプルコード
'Set ws時に実行時エラー13 型が一致しませんの対処方法
Public Sub sample()
Dim ws As Worksheet
'■問題ある場合
Set ws = ThisWorkbook.Worksheets(Cells(1, 1)) '実行時エラー13 型が一致しません
Set ws = ThisWorkbook.Worksheets(Range("A1")) '実行時エラー13 型が一致しません
'■問題ない場合(但し、シートは存在する前提)
Set ws = ThisWorkbook.Worksheets(Cells(1, 1).Value) '変数に格納OK
Set ws = ThisWorkbook.Worksheets(Range("A1").Value) '変数に格納OK
'■文字列変数strに一旦格納する場合は.Value省略されていても問題なし
Dim str As String: str = Range("A1")
Set ws = ThisWorkbook.Worksheets(str) '変数に格納OK
End Sub
注意点
- 文法で省略するのも全然いいと個人的には思っています。
※この辺りのエラーが発生した際、ググる能力、ググって必要なページにたどり着く能力があれば



コメント