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

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

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

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

Q&A

解決済

10回答

2484閲覧

Excel VBA

kotodama

総合スコア33

VBA

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

0グッド

0クリップ

投稿2016/08/14 05:35

Excel VBAを勉強始めて一ヶ月くらいです。

文は大体読めるようになってきました。
ですが、本とかなしで、いざ表とモジュールのみになるとどうに書いたらいいのかわからなくなります。

どうしたら上達しますか?

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

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

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

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

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

guest

回答10

0

どう書いたらいいのかわからなくなります。
どうしたら上達しますか?

たとえば、英語には5文型がありますね。
そういう基本構文を押さえましょう。

(手続き型)プログラミングの場合は、
逐次、分岐、反復の3要素が中心的な構造になります。
これは計算機科学者が60~70年代に提唱したものです。

逐次とは上から順番に実行するだけなので常識として、
if文、for文、配列の3つを組み合わせて
表現することに慣れれば、書き方がすぐに浮かびます。

ほかの細かい命令は忘れてもいいので、そのつど調べます。
調べ方を覚える方が重要です。あと実践的には逆引き辞典を持つとか。

この3要素はほかの多くの言語でも有効なので、
考え方を身につけて損しないと思います。

投稿2016/08/30 13:54

LLman

総合スコア5592

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

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

0

業務に役に立つサンプルプログラムを実際に打ち込んでみて
実際に使っていくと上達すると思います。

時々周囲の人にも使って貰って「凄~い」などと言われると
どんどんと作成意欲が湧いて上達すると思います。

本だけ多く読んで考え込んでいるよりもやはり数多くの
サンプルに触れて数多くコーディングすることが上達の
近道ではないでしょうか?(最初はマネでも構いません)

http://excel-mania.com/vba/
などのようなサンプルを試してみて下さい。

投稿2016/08/30 11:01

Yatsurugi

総合スコア1628

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

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

kotodama

2016/08/30 11:16

ありがとうございます! 参考にします!!!
Yatsurugi

2016/08/30 13:57

どんどんと作って周りの女性に「凄~い」と言われてみて下さい。 勝手にやる気になっていくと思います。
guest

0

マクロの自動記録機能を使ってやりたいことをやってみる→それをカスタマイズ

投稿2016/08/14 05:44

dojikko

総合スコア3939

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

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

kotodama

2016/08/14 05:49

なるほど!みなさんはそうにやってるんですか?
dojikko

2016/08/14 05:54

そのうち、やろうとする操作が直接コードで書けるようになりますし、今でも少しややこしいのは、このようにしています
kotodama

2016/08/30 11:18

試してみます!!!
guest

0

本やネットが見れない環境ならともかく、そうでないならば本を読んでも、ネットを使ってもいいと思います(あくまで一意見です)
自分は結構人様のサイトや、マニュアルなどを業務中でもよく見てます^^;

VBAに限らず、慣れるためには大きく①イメージ実践 の二つの繰り返しではないかなーと思います。
①イメージ:どんな機能を作りたいかを明確にする
②実践:①を具現化する

VBAのいいところはEXCELの機能が充実しているので、作りたい機能の具現化が他言語より容易なところがあると思っています。他の諸先輩方もおっしゃってますが、とにかく書く、コードに触れるのが慣れるための簡単な方法ではないかなと思います。書いている最中にわからなくなったら、調べる。現在自分はその繰り返しです。
コードを書いている最中に「あ、プログラム少しわかったかも!」っていう感覚がわかるともっと楽しくなると思いますよ^^

上記の繰り返しで慣れていけば、次はコードをきれいにかく、汎用性のあるコードにするといったステップアップができるようになると思います。

参考になれば幸いです。

投稿2016/08/31 03:10

SASAHARA

総合スコア247

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

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

0

始めて一ヶ月ということなので、そんなに焦らなくてもいいんじゃないでしょうか。
本を見ながら書くのは、大いに結構なことだと思いますよ。無論、ただ書くだけじゃなく、中身を理解しながらです。
dojikkoさんのやり方もありますが、もし、既存で組まれているVBAプログラムがあって、それを眺めることができる環境にあるのでしたら、そうした既存のプログラムを見るというのもありです。その中身を理解した上で、自分なりにカスタマイズしていくというのもありだと思います。
とどのつまり、多くのプログラムに触れてみるになりますかね。そうした中で、書き方なり考え方なりが身に付いていくと思います。また、自分の手を動かして作っていけば、経験なり知識となって身に付いていくものですよ。

投稿2016/08/14 06:02

archiver

総合スコア1557

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

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

kotodama

2016/08/14 07:01

ありがとうございます。 みなさんは、書籍などみなくてもパパッと組めてしまうんでしょうか?(O_O)
archiver

2016/08/14 11:14

使い慣れていない言語は当然の事ながら、使い慣れている言語でもたまには本を見たり、ネットで検索したりしますよ。使い慣れている言語の場合はあくまでも参考程度ですね。 モダンな言語などでは外部ライブラリなどが提供されているものもあります。そうしたライブラリについては、そのマニュアルなり、使用例などを見て使うことになりますね。また、ライブラリなどはどんどん開発され公開されていきます。そう考えると、まるっきり何も見ないで作るということは殆ど無いと思いますよ(むしろ、ライブラリを使わない方がどうかという見方もありますし)。
kotodama

2016/08/30 11:18

なるほど!!! じゃ、ある程度読んだりできればあとは本やネットで調べてやるのですね! ありがとうございます
guest

0

ベストアンサー

私の経験であれば、ですが…

  1. 最初は「マクロの自動記録」を利用して作成。

  2. 慣れてきたら、「どうしたら簡潔な文で同じことができるか」を、文献やネットで調べる。

(私の時は文献のみでしたが…。)

  1. 作成したマクロのデバッグを行なう(これは非常に大変ですが、乗り越えられると実力付きます。)

方法は、F8(ステップ実行)や、「Debug.print 変数名」を、気になる変数の下に記述。
Debug.Printの結果は「イミディエイトウィンドウ」に表示される。

  1. 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

yuujiMotoki

総合スコア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

diracpaul

総合スコア157

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

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

0

始めて1ヶ月なのであれば、

  1. 業務等、やりたいことがあれば出来る限りVBAを使うようにする(ただしコミュニケーション的にそれが好ましくないなら別途VBAでもやってみる)
  2. その際、マクロの記録で、VBAを生成してみて、そこから自ら学ぶ
  3. やりたいことが明確なのであれば、googleで検索して、お手本のコードを探して、写経して自分でも実行してみる
  4. 周りにVBAを使っている人がいれば、業務等で使えるものをシェアしてもらって理解する

本を読むよりとにかく自分で実行してみることが大事です。

投稿2016/09/03 13:14

kazy1981

総合スコア44

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

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

0

初心者+αですが、
「入れ子」を意識して作ると良いかと思いました。
すでに完成したコードを読もうと思うと、上から順番に読みますよね?
でも、書くときは上にいったり下にいったりしながら書きますよね?

例えば、「処理する範囲を決める」ことと、「何か処理する」ことは別なことなので
まず、
For

Next
という様な範囲の「枠」を作って、その後に中に「処理すること」を書くことを意識されてはいかがでしょうか?

読みやすいマクロは、階段みたいになっており、⇒側にへこんでいっていると思います。
そのへこんでいるのは「処理」であり、左に飛び出ているほど大きい「枠組み」。
という様に作る&読んでみては?

読むときも、動かして良いのであれば「ブレークポイント」や「F8キー」を使って、
どんな動きをして処理されていくのか、を体験してみると良いと思います。

注意!)マクロ処理は、「やり直す」ことができないので、予め保存しておいたり、
他に影響がないか確認してからやってくださいね。

投稿2016/08/30 04:28

stylosa

総合スコア12

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

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

kotodama

2016/08/30 11:17

回答ありがとうございます! なるほど!!!!そのようなやり方もあるのですね!!! 試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問