約 1 時間検索しましたが、問題を解決するものは何も見つかりませんでした。次のコード
Dim q3ZFj1 As Range
Dim q4ZFj1 As Range
Dim q3ZFj2 As Range
Dim q4ZFj2 As Range
Dim q3Uebj1 As Range
Dim q4Uebj1 As Range
Dim q3Uebj2 As Range
Dim q4Uebj2 As Range
Dim cRow As Long
Dim cCol As Long
Dim startYear As Integer
Dim nextYear As Integer
Dim q3j1Name As Variant
Dim q4j1Name As String
Dim q3j2Name As String
Dim q4j2Name As String
Dim c As Variant
For i = 3 + 1 To Sheets.Count
Set q3ZFj1 = Worksheets(i).Range("C501:I512")
Set q4ZFj1 = Worksheets(i).Range("C521:I532")
Set q3ZFj2 = Worksheets(i).Range("C601:I612")
Set q4ZFj2 = Worksheets(i).Range("C621:I632")
startYear = q3ZFj1.Cells(-1, 0)
nextYear = startYear + 1
q3j1Name = "Q3_" & startYear
q4j1Name = "Q4_" & startYear
q3j2Name = "Q3_" & nextYear
q4j2Name = "Q4_" & nextYear
Set q3Uebj1 = Range(q3j1Name)
Set q4Uebj1 = Range("Q4_" & startYear)
Set q3Uebj2 = Range("Q3_" & nextYear)
Set q4Uebj2 = Range("Q4_" & nextYear)
F8 でステップ実行すると正常に実行されますが、実行すると、タイトルに記載されているエラーが発生します。
変数が文字列またはバリアントとして宣言されているかどうか、Range(q3j1Name)
またはを使用して範囲を参照するかどうかは問題ではありません。Range("Q3_" & startYear)
q3j1Name
文字列q3j1Name
などは、たとえば、正常に初期化q3j1Name
さ"Q3_2012"
れます。Set q3Uebj1 = Range("Q3_2013")
うまく動作します。
名前付き範囲は存在しますが、別のワークシートにあります。Set q3Uebj1 = Worksheets(2).Range(q3j1Name)
どちらも機能しません。
これを修正するか、回避する方法を提案してくれる人はいますか?
基本的に、ステップ実行される各ワークシートには年の値が含まれており、これに基づいて worksheet2 の範囲が使用されます。
助けてくれてありがとう...