日経PC 21 - 日経BP社 ビジネス マンのパソコン誌

このページの本文に進む

日経PC21サイト内リンクへ進む

日経パソコン オンライン
ホーム
ニュース
モバイル&スマートフォン
PC&Mac
DIY PC
周辺機器&カメラ
セキュリティ
クラウド
ソフトウエア
ビギナーズ
用語
日経BP社 パソコン情報
TRENDYnet
日経パソコン
日経PCビギナーズ
日経WinPC

表計算大会2007

表計算大会2007「マクロ」問題 解答のヒント

問題が難しくて解き方がわからない−−という方のために、「マクロ」問題を解くための「ヒント」を用意しました。解法のポイントを“少しだけ”紹介します。これを手掛かりに、課題の条件を満たすマクロ作りに挑戦してみてください。

なお、ここで公開するヒントは、あくまで解答方法の“一例”です。これとは別の方法で解いた場合も、課題の条件を満たしていれば「正解」とします。また、ヒントに従って作成した作品が「優秀作品」と見なされるものではありません。

【マクロ①】解答のヒント

マクロ①は、請求書の“空白行”を自動で詰めて印刷するマクロを作る問題です。実はこのマクロ、「ツール」メニューの「マクロ」→「新しいマクロの記録」を選び、実際の操作を記録するだけでも、手軽に作ることができます。

ただし注意したいのは、「7行目から15行目をマウスで選択し、削除する」という操作を単純に記録してしまうと、商品情報を入力した行数に関係なく、「常に7行目から15行目を削除する」というマクロが作られてしまう点です。マクロの記録中にマウスでセルを選択すると、選択したセルの番地がそのまま記録されてしまうためです。この問題では、商品情報の行数に応じて変化する空白行を自動で判断し、そこだけ除外して印刷できるようにする必要があります。

そこで、マクロに記録する操作の内容を一工夫します。例えば、空白行を自動で除外するために「オートフィルタ」機能を活用する方法などがあります。

【マクロ②】解答のヒント

マクロ②は、出納帳で今月分のシートをコピーして、次月シートを自動作成するマクロを作る問題です。これは「マクロの記録」だけでは作れません。VBAの命令文を自分で書き足して、マクロを完成させる必要があります。

最大の課題は、コピーしたシートに次月分のシート名を付ける処理にあります。例えば「2007年1月」というシートの次には、「2007年2月」というシートを作ります。一つの方法は、元のシート名「2007年1月」をいったん“日付データ”に変換し、その翌月を求めるというやり方。日付データに変換するには「DateValue」関数を使い、そこから「Year」「Month」「DateSerial」などの関数を組み合わせて「翌月」の日付を作ります。その結果を「Format」関数で「2007年2月」のような文字列にすればOKです。

↑ページの先頭へ←直前のページへ

日経PC.21がお薦めする日経BP社のサイト

日経BP書店