2016-08-11 8 views
0

ループ中に配列に数値を追加したいexcel/vbaマクロを設定しています。しかし、私は、配列をマクロ使用からマクロ使用まで持続させたいと思います(つまり、火曜日にマクロを実行するときに配列が[1,3,5]で満たされていて、水曜日にマクロを再度実行して、 8,9、および10の場合、配列は[1,3,5,8,9,10]である必要があります)。これはVBAで可能ですか(たとえExcelシート全体が閉じていて、後で再オープンされても、閉鎖前に保存されていますが)?マクロが終了すると変数は保持されますか?

+4

いいえ。あなたは、文書のプロパティや隠しシートのようなどこかにそれを置く必要があります。 – Comintern

+0

CustomXMLPartsを使用すると、ファイル内のデータは保存できますが、ワークシートに保存することはできません。https://stackoverflow.com/questions/31300173/how-to-embed-large-max-10mb-text-files-into-an-excel-ファイル/ 31305606#31305606 –

答えて

2

Staticキーワードを使用してマクロを宣言すると、マクロの変数は関数呼び出しの間に値を保持します。しかし、ブックを閉じるとこれらの値が消去されます。

また、配列をワークブックの名前コレクションに保存することもできます。

enter image description here

Function getArrayFromName(name As String) 
    Dim s As String 
    On Error Resume Next 
    s = ThisWorkbook.Names(name) 
    s = Mid(s, 3, Len(s) - 3) 
    On Error GoTo 0 

    getArrayFromName = Split(s, ",") 

End Function 

Sub setArrayFromName(name As String, value As Variant) 
    ThisWorkbook.Names.Add name, value, False 
End Sub 
関連する問題