プロが教えるわが家の防犯対策術!

Excel+VBで簡単なシステムを作成しております。

VBでテキストファイルを読み込み、ある桁数で分割して2次元配列に格納しています。(行:レコード 列:カラム)

現在は、要素ごとにセルを指定して挿入しているのですが、レスポンス向上のため、行単位でセルに挿入できると聞きました。
具体的には以下です。

配列
(0,0)="A" (0,1)="AA" (0,2)="AAA"
(1,0)="B" (1,1)="BB" (1,2)="BBB"

(0,0)をセルA1に、(0,1)をセルC1に、(0,0)をセルE1に1文で挿入。
もちろん、セルA1:E1に対して配列値を代入する形になると思うのすが、記述の仕方がわかりません。

お分かりになる方が見えましたら、ご教授願います。

A 回答 (2件)

行単位どころか、範囲でできます。



Dim a(1, 2)
a(0, 0) = "1"
a(0, 1) = "2"
a(0, 2) = "3"
a(1, 0) = "4"
a(1, 1) = "5"
a(1, 2) = "6"
With ThisWorkbook.Worksheets(1).Range("A1")
.Range(.Offset(0, 0), .Offset(1, 2)).Value = a
End With

こんなかんじですね。

この回答への補足

ありがとうございます。

早速、試してみたのですが、指定したセルに挿入されません。
以下のように記述すると、A5にデータが挿入されてしまいました。

With xl.Application.Sheets("DATA").Range("A3")
.Range(.Offset(0, 0), .Offset(0, 19)).Value = StrEspData
End With

また、
With xl.Application.Sheets("DATA").Range("A7")
.Range(.Offset(0, 0), .Offset(0, 19)).Value = StrEspData
End With
と記述したら、A13にデータが挿入されました。

よくみると、遇数列を飛ばしていることに気がついたのですが、
なぜなのでしょうか?

補足日時:2001/05/16 14:02
    • good
    • 0

セルA1:E1に代入する時にB1, D1の内容は保持したほうが


いいでしょうか?

クリアしてもいいよ,というのであれば

Dim x(0,2) as String
x(0, 0) = "A"
x(0, 1) = "AA"
x(0, 2) = "AAA"
Range("A1:E1") = Array(x(0,0), , x(0,1), , x(0,2))

ではどうでしょう。

すいません。
Excelはあまり使ったことないのでレスポンス向上の効果までは
考えてないです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!