質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

8回答

382閲覧

ExcelVBAの勉強法について

aiue

総合スコア36

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/02/26 14:25

今年で2年目を迎えるプログラマーです。今度仕事でExcelVBAを使って帳票出力するプログラムを作ることになったのですが、なぜかVBAは苦手で、書き方が覚えられません。これまでJavaとC++を触った経験はあるのでプログラミング自体に苦手意識はなかったのですが、VBAだけは何故か書けなくて困っています。練習問題のようなものにチャレンジしても簡単なところでつまづきます。
コツや勉強方法などございましたら、お教え頂きたいです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ExcelVBAer

2018/02/28 04:08

余談の「VBのことを・・・」わかります! 東京のとある勉強会に参加した時、 Excel専門のSEと自己紹介したら、 きょとんとされ、ふーん、と。。。 まぁ、今となってはそれをバネにしてますが笑 人を見かけで判断する人が大したことないように、 言語だけで判断する人も大したことないだろうし。
guest

0

概念的にはExcelVBAもオブジェクトの固まりです。
ワークブックオブジェクト
ワークシートオブジェクト
セルオブジェクト
基本的には上記のオブジェクトを対象に処理をするだけです。
オブジェクト構造なので、C++やJavaと比べても違和感はないと思います。
他の回答にもありますが、どこでつまづいているのでしょうか。
そこを明確にしたほうがよりよい回答が得られると思います。
あとは良く言われますが、マクロの記録で操作をコード化して読み解くor修正するという方法もあります。
また今の時代ほとんどのことはググればやり方が出てきます。
まずはコピペから始めて、徐々に自分なりのコードにしていけばよいと思います。

投稿2018/02/26 23:38

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBAはExcelの操作の概念がベースになっています。そのためExcelの機能を理解していないと覚えにくいかと思います。コード自体はJAVAやC++よりも簡単かと思いますので、Excel操作について慣れるようにされてみてはいかがでしょうか。
例えば、
maxrow = cells(rows.count,1).end(xlup).row
のようなコードはExcelのショートカットキーである[Ctr]+[↑] をコード化したものですが、コードだけだとなかなかイメージしにくいかもしれません。

投稿2018/02/26 15:54

shigeru

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

EXCELVBA前述してあるexcel(表操作)の機能を自動化することを目的とした言語であり、excelにて表を作成したり、加工したりすることはすべてマクロ化することが可能です。一番手っとり速いと思うのが、excelに自動マクロ
生成という機能があり、それを実行し、シートを操作し自動マクロ機能を停止する。
すると、シート操作した作業がそのままマクロに展開されてます。それらを何度か繰り返し、この操作には、このマクロを使うんだーーというのを理解していきます。
あとは、条件などの文法は、excelマクロ・VBAをキーとしてググってみると書式および使い方を説明したhpが見つかるかと思います。そうやって、私は覚えていきました。

投稿2018/10/12 11:54

akirafudo6

総合スコア341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBAだけは何故か書けなくて

何故書けないのかを分析することからですね。
明らかになったら、また質問してください。

投稿2018/02/26 15:36

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBAだけは何故か書けなくて

たぶん、文法的な話でなく、VBAオブジェクトの使い方のなれだと思うのですよね。
MSDNを一通り眺めるだけでもずいぶん違うと思います。

投稿2018/03/01 10:08

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

mike2mike4

総合スコア891

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問