VBA で使用できるメモリの量を確認するには、以下のコードをコピーして貼り付けて呼び出します。availableMemoryInMB()
Function allocateMB(intNumMB As Integer) As Boolean
On Error Resume Next
Dim a As Variant
ReDim a(intNumMB, 256, 256) As Variant 'intNumMB x 256 x 256 x 16 bytes = intNumMB MB
allocateMB = (Err.Number = 0)
Err.Clear
Erase a
End Function
Function availableMemoryInMB() As Integer
Dim intLow As Integer, intHigh As Integer, intTest As Integer
intTest = 1: intHigh = 0
Do
If allocateMB(intTest) Then
intLow = intTest
If intHigh = 0 Then
intTest = intTest * 2
Else
intTest = (intLow + intHigh) / 2
End If
Else
intHigh = intTest
intTest = (intLow + intHigh) / 2
End If
Loop Until intHigh - intLow <= 1 And intHigh > 0
availableMemoryInMB = intLow
End Function
コードの実行には 2 ~ 20 秒かかります。64 ビットの Excel バージョンでは、VBA に数 GB のメモリを使用できますが、32 ビット バージョンの Excel では、約半分の GB を使用できます。