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

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

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

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

Q&A

7回答

2988閲覧

VBAの勉強の仕方について

garchomp

総合スコア128

VBA

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

4グッド

1クリップ

投稿2017/03/07 04:29

超初歩的な質問ですいません。

現在、VBAの勉強をし始めて6日目ですが、やっていく中で、どのように勉強していくのが最も最短ルートなのかを模索中です。

現在、Progra!の(全部)VBAを一周終わり、二週目をやっているところで、昨日から本「VBAの神様」を読み進めています。

ドットインストールのVBAで概要もある程度読み、根気強く基礎の習得に励んでいます。

この時、最短ルートは、今の勉強法を続行しても良いのか、もしくは、別の勉強法が良いのか、のどちらになるでしょうか?

また、VBAを応用もある程度使えるようになるために要する期間はどれぐらいになるでしょうか?

ちなみに、メソッド、プロパティの取得、設定をはじめとし、メソッドやプロパティを少し覚えられてきたところです。

Waki285, yamadat, DrqYuto, aki.aki.👍を押しています

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

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

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

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

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

guest

回答7

0

個人的な意見となります。

本やWebで体系立ったものを読んでも、実践時には少ししか役立ったことがありません。
作りたいものを作るためにそういうものを読んで調べたりという感じだと身につきやすかった様に思えます。
私にとっては実際にものを作ることが最短でした。

投稿2017/03/07 04:40

workaholist

総合スコア559

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

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

0

VBAを習得したいんじゃなくて、
例えばExcelとかAccessなどのアプリの中で
処理の自動化を実現したいっていうことなんじゃないでしょうかね。

であれば、
はじめはマクロ記録をやって
実現させたいことをマクロ記録によってVBAコードにさせて、
それを改変して汎用化していったりするとか、
Excel VBA習得の時はよくやってましたよ。

目的を設定して、
実際に作る、
ハマったらネット検索して情報収集して軌道修正する、
の繰り返しでした。

投稿2017/03/07 10:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

最短ルートは、今の勉強法を続行しても良いのか、もしくは、別の勉強法が良いのか、のどちらになるでしょうか?

可能なら、今の勉強法を続行しつつ、並行して応用的なことにも手を出していくと良いでしょう。

私は、技術とアイデアは鶏と卵の関係にあると考えています。
「できる」ということを知らなければ、やりたいという発想そのものが出てきませんし、かといって「やりたい」と思わなければ学ばないので、できるようになりません。

ですから、知識がまだ十分じゃなくても、とりあえず自分が作りたいものにチャレンジみるということも大事ですし、辛抱して基礎の学習もコツコツ続けるということも大事だと思います。

また、VBAを応用もある程度使えるようになるために要する期間はどれぐらいになるでしょうか?

日々どれだけ接するかによりますが、一般的に何かをマスターするには10000時間と言われてます。ただ、そこそこレベルで良いなら20時間くらいじゃないですかね。

ソースはこちらです。
「一人前になるには1万時間必要」は誤りだった! たった20時間で新たなスキルを身につけられる4つのコツ

もちろん、良い教材に当たればという前提付きですが、実感として20時間というのはそれほど的外れではないように思えます。

投稿2017/03/17 20:13

thom.jp

総合スコア686

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

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

0

一応、ExcelでのVBAの学習だと仮定して、今読んでいらっしゃる本の次に、以下の2冊をお勧めします。
(ExcelVBA以外の、WordやAccessのVBAの学習にもとても役立ちます。)

(A)スラスラ読める Excel VBA ふりがなプログラミング
(ふりがなプログラミングシリーズ)
リブロワークス (著)

(B)いちばんやさしいExcelVBAの教本
人気講師が教える実務に役立つマクロの始め方
(「いちばんやさしい教本」シリーズ)
伊藤潔人 (著)

この本の一語一句でもわからないところがあって、実際にこの2冊のとおりにExcelでサンプルを作って・動かすことができないなら、この先、VBAをしっかりと理解できなくなる可能性が高いと思いますので、是非一度本屋さんで立ち読みでもしてみてください。(サンプルはもちろんダウンロードもできます。)

他の本を読みながらでもいいので、この2冊だけは、もしできることなら、ご購入をお勧めします。

理由は、以降に挙げた(01)~(20)に当てはまるように書かれていて、長い目で見ると、挫折しにくかったり、一度や二度・挫折しても再度読み直すと復活しやすい本だからです。

以降に挙げた(01)~(20)は、半分は、上記の2冊から学んだことです。
(私も初心者なので間違いがあるかもしれませんが。もしそうだったらスミマセン!)

僕自身、グラフも動かせないような初心者なのですが、ご紹介した2冊を読んだおかげで、ある地点から、自分で言うのもなんですが、飛躍的にExcelVBAを理解できるようになりました。
(ヘルプやオブジェクトブラウザを使えるようになり、人やWebに聞かなくても自力でエラーを解決できる件数が増えてきました。)

なお、以下のような流れを意識して書かれている「初心者本」は、ご紹介した2冊以外、どんなレジェンドさんの本を探しても、多分、無いのではないかと思っています。

2冊の本の不明点、と、以下の(01)~(20)の不明点を、一語一句、すべて、分かる人や先輩などに、わかるまで何回でも聞けば、恐らくですが、高い確率で上達すると思います。
他の初心者本なら、分からなかったらスルーしてもいいですが、この2冊は、スルーしないほうが良いと思います。一度や二度、挫折してもいいので、必ず「わかるまで」誰かに教えてもらってください。

頑張ってください!!

VBA

1(01)プログラミングとは、どんな言語であっても、基本、『「変数」というものを動かすことで「自動化」を実現する 』、そういう作業。 2 3(02)基本、「変数」に「生データ」を代入することで、「変数」を動かせるようになる。 4 5(03)そして、VBAの場合、「変数」には大きくは 2つある。というか、2つしかない。それは、「一般的な変数」と「オブジェクト変数」の2つ。 6 7(04)「一般的な変数」に代入する生データは「一般データ( リテラル値? )」。具体的には「数値、文字列、日付、True/False」などの「文字ベース」のデータ。 8 9(05)「オブジェクト変数」に代入する、生データに相当するものは「オブジェクト式」(=オブジェクト)。 10 11(09)ちなみに「オブジェクト」は「ユニット、ツール、ロボット」といった雰囲気の、何らかの動作・仕事をする「部品」めいたもの。基本、「複合機能体」。(後述の「プロパティ」と「階層構造上下自由往来機能」は、どのオブジェクトも必ず保持・内包しています。メソッドやイベントは持たないモノがあります。) 12 13(10)「オブジェクト」には、画面上に「絵」として見えるもの・裏方で動く目に見えないもの・大きいもの・小さいものがある。ただ、どんなに小さくても、基本、「複合機能体」。そして、プロパティと階層構造上下自由往来機能を必ず保持・内包している。 14 15(06)「一般的な変数」は主に、「VBA関数」と「演算子」、「ステートメント」などで動かすイメージ(大雑把には。)。 16 17(07)「オブジェクト変数」は主に、「メソッド・プロパティ・イベント・階層構造上下自由往来機能」と「名前付き引数(列挙と定数)」、「ステートメント」などで動かすイメージ(大雑把には。)。 18 19(08)「メソッド・プロパティ・イベント・階層構造上下自由往来機能」はすべて、「オブジェクト」の内側に「内包」されるもの。内包される「命令・機能」という感じのもの。 20 21(09)したがって「オブジェクト変数」は、その中に代入した「オブジェクト」の 内側に内包している命令・機能たちを「引き出して」、ステートメントとともに動かすイメージ。 22 23(10)逆に、「一般データ」を代入した「一般的な変数」は、その外側にある「VBA関数」や「演算子」を使って、同じく、ステートメントとともに動かすイメージ。 24 25(11)ただし、一般データは「一般的な変数」に代入しないと動かすことが困難だけど、オブジェクトは「オブジェクト変数」に代入しなくても「オブジェクト式のまま」で動かせる。というか、「動かせてしまう」。逆に言うと、このことが原因で、初心者が上達できない。 26 27・・・とまあ、こんな感じに理解しています。 28 29 30重要な注意事項としては以下のような感じのようです。 31 32(12)オブジェクトの「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解できないと、またはいいかげんにしてしまうと、必ず挫折する。理由は、それがVBAの学習の「最重要な基礎・スタート地点」の1つとなるため。 33 34(13)オブジェクトには、「階層構造の一覧図」があって、例えばExcelならバージョン2000~2003のヘルプに書いてあります。それと一緒に学習すると、「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解しやすいです。すべてのオブジェクトやコレクションが網羅されているわけではありませんが、初心者にとっては大きな助けとなります。逆に、これが必要ない人は、VBAをちゃんと理解していないという証明になります。 35 36(14)「オブジェクトのオブジェクト変数への代入の方法」を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。 37 38(15)「一般データ(値)やオブジェクトを返す自作関数」の作り方を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。 39 40(16)オブジェクトには、「単一のオブジェクト(通称オブジェクト)」と「コレクションオブジェクト(通称コレクション)」の大きく2種類があります。なお、コレクションは単一のオブジェクトを複数束ねるものですが、束ねているからといって、単一オブジェクトの「上位の階層」にコレクションオブジェクトが位置しているわけではなさそうです。「束ねつつ、コレクションも単一オブジェクトも、同じ階層に存在する」、と仮定して理解してしまったほうが、階層構造一覧図を見ながらオブジェクト式を書きやすくなります。 41実際、あるオブジェクトとオブジェクトのあいだに、コレクションが「1階層」分を占有して存在することはありません。 42 43(17)オブジェクトを「取得する(=1つだけ選択する)」には、「プロパティ」を使う方法、「メソッド」を使う方法、「コレクション」を直接使う方法、VBA関数やNewキーワードやAddメソッドなどで返してもらう方法、等々があります。ExcelやWordの場合は、ほとんどが「プロパティ」を使う方法で、Accessの場合や(Excel・WWordでも)ユーザーフォームを扱う場合は、多分ですが、「コレクション」を直接使う方法、が多いと思います。(自信なし)  どのオブジェクトに対して、どの方法で取得(=選択)するかは、ヘルプの各オブジェクトのページに書いてあります。※VBA関数・New・Addは、別のExcelファイルを動かす場合や、ExcelからWordなどを動かす場合などに使います。 44※「プロパティ」を使う場合、その名前と同じ名前のコレクションオブジェクトが存在するので、また、それが「意味的にとても近いところ」にあるので、混同しないことが大切です。 45 46(18)上位の階層のオブジェクトを調べるには、例えばExcelVBAの場合なら、「Parentプロパティ単一or複数重ね+TypeName関数」の合わせ技やオブジェクトブラウザ+F1ヘルプ、下位の階層のオブジェクトを調べるには「Stop+ローカルウィンドウの合わせ技」やオブジェクトブラウザ+F1ヘルプ、などが調べやすいと思います。 47 48(19)変数の中身が、現在何型でどんな値が入っているかを調べるには、「Stop+ローカルウィンドウ」を必ず使います。特に、Variant型やObject型の変数を使っている時には、いつでも使えるようになっておくことが必須です。 49 50(20)1つのプログラムの中で、「一般的な変数」を動かす処理と、「オブジェクト変数」を動かす処理は、多くの場合、混在します。 51

投稿2019/03/11 07:59

編集2019/03/11 09:06
komugi3333

総合スコア94

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

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

0

初めまして。
最近勉強を始められたということで、これからの学習について方向性が気になり始める時期だと思います。

プログラムは、ある程度勉強した時点で、初心者もプロも同じ命令を使ってプログラムを組むようになります。極稀に珍しい命令を使うこともあるでしょうが、基本的には特定の命令を何度も繰り返し使っていることがわかるかと思います。
これはどの言語でも同じことです。プロだからといって使っているコードや命令に差異はありません。

最初はスマートなアルゴリズムを組みたいと思うかもしれませんが、それは実務においてはさほど重要ではありません。プログラムで自動化できたものは、どんなに不細工なコードであっても人間より早く正確に処理してくれます。
そういったプログラムを使い続けることで、改善点が見つかり、部分的改良を経て、最終的に素晴らしいプログラムになるのだと思います。

そのためには、とにかく部分的にでも処理を完成させることです。
プログラムは小さな目標の積み重ねです。できるだけプロセスを細分化し、小さなプロセスを少しずつ自動化していきましょう。とにかく一つ一つの達成が、自信を与えてくれます。

プログラミングはカンニングが許される仕事です。わからないことがあったら、5分悩んだらすぐに調べてみるというルールを作るのも効果的です。

プロセスを細分化するには、対象に精通しておくことが必要です。料理のレシピを知らなければ、調理を自動化することができないのと同じです。
対象の業務をどのようなプロセスで処理していけば良いか、できるだけ詳しく細分化することで、その処理を達成する実装が容易になりますし、意外なところでつまづいても、どこが問題だったかわかりやすくなります。また、それぞれのプロセスは応用が効きやすくなりますし、意外な手順の変更にも対応しやすくなるでしょう。

もし、仕事でVBAを活かしたいなら、仕事に詳しくなっておくことが大事だと思います。

投稿2021/05/07 12:52

Keiichi623

総合スコア17

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

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

0

手を動かしてコードを書いてみるのが良いと思います
そしてテラテイルなどで修正やアドバイスをもらうのを繰り返すのが最短のような気がします

投稿2019/03/11 08:36

takahashi-

総合スコア56

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

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

退会済みユーザー

退会済みユーザー

2019/03/11 11:04

なぜそう思ったのか・・・ 何が大丈夫なのか・・・ いずれにせよ、回答になってないくだらん書き込みはツイッターででも投稿していてくれ
guest

0

私の10年以上のEXCEL VBA経験者から申し上げますと、きっかけは、手作業では時間が掛かり、間違ったら、再度、手直しをするという時間の無駄を削減する目的で学習しました。

本は、一冊も買っていません。ネット上でググってコピーしこの動きなら使えるというテストを経て仕事に適用しました。

上司から頼まれた、数千行もあるcsvファイルを手作業で、3、4日掛けてデータを作って提出したら間違えと言われ、「カチン」ときまして、仕様を、VBAの中に組み込んだら、なんと30秒で正確なデータを作り終えました。(※こういう事が出来ると、爽快感からまた取り組みたいと思えると同時に、上司に、見せて、驚いた顔を見るのも楽しかったです。)

但し、学習する上で気を付けたのは、記録を残す事でした。記録.xlsmという一覧を作成し、クリックしたら自動的に連番のフォルダを作り、その連番をリンク付けし、そのリンクを押したらフォルダが開くという仕組みです。最初は、記録.xlsxで単なる記録でも良いと思います。

No.   題名  内容           プログラム名    状況   リリース日  
0001   練習  フォルダをVBAで作成する  記録.xlsm     作成中   
0002   練習  loop文の練習         loop.xlsm 済    2019/12/12
0003 NZA分析 ダウンロードしたcsvの解析 NZA.xlsm 作成中

後は、使って頂いた人からのクレーム対応です。
このクレームも記録し、改善、記録、改善と繰り返し学習しました。

VBAもまだ学習し終えたとは、全く思っておりません。

以上です。

投稿2020/02/06 05:26

編集2020/02/06 05:32
hit701

総合スコア148

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問