• 締切済み

VBAを使うメリット

はじめまして。現在、仕事でよくエクセルの関数を使っています。最近VBAに触れる機会がありました。 現在、ほとんどのことをエクセル関数を使ってしているので、今いちVBAのメリットがわかりません。でも、VBAの方が関数より難しいので、VBAを覚えた人はやっぱり、ほとんどVBAで処理した方がよいと感じるのでしょうか? みなさんはどのような時に関数で、どのような時にVBAを使われていますか?

みんなの回答

回答No.8

関数でできる内容なら関数を使う方が良い、しかし式が長くなり過ぎる場合などはVBAを使うと分かり易いので、式のメンテナンスが必要になった際に助かります。 関数式だけでは出来ない事をざっと書きます(VBAを使えばできます)。 ・書式を変える(文字色、セル色、文字高など) ・メールを送信 ・サーバアクセス ・画像の貼付け、拡大、縮小 ・計算式の変更 ・外部ファィルの読み書き ・タイマー割込み ・エクセルのシャットダウン ・メッセージボックスの表示 ・メッセージボックスでの処理分岐 ・入力フォームボックスなどの表示 ・ボタンをクリして処理を選択 ・IEの制御 ・・・・・まだまだありそうです

回答No.7

こんにちは^^私もまだ初心者なのですが、個人的には、 A1~A10まで足すだけの単純に出来る処理でならば数式の方が便利だと思います ですが、セルの内容を処理によって変更する場合などにはVBAでも良いかなっと考えております。 例えば、while文やfor文を使いセルを1づつカウントUPして if文で処理の対象をピックアップしセルの内容を変更出来るといったところに魅力を感じます 例 ・A1には数値が入っているので何もしない ・A2は空なので、ある数値を入れさらに色を変える処理を行う ・A3には数値が入っているので何もしない ・・・ などをこちら側で組める点などが魅力的かなっと思っています。 また、複雑な処理をさせると、コードの記述が多くなる為 シートに関数機能別に処理を作成する事が出来るので、間違えを見つけやすい部分も魅力の一つだと思います

  • argument
  • ベストアンサー率63% (21/33)
回答No.6

はじめまして taka011 さん もっと詳細な意見が欲しいのでしょうか?それならばVBAのメリットを述べていきます。 VBAをつかう場合マクロを実行する必要があります。 それはある種の手間です。エクセル関数ならばそのばそのつど反映されるため便利です。多少のデータならオートフィルすればよいですしね。 ではVBAのメリットは何でしょうか? 基本的にVBA側からセルへ関数を埋め込める以上VBAがエクセル関数より不便なことはありません。 またエクセル関数の処理をVBAで扱う方法もあります(全てのエクセル関数ではない)。 この時点で関数より不便はない事を感じて頂けるでしょう。 ですがエクセル関数の処理を代替するためにこのVBAがあるわけではありません。 あと述べるべきはエクセル関数はデータの増減によわく大量のデータのために手動でオートフィルしなければならないなども手間です。 またいくつかのセルが個別で動き複雑に入り組んだエクセル関数はなかのコードをそれぞれみなければならずVBAのソースコードよりはるかに見づらくメンテナンスしずらいです。 さてでは今回の御題であるVBAのメリットを考えましょう たとえば集計用のCSVデータがありそれには関数など埋め込まれているはずもなく各行の合計を算出したいなぁと思った場合ひとつ関数をはりオートフィルする事でしょう。 …。面倒くさくありませんか?例えばボタンを押したら勝手にCSVファイルを取得し勝手に関数をはりオートフィルしてくれたら幸せですね。 そう、それを実現できます。ですがこれくらいならそもそも重い作業ではありません。それほど幸せになれないでしょう。 じゃぁもっと盛大に条件を増やしましょう 日毎と週毎と月毎作業があり特定の場所にいくつかのフォルダがあり日付ごとに可変し、作成され集計されるデータもCSVやエクセルデータいくつかの拡張子のファイルがあり、特定のファイル(シェルなど)を作成しFTPでサーバにアップロードしテラタームなどでサーバのファイルを実行し実行結果をFTPで取得実行結果を新たにデータに追記しさらにそのつどデータをあらなたシートを作成し集計する。また完成したデータはまた別のいくつかの業務のためにそれぞれ業務のフォルダへコピーし各業務のようのデータを追記させるような現場があったとします。 …いやですねこんな職場…。私はもちろんこんな場所にいませんが いまの処理を全て一括で実行可能なのがVBAです。 つまりエクセル関数なんてVBAの比較対象ではないのです じゃぁ今のを条件をどうやって解決してくんだよ?! ファイルコピーや削除等はまぁデフォルトでもあるのですが filesystemobjectなどわたしなら使います。これだけワイルドカードを使ったフォルダの移動・コピー・削除・ドライブチェックなどできます。 聞き逃してないのなら気づいたと思います。デフォルトである機能ではありません。特定の機能をオブジェクトとしてVBAは取り込めるのです。 今述べたFSOやregexp(正規表現を扱える)、WScript.Shell、Shell.Application、winAPI、.netなど機能を拡張できるのです。 WScript.Shellのrunからならばほかのアプリケーションの操作も可能です。同期・非同期処理も自在に行え、ファイルの入出力ができるためbatやVBSやJS、ほかにシェルやTTLを作成などもできます。 FTPなどもバッチを生成したりVBSからFTP.exeにアクセスしても良いくrun処理で同期処理をしながら実行したりローカルからアップロードしたシェルなどをttlを使いサーバ上で実行も可能です。 集計する場合などはさらにそれをローカルにFTPダウンロードしたりもできます。 ファイルの中身の整合性確認なども全て自動化できることでしょう。 決まっている作業ならばコピーや移動エクセルの編集、外部ファイルや他のアプリケーションの実行含め全て自動化可能です。 残念ながらエクセル関数にはこのような機能はありません。もしかしたらあるのかも知れませんが少なからず私は知りません私の知識が足りないのかもしれません(きっと後者でしょう)。 また「VBAを使う意味」というよりは自動化する意味もこのメリットの中に含まれるのでしょうが自動化することで手間がなくなります。 これは作業の負荷軽減・作業スピード向上・手作業による作業ミスからの開放などが挙げられます。 どうでしょうか?これまでの回答者の方々より、より深く、また熱くVBAのメリットを私的にまとめて見ましたがメリットが掴めたでしょうか? 難しくてよくわからないと仰るならば、上記を端的にまとめると。 「VBAには幅広い拡張性とほぼ全ての事務的作業をオートメーション化できる」 と言う事です。

  • invierno
  • ベストアンサー率0% (0/0)
回答No.5

VBAをエクセル関数の延長として使うことはあまりメリットがなく、ワークシート処理を活かすならば条件付書式やリスト等を駆使して、出来る限りエクセル関数を使った方がいいと思います。VBAでワークシートファンクションと同じ事をさせても遅くなりますし、時間の無駄です。 逆にプログラミング言語としてVBAを見た場合、手頃に利用でき、入出力インターフェースが簡単に実装できるため、使い勝手がよいです。仕様上マルチスレッドや高速・大容量処理などには向いていませんが、参照設定等を駆使すれば立派なソフトウェアが作れます。 マクロを記録して、出てきたメソッドをつぎはぎにしたようなVBAは大体酷い事になり、それが評判を落としているのかもしれません。きちんとしたプログラミング作法にのっとらずに書き散らしたコードは他の人はもちろん、少し時間が経ったら自分でもメンテ出来ませんから。 ちなみに私はエクセルで授業ノートをとって、理系の授業ならば都度VBAでプログラムを作って検証したりしていました。VBAを先に覚えてしまうとエクセル関数を使うのが億劫になってエクセルユーザーではマイノリティになってしまいますから注意が必要です;

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

1.作業の自動化 ほとんどがこれになる。 例 繰返し作業 ネットから日々の株価データを過去10年分225銘柄分取得する。手動でやったら大変。 2.ワークシート関数またはその組み合わせではできない処理、またはメニューやボタンでできない処理 例 グラフウィザードではできない組み合わせグラフの作成。 3.イベント処理 例 1つのハイパーリンクで2ヶ所に飛ぶ。 4.その他 例 他のソフトとの連携 セルのデータをgoogleに渡して検索する。 など。

回答No.3

私が Excel VBA を使うケースで一番多いのは、他のシステムから出力したデータを Excel で作業しやすいように加工するケースかな。 ひと続きになっちゃってる項目を条件によって分離する。 その条件てのがひと続きになってるデータの中に埋め込まれてるから、プログラムによる判断で処理するしかない。 あとは Excel と全然関係なく、VBScript を書くときのエディタ代わりとか。。。

noname#79209
noname#79209
回答No.2

> VBAを覚えた人はやっぱり、ほとんどVBAで処理した方がよいと感じるのでしょうか? できれば、「VBAは最後の手段」というスタンスをお勧めします。 ワークシート上の数式や関数での解法を探求しもせず、安易にVBAに走るクセが付きます。 しかも、汎用的なVBAでなく極めてキメ打ち的なコードを書きがちです。 私なら、極力ユーザー定義関数として書き、ワークシート関数的に使えるようにします。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>VBAを覚えた人はやっぱり、ほとんどVBAで処理した方がよいと感じるのでしょうか? 両方の使い分けが必要なので、そのような事はありません。 無駄なコードを書けば関数よりもVBAの方が処理が遅くなるので、何でもVBAで対応すれば良いという物ではありませんし・・・。 関数では対応できない事をVBAで処理します。 関数でやった方がよい部分はシートに関数を記入します。 またVBAのコード内でワークシート関数を使えるので、VBAでは複雑な処理でも簡単に処理する事が出来ます。

関連するQ&A

  • Excel VBAでできること

    仕事でExcelの関数は比較的よく使っていますが、 VBAを使うと、関数の利用に比べて何が便利なのでしょう? また、みなさん通常どうやってVBAを学ばれていますか? 教えてください。宜しくお願い致します。

  • VBA

    VBAで計算したあと切捨てや、四捨五入の処理の仕方を教えてください。 あとエクセルの関数をVBAで使うことができますか?可能であれば使い方も教えてください。 お願いします。

  • 関数とマクロ(VBA)について

    関数とマクロ(VBA)について エクセルで関数を多様するのとVBAを書くのとでは、処理速度およびファイルサイズが変わりますか? ちなみに現在、関数を多様してるせいなのかファイルサイズが21Mもあり、コア2.66G、メモリ2Gでちょっと時間がかかります。データは12000行くらいです。 VBAの方がいいとしましても、全く出来ないのでこれからの勉強になると思いますが・・・。 やはり、VBAでしょうか?

  • VBAを使った仕事

    今、派遣で事務をしていますが仕事の効率が悪いため、 エクセルVBAを勉強中です。 いずれ転職して、エクセルVBAを使った仕事をしたいのですが、 どういう職を目指せばよいでしょうか? プログラマーまではいかないけれども、エクセルVBAや関数使って 物を作る仕事がしたいです。 ご回答、よろしくお願い致します。

  • Excel VBAの勉強のコツ

    新しい仕事に就いたのはいいですが、いきなりExcelでVBAを使わなければならない仕事を次々に任せられています。 職場の人はPCはまるっきり分からないので、一つの仕事にどういう作業が必要でどのくらいの時間が必要かも分からない状況です(そもそもExcelで何がどこまでできるかも分かってない)。 関数で済むような内容ならいいのですが、頼まれる仕事のほとんどが高度なVBA知識が必要なものが多くあります。 「だったらそれを上司に話せ」と言われそうですが、「できないなら辞めろ」みたいな雰囲気なので今必死に勉強しているところです。 VBAの本やネットの記事などもいくつか読みましたが書いてある内容だけは理解できても応用がなかなかできず、誰かにコードを教えてもらっていくつか出来上がりましたが、教えてもらったコードの意味が何度読んでも把握できません。 (どこで何の処理をしているか、などが分からない感じです) VBAに詳しい人はどこで詳しくなられたのでしょうか。 これからVBAを実務で使えるようにするために効率的な勉強方法などありますでしょうか。 勉強のコツを教えてくださいm(__)m

  • Excel・VBAについて

    Excel・VBAについて 今、事務職をしているのですがExcelのVBAを独学で学びたいと思っています。 私のExcelのレベルはMOSの上級程度ですが、関数が苦手でWordとかPowerPointとかの文系よりのソフトの方が個人的には好きです。 しかし仕事をしていく上で、Excelは使う機会が多いと思いますので、更に上を目指してスキルアップしていきたいと考えております。 お聞きしたいのは、VBAを習うに当たって、英単語や理数系に強くなければならないかという事なのですが、私は英単語一つとっても本当にスペルとかを覚えるのが苦手で、理数も計算間違いばかりしてしまう方で苦手なのですが、こんな私でもVBAを習得する事は可能でしょうか? ちなみにXML(初級)をMOSの上級を勉強する時に習った事があったのですが、もう訳が分からなくてちんぷんかんぷんでした。あとAccessも苦手です…。 向いていないなら向いていないと、はっきりおっしゃって頂いて構いませんので、どうぞ宜しくお願い致します。

  • エクセルVBAからCの関数を呼ぶ

    エクセルVBAから、VisualC++で書かれた関数を呼びたいのですが具体的な方法を教えてください。VBAでは書きにくい処理をCで書いて、それをエクセルから利用したいと考えてます。よろしくお願いします。

  • Excel VBA 圧縮、伸長の関数は?

    Excel VBAでプログラミングしています。 扱うデータ量がおおきくなったためデータの保存はExcelシートから 外部ファイルに変更しました。しかし、ファイルサイズが大きくまた、VBAでの 処理が重く感じます。そこで、データを圧縮、伸長する関数があれば便利と思っています。ファイルに出力後に圧縮する方法はあるようですが、VBA処理、ファイルの読み書き時にデータが軽いといいので、VBAで扱える関数があればと思っています。関数、または他の方法をご存じの方、お教え願います。

  • VBAについて教えて下さい。

    VBAについて教えて下さい。 昨年度まで担当者として色々と処理を行なっていた人が転勤となり、今のところ不便はないのですが、今後の事を考えると少しでも知識をつけていきたいと感じています。現在利用しているVBAの記述に関しては、少しずつ色々と調べて解読?・理解をしていくつもりです。 そこでWinのVBA記述についてお聞きいたします。 特定のexcelファイルを使った人(ユーザー名)と日時を、特定のファイルに記録していきたいと考えています。日時をtxtファイルに記録(追記)する方法はネット等に出ていましたが、ユーザー名を記録する方法が分かりませんでした。※探し方が悪いのかもしれませんが・・・。 今のところVBA自体に関して殆ど分からない状態です。 お時間のある方、お時間の空いている時で結構ですので、何卒ご教授頂きたいと思います。 宜しくお願い致します。

  • MacBook Air でVBAについて

    パソコンを買い換えるタイミングなので、 Win機からMacBook Air にしようと思っていたのですが、 最近、急にエクセルでの仕事が増えてきまして、 初心者ですがVBAでの作業を必須とします。 この仕事が一時的でなく、継続しての仕事となりそうなため、 もともとは画像処理やデザインなどを本業としており、 Macにしたいと考えていたのですが、 Mac+Bootcamp+Excelの情報を検索してみても、 なかなかスッキリする解答に出会えず、こちらで2点質問させていただきます。 (1)MacでVBAというのはやめた方がいいのでしょうか? やめた方がいいのであれば明確な理由を教えてください。 (2)もしかしたらVBAではなく、PHPなどで同じような作業はできるのでしょうか? プログラミングにはまったく詳しくないのですが、 WEBから情報を大量に入手(商品のメタデータや画像リンクなど)し、一覧を作成。 その一覧を様々な用途によって組み替えたり等の加工をします。 これらの一連をエクセルのVBAや関数を使って行っているのですが、 PHPなどでも同じようなことができるのですか?  だとするとMacでPHPが使えれば、こなせる作業という理解でいいでしょうか? 質問がピンぼけでしたら申し訳ありません。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう