16385列目のデータ

2016年6月現在、Excel2016の最終列はXFD列(16384列)だ。
f:id:Infoment:20190616172054p:plain
ここで、ふと思った。最終列に何某かのデータが入力されている状態で、それ以前のどこかに列挿入を行った場合、XFD列のデータはどうなるのだろうか。

試しにやってみた。すると、エラーになった。
f:id:Infoment:20190616172223p:plain

今までに見たこともない、長い長いエラーメッセージだ。
しかし、普段このような巨大列情報を扱うことは、通常の業務では皆無ではないかと思う。今回の現象を心配するのは、50億年後の太陽消滅を憂うようなものだ。

それでも、もし16385列目を扱う場合があるとしたら、値しか扱えないが配列で代用するのはどうだろう。1行16385列の仮想シートで、試しにやってみた。

Sub test()
    Dim arr(1 To 1, 1 To 16385) As Variant
    Dim i As Long
        For i = 1 To 16385
            arr(1, i) = i
        Next
End Sub

一応、問題なく処理できた。では思い切って、行側もやってみたら、どうなるか。

Sub test()
    Dim arr(1 To 1048577, 1 To 16385) As Variant
    Dim i As Long
    Dim j As Long
        For i = 1 To 1048577
            For j = 1 To 16385
                arr(i, j) = i + j
            Next
        Next
        MsgBox "処理完了"
End Sub

恐る恐る実行してみたところ、次のような結果になった。
f:id:Infoment:20190616173922p:plain

やっぱり物事には、限度があるってことで。

参考まで。