Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


53497 / 76732 ←次へ | 前へ→

【28048】Re:VariantにRangeオブジェクトを代入したとき 追伸
発言  ichinose  - 05/8/27(土) 11:24 -

引用なし
パスワード
   ▼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
1 hits

【28028】VariantにRangeオブジェクトを代入したとき ちくたく 05/8/26(金) 19:53 質問
【28029】Re:VariantにRangeオブジェクトを代入した... ichinose 05/8/26(金) 20:05 発言
【28031】Re:VariantにRangeオブジェクトを代入した... ちくたく 05/8/26(金) 21:08 質問
【28036】Re:VariantにRangeオブジェクトを代入した... ichinose 05/8/26(金) 23:01 発言
【28048】Re:VariantにRangeオブジェクトを代入した... ichinose 05/8/27(土) 11:24 発言
【28106】Re:VariantにRangeオブジェクトを代入した... ちくたく 05/8/29(月) 9:27 お礼

53497 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free