プロが教える店舗&オフィスのセキュリティ対策術

VBAの配列に関して自分で勉強中なのですが、下記の理由が分かりませんので
原因と、A100000まで#N/Aとならないようにするためにはどのような
数値を入れれば良いのかをご教授頂けないでしょうか?
(勉強中の為自分なりに理解しようと思い下記構文になっています。
 なぜこんなので配列使っているの?というのは一旦置いておいていただけると幸いです)

下記で※の値が
110000の時→セルA44466~A100000が#N/Aと入力される
120000の時→セルA54466~A100000が#N/Aと入力される
130000の時→セルA64466~A100000が#N/Aと入力される
140000の時→セルA8930~A100000が#N/Aと入力される
200000の時→セルA3394~A100000が#N/Aと入力される

Sub Sample1()
Dim tmp(※) As String

For i = 0 To 100000
tmp(i) = Cells(i + 1, "C")
Next

Range("A1:A100000") = WorksheetFunction.Transpose(tmp)

End Sub

A 回答 (3件)

EXCELのバージョンは?



一次元配列にそんな大きな数字をいれてはいけません。挙動不審になります。
二次元配列にしてください。

Sub Sample1()
Dim tmp(100000,0) As String

For i = 0 To 99999
tmp(i,0) = Cells(i + 1, "C")
Next

Range("A1:A100000") = tmp

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
エクセルは2016を使用しています。
一次元配列の場合は制限があるんですね。
ご教授頂いた内容で問題無く動作する事が出来ました。

お礼日時:2020/09/23 12:46

Integer型の範囲は-32,768~32,767です。


iをInteger型で宣言しているのでしたら、オーバーフローしているのだと思います。
long型で宣言したら如何でしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
変数iをlongで宣言加えましたが結果は同じ状態となってしまいました。

お礼日時:2020/09/23 12:44

このような記事も。

。。
https://excel-ubara.com/excelvba4/EXCEL258.html
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考にさせていただきます。

お礼日時:2020/09/23 12:42

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