VBAの配列について質問です。

Visual Basic79閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ThanksImg質問者からのお礼コメント

できました。 配列は勉強し始めたばかりなのでみなさんに教えていただいたコードを参考に 理解を深めていきたいと思います。 ありがとうございました。

お礼日時:2020/1/5 10:30

その他の回答(2件)

0

もし仮にですがセル範囲(A1:C10)のデータの中から任意の範囲にあるデータを取り出したいと言うのであれば、 全体のデータを配列にして必要な個所を抽出するよりかは最初から抽出したい範囲を選び出すよう作った方が楽なのでは? そもそも今回は5・6行目のデータとなってますが、目的はここを任意に変更したいのではないのでしょうか?

0

以下でどうなりますか Samp1: 複数セルを配列として読み込むと、配列添え字は 1 ~ になりますが、 配列添え字は 1 ~ もしくは 0 ~ 始めるルールは無いかと 例では、配列添え字が 5 ~ 6 の配列を作って、 単にデータを移して 書き出す時に要素数を求めて、その範囲を書き出すでも・・・ Samp2: 読み込んだ配列を潰して良いのなら、 書き出したい範囲を先頭に移して・・・ どうなりますか Option Explicit Public Sub Samp1()    Dim vA As Variant, vR As Variant    Dim i As Long, j As Long    Const CRS As Long = 5, CRE As Long = 6    vA = Range("A1:C10").Value    ReDim vR(CRS To CRE, 1 To UBound(vA, 2))    For i = CRS To CRE       For j = 1 To UBound(vR, 2)          vR(i, j) = vA(i, j)       Next    Next    i = CRE - CRS + 1    Range("A11").Resize(i, UBound(vR, 2)).Value = vR End Sub Public Sub Samp2()    Dim vA As Variant    Dim i As Long, j As Long, k As Long    Const CRS As Long = 5, CRE As Long = 6    vA = Range("A1:C10").Value    k = 0    For i = CRS To CRE       k = k + 1       For j = 1 To UBound(vA, 2)          vA(k, j) = vA(i, j)       Next    Next    Range("A11").Resize(k, UBound(vA, 2)).Value = vA End Sub