Excelシートの範囲で作成しているバリアントの要素にアクセスしようとしています。私の範囲内の行の数は "Locations"シートの行数に基づいて動的なので、単にバリアントを宣言し、それを関連する範囲と同じに設定します。 Locで接頭辞を付けた4つの変数を使用して境界を見つけ、その最終的な範囲を作成したらバリアントを設定します。Variants/Iterating/VBA
しかし、私は数多くの試みを繰り返すことができません。私は何か基本的なものが欠けていると確信していますが、For EachまたはFor LBound/UBound構造を配列の繰り返しに使用するようにはまだしていません。バリアントデータは、数値とテキストの混合です。
私が紛失していると思われる簡単/簡単なことについてのあなたの考えは高く評価されます。私はそれぞれの読み取り専用であり、読み取り/書き込みすることを好むだろうが、今単に確認するために、私はあなたがLocColEnd
を設定しているこの配列[本当に、マトリックス]
Sub Prefill_Work_Sub()
' Variables
Dim LocRowStart As Range
Dim LocRowEnd As Range
Dim LocSheetRange As Range
Dim EndColInt As Integer
Dim LocationsVariant As Variant
' Ending Column Index Set
EndColInt = 72
' First, make range of location sheet
Set LocRowStart = Worksheets("Locations").Range("A2")
Set LocRowEnd = Worksheets("Locations").Cells(Rows.Count, LocRowStart.Column).End(xlUp)
Set LocColEnd = Worksheets("Locations").Cells(LocRowEnd.row, EndColInt)
Set LocSheetRange = Worksheets("Locations").Range(LocRowStart, LocColEnd)
Set LocationsVariant = LocSheetRange
' Verify the range address of the variant
' Debug.Print LocSheetRange.Address
For i = LBound(LocationsVariant) To UBound(LocationsVariant)
Debug.Print LocationsVariant(i, 1)
Next i
' Let's try to iterate through variant for a sec
' Debug.Print LocationsVariant(1, 1)
' Debug.Print LocationsVariant(2, 1)
End Sub
「LocationsVariant」の値を設定していません。範囲の値を割り当てることを意味しましたか? –
@TimWilliams私はその行を編集して追加しました。それは私のコードにありましたが、誤って投稿で削除されました。だから、私はlbound()/ ubound()でラインに当たったら型の不一致エラーに遭遇します。 – ccdrm
2D配列を取得する場合は、値を割り当てるときに 'Set'を使用しないでください。さもなければ、別の範囲型変数 –