![名称未設](https://assets.st-note.com/production/uploads/images/9037368/rectangle_large_type_2_cff8011fd65c4b946eb3bc41dde3c1fa.jpg?width=800)
【ExcelVBA公開模試】Valueがあっても無くても値の貼り付けになる
文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。
問題
次の図のように、セルA1に1000、セルA2に500、セルA3に数式「=A1+A2」を入力すると1500になる。次のプロシージャを実行するとセルA3、A4の値はそれぞれいくつになるか、理由を付けて述べなさい。
Sub moshi()
Range("A1") = 2000
Range("A4") = Range("A3")
Range("A1") = 3000
Range("A3") = Range("A3")
Range("A1") = 4000
End Sub
わえなび式 正解例
(このページの下にあります)
目標回答時間
プロ1分以内、アマチュア3分以内に正解できたら合格
この問題の出題範囲
「速読VBA単語」Program3-3まで
ご案内
ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。
考え方
Range()やCells()のあとにドットが無ければ「.Value」が省略されているものとみなされます。「Value」とは値のことなので書式は含まれません。また、数式の場合は計算結果のみとなります。「Range()」または「Range().Value」を代入すると値の貼り付けになります。書式は残り、数式は消えます。
(日本語訳)
Subプロシージャ
A1の値を2000にする
A4の値をA3の値(2500)とする
A1の値を3000にする
A3の値の計算式を消して値(3500)の貼り付けをする
A1の値を4000にする
おわり
正解例
セルA1を2000にすると足し算によってA3が2500になります。
Range("A4")=Range("A3")は値だけの貼り付けなので、セルA4には2500という値が入ります(数式ではなく相対参照でもない)。セルA1を3000にすると足し算によってA3が3500になります。
Range("A3")=Range("A3")は何も変わらないように見えますが、Valueの貼り付けなので数式が消えます。その後、A1の値を4000にしても足し算の式は消えているので、A3は3500のままです。
したがって、A3は3500、A4は2500となります。
(実行結果)
バックナンバー
この記事が気に入ったらサポートをしてみませんか?