合計を定数として入力するマクロ

マクロ数式ではなく、結果を入力する
マクロ数式ではなく、結果を入力する

リンクユニット


3行マクロ 30回

最初から合計を定数として入力するマクロ

今回は、最初から合計を定数として入力するマクロです。
再計算されないようにとか、式を見せたくないなら、最初から結果を定数として入力してしまえばいいわけです。
(サンプルファイルは、こちらから 3行マクロ30回サンプルデータ
Excelバージョン:Excel20192016201320102007

最初から合計を定数として入力するマクロ

数式の結果を定数として入力するマクロを作ります。
今回使うのは、Evaluateメソッドです。
ワークシート関数をVBAから使用できるすごいメソッドです。
Evaluateメソッドを利用してSUM関数の数式の結果をセルに表示します。
最初から合計を定数として入力する
Sub 定数で数式の結果を入力する()
    Range("B11").Value = Evaluate("SUM(B2:B10)")
End Sub
コードを実行すると数式の結果をセルの値として表示します。
最初から合計を定数として入力する2
Evaluateでどんな関数を使った式の結果でも取得してセルの値として入力できます。
B12セルに平均を出すのも簡単です。
Sub 定数で数式の結果を入力する2()
    Range("B12").Value = Evaluate("Average(B2:B10)")
End Sub
最初から平均を定数として入力する
この平均を四捨五入するには、
Sub teisuu4()
  ActiveCell.Value = Evaluate("Round(Average(C3:C11),0)")
End Sub
結果は下図このようになります。
最初から平均を定数として入力する

RAND関数の乱数の結果を値で得る

Evaluateメソッドの中で、RAND関数を使うと、乱数を得値で得ることができます。
Sub teisuuRand1()
  ActiveCell.Value = Evaluate("Int(Rand() * 100)")
End Sub
乱数を値で入力した結果です。
最初から平均を定数として入力する

For~Nextで範囲に乱数を入力する

セル範囲に rand 関数を使って乱数を 定数式ではなくて値として得たい場合は、 For~Next を使って 次のように書くことができます。
Sub RAND関数の乱数の結果を値で得る2()
    Dim 選択 As Range
    For Each 選択 In Selection
    選択.Value = Evaluate("Int(Rand() * 100)")
    Next 選択
End Sub
最初から平均を定数として入力する
今回は以上です。お疲れ様でした。