名称未設

【ExcelVBA公開模試】コードの行数が多くなっても変数を使うべき理由

文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。

問題

次の図のようにセルA1~A3に数値が入力されています。

B1~B3に累計を表示するため次のコードを記述した。

Range("B1") = Range("A1")
Range("B2") = Range("B1") + Range("A2")
Range("B3") = Range("B2") + Range("A3")

(1)変数を用いて書き直しなさい。
(2)いっぱんにRange()の代わりに変数を用いるとコードの行数が多くなるが、コードが長くなっても変数を使うべき理由を簡潔に述べなさい。

わえなび式 正解例

(このページの下にあります)

目標回答時間

プロ1分以内、アマチュア2分以内に正解ができたら合格

この問題の出題範囲

「速読VBA単語」Program3-3まで

ご案内

ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。

正解例

ruikei = Range("A1")
Range("B1") = ruikei
ruikei = ruikei + Range("A2")
Range("B2") = ruikei
ruikei = ruikei + Range("A3")
Range("B3") = ruikei

(別解)このほかにもいろいろな記述の仕方がありますが、要するに、Range()の使用回数が6回以内になっていれば正解。

a1 = Range("A1")
a2 = Range("A2")
a3 = Range("A3")
ruikei1 = a1
ruikei2 = ruikei1 + a2
ruikei3 = ruikei2 + a3
Range("B1") = ruikei1
Range("B2") = ruikei2
Range("B3") = ruikei3

このように、Range()の値を変数に代入するとコードの行数が多くなります。

ところで、「日本の東京都の港区のお台場のテレビ局の地上波のチャンネル番号はいくつ?」と場所で質問するよりも、「フジテレビは何チャンネル?」とダイレクトに質問したほうが「8」という答えが速く返ってきます。

Range()やCells()でセルの場所を参照するよりも、変数を使用したほうが無駄な処理がなくなり、処理速度が速いです。そのため、ExcelVBAでは、できるだけRange()やCells()の使用回数を抑え、セルの値をいったん変数に保存してから処理をします。

バックナンバー


この記事が気に入ったらサポートをしてみませんか?