ファイルサイズを返すVBA関数を定義しました。これで、別のマクロを呼び出すボタンで呼び出すようになりました。私の期待は、マクロを実行した後、私の機能を最後に呼び出すということです。私の問題は、セルに式を入れると、式を入力する瞬間に現在のファイルサイズが返されるということです。ファイルを編集して保存し直しても、編集前のファイルサイズは= wbksize()に表示されます。ボタンでVBA関数を実行する
ボタンで実行されるこのマクロの目的は、ファイルサイズの値を更新することです。ここでそれをやろうとしています。
機能:
Function wbksize()
myWbk = Application.ThisWorkbook.FullName
wbksize = FileLen(myWbk)
End Function
リフレッシュ:
Worksheets("Sheet2").Range("K1").Calculate
上記動作していないよう:/
マクロ/関数の実行を開始していないようです。デフォルトでは、ワークブック/シートを計算するだけなので、関数は実行されません。このように計算する関数は '揮発性'として知られており、関数の最上部付近に 'Application.Volatile'を追加することで明示的に定義することができます。もっと見る:http://excel.tips.net/T002013_Forcing_a_Macro_to_Run_when_a_Worksheet_is_Recalculated.html –
また、ボタンをクリックしたときに関数を実行したい場合は、ボタンに関数を割り当てることができます。ボタンをクリックし、 "Assign Macro"を選択します(あなたのボタンはActiveXコントロールではなくフォームコントロールの基本であると仮定します)。 –
関数は値を返します。そのため、ボタンによって呼び出すことはできません(値を返す場所がないため)。あなたはMichal Wolinskiの答えのようにそれをカプセル化しなければならないでしょう。 – Vegard