こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのマクロってどういうときに使うのですか?

VBAでプログラムを組むのとマクロを記録するでマクロを作るのは同じですか?

VBAでプログラムを0から組むには知識が沢山必要だが、
マクロを記録からだと割合簡単に出来る気もします。

自分は、事務補助の仕事を以前していたのですが、簡単なアルバイトの管理表や
日程表、ガソリン料金の計算表などを入力していただけなのでマクロは使って
いなかったのですが、マクロを使えばこういう場合も時間と労力を節約できたのでしょうか?

マクロというのはどのようにつかうのでしょうか?

教えてくださいよろしくお願いします。

投稿日時 - 2017-11-22 18:10:40

QNo.9400144

困ってます

質問者が選んだベストアンサー

> VBAでプログラムを組むのとマクロを記録するでマクロを作るのは同じ
他の個人サイトさまからの受け売りで申し訳ないのですが、
日本語的な表現が解り易かったので言葉をお借りして。
  マクロ⇒決められた手順で動作を制御する機能
  VBA⇒手順を決めるためのマクロ言語のひとつ
であるので、厳密にはこの二つはまるで別なモノ、と言えます。
「マクロの記録」で録ると「VBAという言語」で記述されます。
「VBA」で記述されたものは「マクロ機能」により実行されます。
エクセルに関してだけ言えば、
エクセルはVBA以外のマクロ言語も受け付けますから、
必ずしも「マクロ=VBAで書かれたもの」とは言えません。
  ※4.0マクロとか、5.0ダイアログとか。古い人は解るかも。
ただし、エクセルにおいてVBAで書かれたものを動かすのはマクロです。
そういう関係です。

ちなみに、アクセスにおいてはVBAとマクロは見掛けからも全く別物です。
アクセスを使うようになれば解りやすいのですが。


> マクロを記録からだと割合簡単に出来る
目的によります。
例えば、「B列を列ごと削除する」という動作を「記録」すると、
Sub Macro1()
  Columns("B:B").Select
  Selection.Delete Shift:=xlToLeft
End Sub
と書かれます。
我々自称中の下辺りの人間がゼロから書く、
あるいは記録されたものに手を加えるなら
Sub Sample()
Columns("B").Delete
End Sub
結果はこんな感じです。
この程度なら記録するのもゼロから書くのもそんなに変わらない気もします。

ただし、実務でもエクセル+VBAを使う人間として言えることは
「マクロの記録」しただけで使えるマクロは存在しない、です。
必ず何か手を(条件だったり繰り返しだったり)加えて、
なんとなく、実務に使えるものを書きます。
逆に、ゼロから書くにしても(主に面倒くさいからという理由で)
記録されたものを参考に(コピペ)して書くのが専らです。
どちらにしても、エクセルの基本機能の知識や
VBAの命令語についての知識がソコソコ必要ではあります。


> 時間と労力を節約できたのでしょうか?
マクロは
・定型の一連の処理を制御する
・決まった場所に定数(決まった式)を入力する
など、いわゆる「お決まりの処理」をすることを目的に作ります。
  ※上記は同時に
   > マクロというのはどのようにつかうのでしょうか?
   に対する回答にもなり得るかもしれません。

挙がった例で言うと
> ガソリン料金の計算表などを入力
これは「ガソリン料金は日によって違う」ので定数を入力する、
とは言いづらいですね。
なので、コレはマクロには不向きと言えます。
> アルバイトの管理表
コレは構成によります。
単純に「出勤時間」「退勤時間」を入力するだけなら、
やはり「定数」とは言えませんから、マクロには不向きでしょう。
ただし、
> や日程表
ここと組み合わせて、ある「ルール」に則ってシフト表を作る、
のであれば(大変ですが)マクロを組む価値はあったかもしれません。

どちらの場合も、
・日々のルーチンワークにかける時間
・マクロをVBAで組む時間(+VBAの勉強をする時間)
両者を天秤にかけて、自分や職場にとってどちらが得か?
それを考えないといけませんね。

投稿日時 - 2017-11-24 11:22:24

お礼

回答ありがとうございます。
参考にさせていただきます。

投稿日時 - 2017-11-29 21:58:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

>VBAでプログラムを組むのとマクロを記録するでマクロを作るのは同じですか?
「VBAとは『 Visual Basic for Applications 』を省略したもの」とされていますので「VBAでプログラムを組む」ことと「マクロを記録する」ことは異なると言えます。
しかし、「マクロを記録する」とその結果は「VBAで下手なプログラムを組んだ」ように見えます。

>日程表、ガソリン料金の計算表などを入力していただけなのでマクロは使って
いなかったのですが、マクロを使えばこういう場合も時間と労力を節約できたのでしょうか?
マクロ(VBAのプログラムも含む)を使うことはマクロウィルスの脅威にさらされることになりますので安易に使わない方が良いでしょう。
作業の内容によってはマクロで省力化を期待できないことになります。
一般的な集計業務では関数による集計表で十分かと思われます。

>マクロというのはどのようにつかうのでしょうか?
Excelに標準で組み込まれた機能や関数で処理困難な場合にVBAで合理的なプログラムを組むときに使われるようです。
また、数表が巨大でシートの一部の値を書き換えたとき自動再計算に多大な時間を要する場合はマクロの記録ではないVBAでのプログラム(これもマクロと言う)で処理することもあります。

投稿日時 - 2017-11-24 21:51:07

お礼

回答ありがとうございます。
参考にさせていただきます。

投稿日時 - 2017-11-29 21:58:56

ANo.4

> VBAでプログラムを組むのとマクロを記録するでマクロを作るのは同じですか?
全く違います。

例えばA1セルに入力するマクロを記録した場合、A1にしか入力できませんが、
プログラムを組めば、好きなセルに、好きな条件で、自由に繰り返し、入力値のエラーなども細かく処理することが出来ます。

労力を節約できたかどうかは、使用頻度、自動化の費用対効果なども勘案することが重要です。
マクロを組むのは簡単ですが、バグ修正にそれ以上のコストがかかります。

VBAでプログラムを組むことは0から始めることはなく、
やりたいことを記録し、ブラッシュアップしていけば良いのです。
ただし、For 文 や IF 文 等の構文を理解することは必須です。
その他の注意点としては、Excel ならではのクセが多いことでしょうか。

質問者さんの用途であれば、数式を駆使するだけでかなりの部分はカバーできるはずです。

なお、マクロの最大の欠点は「元に戻す」が使えないことだと思っています。
あまりに簡単な処理をマクロにすると、逆に不便です。

投稿日時 - 2017-11-22 23:25:11

お礼

回答ありがとうございます。
参考にさせていただきます。

投稿日時 - 2017-11-29 21:56:27

ANo.3

毎週整理集計する定型の帳票データがあるとして、そのデータの中の一部の数値に一定の計算処理を加え、不要な行や列を非表示にして、特定行を広げてタイトルを付けて、重要なセルの色や書体を変更して、所定の形式で印刷して、所定の命名規則で保存するのを毎週何十回もやってると、病んできます。だからといって苦労してVBで関数調べてコーディングしても誰も評価してくれませんし、そんなこと求められてもいません。でもバカらしいことこの上ないのでマクロで片付けて、空いた時間で別のことして早く帰ります。(笑)

投稿日時 - 2017-11-22 22:14:04

お礼

回答ありがとうございます。
参考にさせていただきます。

投稿日時 - 2017-11-29 21:55:57

ANo.2

私が業務でマクロを組むのは、「一旦決めた作業手順を絶対に
間違えない」「異常な結果が出たときに作業手順を確認できる」
と言うことが理由です。

まあ、「同じ作業を延々繰り返すのがイヤ」っていうのもある
んですけどね。

なので、データベースから特定のレコードを引っ張り出して
通知する(伝票を起票する)なんてのが向いてると思いますよ。
逆に、毎回手順が変わる作業などには向いてないでしょうね。

投稿日時 - 2017-11-22 19:39:29

お礼

回答ありがとうございます。
参考にさせていただきます。

投稿日時 - 2017-11-22 20:08:24

ANo.1

>VBAでプログラムを組むのとマクロを記録するでマクロを作るのは同じですか?
VBAとマクロは、初心者は同じ意味に使っているし、「マクロの記録」(のしくみ)はVBAで置き換えることは(言葉のうえでは)できない。
市販本も初心者を考慮して、両用しているようだ。
マクロの記録したコードをVBAですっきりさせたり、一部を変動化してVBAで手を加える(修正する)ことができますし、VBAで機能を加えることもできる。
>マクロを使えばこういう場合も時間と労力を節約できたのでしょうか
入力作業はVBAでは、改良の余地は少なく、難しいが、他のテーブルデータなどを参照して手助けはできる。
主にデータ処理や編集などの面ではVBAができれば便利です。
色んな場合が増えたり、数が増えると手動操作では面倒になるのは常識で。
100枚のシートがあり、1枚のシートにまとめたい、とかの場合はね。
==
こんなところへ質問をするのでなく、エクセルVBAの本を読むか。1例について質問をして、どう便利になるか聞いてください。それで体感してください。
==
こんな漠然とした質問には、かえって答えにくい。
しかしVBAを勉強する時間と具体例のプログラムを組む時間は、普通の人にの場合は、決して短くない。
エクセルやワードがコンピュターのすべてではない。ごくごく一部です。
質問者はあまり、深入りしなくても良いのでは。プログラムを学ぶなら直接的にふさわしい言語やツールもあるので。
今後仕事などでエクセルなどに深入りしそうでないならば。
プログラムを組むにふさわしい人は、こんな質問をせず、自発的に調べたり、勉強してやってしまっていると思う。

投稿日時 - 2017-11-22 19:27:32

お礼

回答ありがとうございます。
いろいろと試して勉強してみます。

投稿日時 - 2017-11-22 20:08:05

あなたにオススメの質問