Fujitsu The Possibilities are Infinite

 

《連載第2弾 少しだけ、マクロを"カジって"みよう》
マクロで、セルに書き込む

普通、EXCELにデータを入力するのは、基本的にはキーボードからですが、 今回はマクロを使って、直接ワークシートにデータや、計算式を書き込む方法についてお話ししたいと思います。
これまで、慣れ親しんだ、例の見込客進捗管理表2から、少し離れて、新しいブックを開いてみましょう。

【図1】まずは、普通のワークシート

このシート【図1】に、データを書き込んでみたいと思います。
方法を二通りご説明します。

その一は、前回の Range・・・Selectを使う方法です。
では、早速。

VisualBasicEditorを開いて、このBook1に新しい標準モジュールを挿入してみましょう。(【図2】【図3】)

【図2】新しいVBAプロジェクトに標準モジュールを、【図3】プロシジャ書き込み準備完了

【図3】に、左のようなプロシジャを書き込んで、マクロを実行してみてください。
(1)、(2)の形式は、もうわかりますね?
(1)のSelect文で、選んだセル(ActiveCell)に、(2)で、そのActiveCellの値( .Value)は、="金額"という言葉です。と、指示しています。
(2)と(3)の違いは、文字と数値による表現の違いです。 文字を書き込むときは、" "で、囲みましょう。
(4)は、数式を書き込む場合です。.Valueでなく、 ・・・.Formula= " ( ワークシート上で書き込む数式と同じ式)" という書き方になります。

これさえわかれば、ワークシート上に、どんどん、値(数値や文字)や、数式が書き込めると思います。

でも、もう少し、手短に書き込む方法がありますので、それについても説明しておきます。実行した時には、まったく同じ結果となります。

プロシジャの内容

しかし、処理が多くなったとき、Range・・・Select ・・・型では、実際にワークシート上で、 カーソルが動きながら・・・になるのに対し、直接セルの書き込むことで、少し、スピードが早くなります。(プログラム上も見易いかな?)

上の ActiveCellの代わりに、直接セルを指定してしまう方法です。(下図)

上のプロシジャで、8行だったものが、4行で済むというのもメリットといえます。

ここの書式で、Range("A3")とは、行列の書き方が、逆になることと、列は、""で囲む点に注意してください。

Workbooks("Book1").Sheets("Sheet1").Cells(行列).Value・・・・これが、正式の書式です。

したがって、正規の書式では、cellsのまえに、どのブックのどのシートという指定ができます。 (今アクティブでないシートの特定のセルにも直接書き込めるし、値を取ってくることもできます)

ちょっと長いですが、

Workbooks("Book1").Sheets("Sheet1").Cells(1,"A").Value=Workbooks("Book1").Sheets("Sheet2").Cells(1,"B").Value

これは、「Book1のSheet1の[A1]に、同じBook1のSheet2の[B1]の値を書き込みなさい」という命令になります。

次回は、これと、いろいろな条件を組み合わせて、セルの中身を書き替えることに挑戦します。

経営コンサルタント 谷田貝 敏紀
[2003年11月7日 掲載]

ジャーナル最新のテーマ

今月のテーマ:インフラ最適化 全社視点、経営視点で取り組む「インフラ最適化」 続きを読む


今月のアンケート Q:あなたの会社では「富士通のサーバ」をお使いですか? 集計結果は1月13日から毎週公開 回答する


お客様の声をお聞かせください

富士通ジャーナルに掲載している記事やコンテンツについてのご意見・ご感想を、ぜひお寄せください。

ご意見・ご感想フォーム いただいた、お客様の声


お寄せいただいたご意見・ご感想については、富士通からの回答をお約束するものではありません。ご了承ください。
なお、富士通からのご回答を必要とするお問い合わせについては、
富士通ジャーナルに関するお問い合わせをご利用ください。