列ヘッダー (行 1) を含むワークシートがあり、各ヘッダーの下に 1 ~ 255 の値の配列があります。見出しごとに新しいシートを作成し、値を貼り付けて (行 2 から行 n まで、ヘッダーごとに異なります)、シートの名前を見出しのタイトルに変更するコードがあります。見出しのタイトルが有効なシート名であると仮定します。
ActiveSheet
myがData
ワークシートの場合、以下のコードは正常に機能します。
ただし、別のActiveSheet
(同じワークブック内で) コードを実行すると、次のエラーが発生します。
Run-time error 1004:
Method Range’ of object ‘_Worksheet failed
デバッガーは、行でエラーが発生したことを通知しますSet src = ws.Range(Cells(2, i), Cells(lastRow, i))
。なぜこのエラーが発生するのですか?
Sub MakeNewWorksheets()
Dim wb As Workbook
Dim ws As Worksheet
Dim target As Worksheet
Dim i As Long
Dim s As String
Set wb = ThisWorkbook
Set ws = wb.Worksheets("Data")
For i = 1 To ws.UsedRange.Columns.Count
s = ws.Cells(1, i)
If Not SheetExists(s, wb) Then
Set target = wb.Sheets.Add(, wb.Worksheets(wb.Worksheets.Count))
target.Name = s
Else
Set target = wb.Worksheets(s)
End If
' Find data from front sheet
Dim src As Range
Dim lastRow As Long
lastRow = Cells(Rows.Count, i).End(xlUp).Row
Set src = ws.Range(Cells(2, i), Cells(lastRow, i))
'Debug.Print src.Address
' Set values in target sheet
target.Range("A1:A256").Value = src.Value
Next i
End Sub