Excel VBA 質問スレ Part33
■ このスレッドは過去ログ倉庫に格納されています
0662デフォルトの名無しさん
2014/06/10(火) 09:29:36.71ID:DruWYpJa問題の発生するコード(サンプル)を貼り付けておきます。実際のコードはこれとは異なります。
このサンプルコードは正常に動作するのですが、"i mod100"を"i mod 10000"に変更すると問題が出てきます(このときcnt=1となります)。
TestArrayという二次元配列が、Transposeした後には一次元配列になってしまっています。
実際のコードではTranspose後の配列の値を読み出すのですが、TestArrayが二次元配列であるという前提で読みだしていますが、
cnt=1のときだけTranspose後のTestArrayが一次元配列になっているためエラーとなります。
cnt=1のときとそれ以外のときで場合分けすれば問題は解決するのですがスマートではないので躊躇しています。
何か美しい解決方法はないものでしょうか?
'**********************************************************
Sub test()
Dim i As Long, cnt As Long, TestArray As Variant
ReDim TestArray(1 To 3, 1 To 200) '余裕を持って200まで準備
For i = 1 To 10000
If i Mod 100 = 0 Then
cnt = cnt + 1 'カウンター(条件を満たした数)
TestArray(1, cnt) = 1: TestArray(2, cnt) = 2: TestArray(3, cnt) = 3
End If
Next i
ReDim Preserve TestArray(1 To 3, 1 To cnt) '不要なところを捨てる
TestArray = WorksheetFunction.Transpose(TestArray)
End Sub
'**********************************************************
■ このスレッドは過去ログ倉庫に格納されています