今年で2年目を迎えるプログラマーです。今度仕事でExcelVBAを使って帳票出力するプログラムを作ることになったのですが、なぜかVBAは苦手で、書き方が覚えられません。これまでJavaとC++を触った経験はあるのでプログラミング自体に苦手意識はなかったのですが、VBAだけは何故か書けなくて困っています。練習問題のようなものにチャレンジしても簡単なところでつまづきます。
コツや勉強方法などございましたら、お教え頂きたいです。よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答8件
0
ベストアンサー
VisualBsic "for Applications"
VBAとは「VisualBsic for Applications」の略で、大前提としてOfficeソフト(ExcelVBAならExcel)を操作することを目的とした言語です。
バックボーンにそれらのソフトを抱えていますので、そこに引きずられた機能とか、特化した機能などがあります。
・基本的にマルチスレッドな処理はできません。
・ワークブック関数、ワークシート関数、標準モジュール、フォームモジュールなど、関数を実装する場所が複数あり、動作の範囲に影響したりします。
・イベントにはシートで発生するもの、ブックで発生するものなどという概念があります。
・対象ブックやシートを明示しない場合、暗黙的にActiveなブックやシートなどが参照されます。
※ワークブック関数の場合は自ブック、ワークシート関数の場合は自シートが暗黙的に参照されます。
こういった独特な部分がなじみにくいと感じられるところかもしれません。
VBベースの言語
それに加えて、これまでJavaやC++といった言語を経験されてきたとのことですが、VBAはその名の通りVBベースの言語です。
バージョンでいうと.NETになる前のVB6.0に近いものです。
VBとJava・C言語を比べてまず感じるのは、VBは非常にユルい言語だということです。
よく言えば「融通が利く」
悪く言えば「適当に動く」
変数の型の自動解釈とか、Variantのような「何でも型」の存在が主なところでしょうか。
ここらへんに文化の違いを感じるところがあるのかもしれません。
慣れないうちは「違う型の変数に、勝手に調整されて変な値が入ってしまう」と思うことがありそうです。
私は逆にVBから始めてJavaやCはその後に触れた言語でしたので、これらの言語に触れ始めた当初は「融通の利かない、お堅い言語」という印象を持っていました。
最終的には、VBのこういった性質を知ったうえで、拒絶せず、うまく付き合っていくことが大切なのかもしれません。
やはり「習うより慣れろ」というのが結論になってしまうのでしょうが、使い慣れればVBAはお手軽で非常に楽しい言語です。
サンプルの類もネット上に山ほどあります。
※ExcelVBAでシューティングゲームを作ってしまうようなサンプルは行き過ぎな気もしますが、そんなのもあります。
がんばってみてください。
余談
余談というか、VB愛好者の愚痴になってしまいますが、私のまわりでJava/Cから言語を覚えてからVBに触れた方々は、VBのことを「雑な言語」とか「低級言語」と見下す人が多いです
それを否定する気はありませんが、そんなVBも使いこなしてこそ技術者です。
使いこなせなくて悪く言うのは「なんだかなぁ」と思ってしまいます。
その点、質問者さんは使えるようになろうと努力されているようですので応援したいです。
ぜひがんばってモノにしてください。
投稿2018/02/28 02:59
編集2018/02/28 03:01総合スコア3013
0
概念的にはExcelVBAもオブジェクトの固まりです。
ワークブックオブジェクト
ワークシートオブジェクト
セルオブジェクト
基本的には上記のオブジェクトを対象に処理をするだけです。
オブジェクト構造なので、C++やJavaと比べても違和感はないと思います。
他の回答にもありますが、どこでつまづいているのでしょうか。
そこを明確にしたほうがよりよい回答が得られると思います。
あとは良く言われますが、マクロの記録で操作をコード化して読み解くor修正するという方法もあります。
また今の時代ほとんどのことはググればやり方が出てきます。
まずはコピペから始めて、徐々に自分なりのコードにしていけばよいと思います。
投稿2018/02/26 23:38
総合スコア16996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
VBAはExcelの操作の概念がベースになっています。そのためExcelの機能を理解していないと覚えにくいかと思います。コード自体はJAVAやC++よりも簡単かと思いますので、Excel操作について慣れるようにされてみてはいかがでしょうか。
例えば、
maxrow = cells(rows.count,1).end(xlup).row
のようなコードはExcelのショートカットキーである[Ctr]+[↑] をコード化したものですが、コードだけだとなかなかイメージしにくいかもしれません。
投稿2018/02/26 15:54
総合スコア38
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
EXCELVBA前述してあるexcel(表操作)の機能を自動化することを目的とした言語であり、excelにて表を作成したり、加工したりすることはすべてマクロ化することが可能です。一番手っとり速いと思うのが、excelに自動マクロ
生成という機能があり、それを実行し、シートを操作し自動マクロ機能を停止する。
すると、シート操作した作業がそのままマクロに展開されてます。それらを何度か繰り返し、この操作には、このマクロを使うんだーーというのを理解していきます。
あとは、条件などの文法は、excelマクロ・VBAをキーとしてググってみると書式および使い方を説明したhpが見つかるかと思います。そうやって、私は覚えていきました。
投稿2018/10/12 11:54
総合スコア341
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
1)作りたいモノのイメージを膨らます。
それをExcel上でどう操作すれば作れるのかを考える。
1)マクロ記録機能を使って、
Excel上の操作によって得られる結果がどういう風にVBAコードに落とし込まれるかを観察する。
2)Office TANAKA - トップページさんのコンテンツほか、
VBA関連情報を発信しているネット上のコンテンツを読破し、(都度調べるでも十分)
先のVBAコードとの関連性や接続性を検討し、どういうことができるだろうかと思索する。
私の場合、Accessにデータを溜め込むためのユーザーインターフェースとしてExcelを使って
Excel帳票を自動的に出力するにはどうするかというアプローチで技術習得したので、
ExcelVBAで数字を流し込むための「虫食い」Excelワークシートをに
RangeやらCellsやら使ってどうアクセスするかってあたりから徐々にステップアップしていきました。
投稿2018/02/27 00:46
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
僕の場合、たまに仕事でツールを作りますが、覚えてません。
「やりたいこと」をググります。
独特のシートとか行とか列とかセルなどの概念がわかっていれば、EXCELの場合なんとかなります。
投稿2018/02/26 15:28
総合スコア891
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/28 04:08