Excel VBAを勉強始めて一ヶ月くらいです。
文は大体読めるようになってきました。
ですが、本とかなしで、いざ表とモジュールのみになるとどうに書いたらいいのかわからなくなります。
どうしたら上達しますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答10件
0
どう書いたらいいのかわからなくなります。
どうしたら上達しますか?
たとえば、英語には5文型がありますね。
そういう基本構文を押さえましょう。
(手続き型)プログラミングの場合は、
逐次、分岐、反復の3要素が中心的な構造になります。
これは計算機科学者が60~70年代に提唱したものです。
逐次とは上から順番に実行するだけなので常識として、
if文、for文、配列の3つを組み合わせて
表現することに慣れれば、書き方がすぐに浮かびます。
ほかの細かい命令は忘れてもいいので、そのつど調べます。
調べ方を覚える方が重要です。あと実践的には逆引き辞典を持つとか。
この3要素はほかの多くの言語でも有効なので、
考え方を身につけて損しないと思います。
投稿2016/08/30 13:54
総合スコア5592
0
業務に役に立つサンプルプログラムを実際に打ち込んでみて
実際に使っていくと上達すると思います。
時々周囲の人にも使って貰って「凄~い」などと言われると
どんどんと作成意欲が湧いて上達すると思います。
本だけ多く読んで考え込んでいるよりもやはり数多くの
サンプルに触れて数多くコーディングすることが上達の
近道ではないでしょうか?(最初はマネでも構いません)
http://excel-mania.com/vba/
などのようなサンプルを試してみて下さい。
投稿2016/08/30 11:01
総合スコア1628
0
本やネットが見れない環境ならともかく、そうでないならば本を読んでも、ネットを使ってもいいと思います(あくまで一意見です)
自分は結構人様のサイトや、マニュアルなどを業務中でもよく見てます^^;
VBAに限らず、慣れるためには大きく①イメージ ②実践 の二つの繰り返しではないかなーと思います。
①イメージ:どんな機能を作りたいかを明確にする
②実践:①を具現化する
VBAのいいところはEXCELの機能が充実しているので、作りたい機能の具現化が他言語より容易なところがあると思っています。他の諸先輩方もおっしゃってますが、とにかく書く、コードに触れるのが慣れるための簡単な方法ではないかなと思います。書いている最中にわからなくなったら、調べる。現在自分はその繰り返しです。
コードを書いている最中に「あ、プログラム少しわかったかも!」っていう感覚がわかるともっと楽しくなると思いますよ^^
上記の繰り返しで慣れていけば、次はコードをきれいにかく、汎用性のあるコードにするといったステップアップができるようになると思います。
参考になれば幸いです。
投稿2016/08/31 03:10
総合スコア247
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
始めて一ヶ月ということなので、そんなに焦らなくてもいいんじゃないでしょうか。
本を見ながら書くのは、大いに結構なことだと思いますよ。無論、ただ書くだけじゃなく、中身を理解しながらです。
dojikkoさんのやり方もありますが、もし、既存で組まれているVBAプログラムがあって、それを眺めることができる環境にあるのでしたら、そうした既存のプログラムを見るというのもありです。その中身を理解した上で、自分なりにカスタマイズしていくというのもありだと思います。
とどのつまり、多くのプログラムに触れてみるになりますかね。そうした中で、書き方なり考え方なりが身に付いていくと思います。また、自分の手を動かして作っていけば、経験なり知識となって身に付いていくものですよ。
投稿2016/08/14 06:02
総合スコア1557
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/14 07:01
2016/08/14 11:14
2016/08/30 11:18
0
ベストアンサー
私の経験であれば、ですが…
-
最初は「マクロの自動記録」を利用して作成。
-
慣れてきたら、「どうしたら簡潔な文で同じことができるか」を、文献やネットで調べる。
(私の時は文献のみでしたが…。)
- 作成したマクロのデバッグを行なう(これは非常に大変ですが、乗り越えられると実力付きます。)
方法は、F8(ステップ実行)や、「Debug.print 変数名」を、気になる変数の下に記述。
Debug.Printの結果は「イミディエイトウィンドウ」に表示される。
- Mougのマクロコラムや、「VBA (知りたい事)」でググる。
あとは、VBAエキスパート試験勉強とかでしょうか…。
但し、資格勉強は、あくまで「資格手当」狙いが目的なら。※大抵の企業は取得後3年位もらえるので。
業務で忙しい場合は、無理に狙わなくてもいいですよ?(試験代金高いですし。)
一番なのは、「マクロで業務をどれだけ短縮できるか」を実感すること、ですね。
ほとんどの事務業務が「あっという間に終了」という位になりますから。
投稿2018/03/06 15:55
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
いま職場の新人に向けて、どうやったらVBAを学べるかを真剣に教えています。
ここからは、プログラミングに対してどこまでのスキルがあるか次第ですが、分からなくなったら聞いてください。
1)イミディエイトウインドウをフル活用する
まずイミディエイトウィンドウを立ち上げてください。
そして、ここに1行ずつソースコードを書くようにしてください。
2)ループをカウントしてください。
次に貴方のやろうとしている、作業の重複性を考えてください。
たぶんVBAでやるからには、何か繰り返しの作業が存在するはずです。
一番小さいループをまず作ってください。より大きいループは後で追加すればいいので、
まずは小さい単位で考えてください
3)セルの値に名前を付けてください。
たいていシート上のデータの参照になると思いますので、
エクセルのシート側にいって、セルに名前を付けてください。
あとでシート側のレイアウトを変えたくなった時に有効ですから
4)シートの参照の仕方を覚えてください。
シートには二つの表現があります。
range
cell
rangeはa1とかの書き方と、先ほどのセルの名前が使えます。
cellは行、列の座標で、セルを参照します。
私は最近は、offsetを多用します。
しかし結合セルがある場合、これは最大限に注意してください。
その場合はcell参照の方が、誤解がなくていいでしょう
5)セルの読み書き
イミディエイトウィンドウを使って、セルの値を読んでみてください
イミディエイトウィンドウを使って、セルに値を書き込んでみてください
6)オブジェクトの参照
オブジェクトを変数化する場合は、すべてsetを頭につけることを覚えてください。
withを有効に使ってください。end withを忘れないでください
主になるシートを決めてください。サブになるシートにはwithは使わない方がいいでしょう
あなたのレベルがわからないので、どこまで理解できているか教えてください
(そこから続きを書きます)
投稿2018/03/03 18:23
総合スコア90
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ちょっと外れるかもしれませんが、Excelマクロプログラミングで注意した方が良いと思う点について書きたいと思います。
それは、セルの指定でCell(2,3)のように直接、行や列を数字で書かないことです。
私は、
Public Const START_ROW=2
Public Const START_COL=3
などと定数で行位置や列位置を定義し、
Cell(START_ROW, START_COL)
と記述しています。
これにより、途中から表の位置が変わることがあっても、これらの定数を変えることで簡単に対応することもでしますし、セル位置の意味がプログラミングで分かるようになります。
一度、作成したVBAプログラムで表のレウアウトが変わってプログラムを一から書き直す必要がなくなります。
VBAプログラムを開発する参考になれば、幸いです。
投稿2016/09/03 14:32
総合スコア157
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
始めて1ヶ月なのであれば、
- 業務等、やりたいことがあれば出来る限りVBAを使うようにする(ただしコミュニケーション的にそれが好ましくないなら別途VBAでもやってみる)
- その際、マクロの記録で、VBAを生成してみて、そこから自ら学ぶ
- やりたいことが明確なのであれば、googleで検索して、お手本のコードを探して、写経して自分でも実行してみる
- 周りにVBAを使っている人がいれば、業務等で使えるものをシェアしてもらって理解する
本を読むよりとにかく自分で実行してみることが大事です。
投稿2016/09/03 13:14
総合スコア44
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
初心者+αですが、
「入れ子」を意識して作ると良いかと思いました。
すでに完成したコードを読もうと思うと、上から順番に読みますよね?
でも、書くときは上にいったり下にいったりしながら書きますよね?
例えば、「処理する範囲を決める」ことと、「何か処理する」ことは別なことなので
まず、
For
Next
という様な範囲の「枠」を作って、その後に中に「処理すること」を書くことを意識されてはいかがでしょうか?
読みやすいマクロは、階段みたいになっており、⇒側にへこんでいっていると思います。
そのへこんでいるのは「処理」であり、左に飛び出ているほど大きい「枠組み」。
という様に作る&読んでみては?
読むときも、動かして良いのであれば「ブレークポイント」や「F8キー」を使って、
どんな動きをして処理されていくのか、を体験してみると良いと思います。
注意!)マクロ処理は、「やり直す」ことができないので、予め保存しておいたり、
他に影響がないか確認してからやってくださいね。
投稿2016/08/30 04:28
総合スコア12
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。