|
▼ichinose さん:
おはようございます。
>>ですが、なぜ、行列を入れ替えると、一次元になるんでしょう???
がわかったわけではありませんが、Trannspose関数も追伸。
>Sub sample()
> Dim myvalue As Variant
> myvalue = Application.Transpose(Range("a1:a10").Value)
> For g0 = LBound(myvalue) To UBound(myvalue)
> MsgBox myvalue(g0)
> Next
>End Sub
は、myvalue(1 to 10,1)の配列の一次元への変換でしたが、
range("a1:j1")を一次元配列に格納するには??
'====================================
Sub sample2()
Dim myvalue1 As Variant
Dim myvalue2 As Variant
Range("a1:j1").Value = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
myvalue1 = Range("a1:j1").Value
For g0 = LBound(myvalue1, 2) To UBound(myvalue1, 2)
MsgBox "myvalue1(1," & g0 & ")= " & myvalue1(1, g0)
Next
'そのまま移行するとMyvalue(1 to 1,1 to 10)の2次元配列ですが
With Application
myvalue2 = .Transpose(.Transpose(Range("a1:j1").Value))
End With
'↑のようにTransposeに2回通すと一次元配列にしてくれます。
For g0 = LBound(myvalue2) To UBound(myvalue2)
MsgBox "myvalue2(" & g0 & ")= " & myvalue2(g0)
Next
End Sub
実行してみて下さい。
但し、このTranspose関数Excel2000では
配列は、添え字の上限は5xxxまでです。
Excel2002以降でも 65536です。
ここに関連トピックがありますから
参考にして下さい。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=18896;id=excel
|
|