- 締切済み
Excelマクロ(vba)についての、良い本は
Excelマクロ(vba)の初級者です。 プロではなく、一般の事務職ですが、これまで我流でマクロを作ってきました。 ですが今後のvbaの勉強のために、良い本を探しています。 当方のレベルと、今後求めるレベルを書きに記しますので、おすすめの本を教えて頂ければ幸いです。 当方のレベル:一応、業務上使用に耐えるツールは作成可能なレベル ・マクロの変数、条件分岐や繰り返しの記述を理解して使っている ・配列変数や別のスクリプトを呼び出すなどはよく判らなかったり器用にできない ・変数を宣言せずに使っている ・デバッグの効果的な進め方がわからない ・一般的、常識的なvbaの書き方がわからないので、人に教えたりはできない 今後できるようになりたいこと: ・人に教えたり、自分が作成したマクロを他人にも判りやすく説明するために、一般的、常識的なマクロの記述方法を知りたい ・デバッグを効率的に進めたい ・その他、マクロ作成に役立つツールの使い方や方法論などを身に着けたい 以上です。 宜しくお願いします。
- みんなの回答 (12)
- 専門家の回答
みんなの回答
- chayamati
- ベストアンサー率41% (260/624)
一般の事務職ですが、これまで我流でマクロを作ってきました。 ですが今後のvbaの勉強のために、良い本を探しています。 ★出鼻を挫くようですが、Excelには豊富な関数が用意されていますが なぜかVBAは色々不具合があるようでお勧めできませんが 関数は豊富です。 Excelでの開発は関数とマクロにとどめる。 書籍はページ数のより少ないものにし、全体を把握する 詳しく知りたいときはOKWAVEを含めてWeb検索 VBAがお望みならVBまたはAccessVBAをお勧めします。 >当方のレベル ・一応、業務上使用に耐えるツールは作成可能なレベル ★??? ・条件分岐や繰り返しの記述を理解して使っている ★分岐を避けるためサブルーチン化する ・変数を宣言せずに使っている ★変数を使うには「変数の宣言を強制する」添付参照 ・配列変数や別のスクリプトを呼び出すなどはよく判らなかったり 器用にできない ★スクリプトはサブルーチンっと同義ですね ★配列は必ず DIM A(5,10) のように宣言 ・デバッグの効果的な進め方がわからない ・一般的、常識的なvbaの書き方がわからないので、人に教えたりはできない 今後できるようになりたいこと: ・人に教えたり、自分が作成したマクロを他人にも 判りやすく説明するために、一般的、常識的なマクロの記述方法を知りたい ★自分のパターンを見つける、一つのルーチンを複数のサブルーチンにする ・デバッグを効率的に進めたい ★命令文の左端をクリックし●を表示するかStop命令を入れ 実行するとこの場所で止まり、命令文が表示され F8キーで一つづつ進む、 カーソルを命令文の変数へ移動すると変数の値が表示される ・その他、マクロ作成に役立つツールの使い方や方法論などを身に着けたい 補足:データ入力を複数人がするsheetは データ入力のセルの書式設定でロックを外しSheet保護をかける
- kkkkkm
- ベストアンサー率66% (1719/2589)
VB推奨さんと議論したいわけではないのですが…推奨しない人間もいるということで(笑) > 場合によってはVisual Studioで追いかけた方がわかりやすい場合もある。 具体的のどのような場合なのか教えてあげた方が質問者さんのためになると思いますし(デバッグは気にしてるようですので)、使い勝手が良ければVisual Studioを利用する利点にもなると思いますが。 どちらにしても、VBを導入するかどうかは質問者さんの判断でしょうし、これ以上あれこれ言う気はありません。お疲れさまでした。
- unokwave
- ベストアンサー率58% (966/1654)
非難する意図がないなら私の二回目の回答に反論する必要もなければVBEによるデバッグについての回答を要求する事もないでしょう。 業務上使用に耐えるレベルと言ってもピンきりですよ。 使用条件を厳密に規定して想定外や融通性を考慮していない業務用マクロが会社ではたくさん見られますが、それだって業務上使用に耐えるレベルです。 でもプログラミングレベルとして見ると未熟な物が珍しくありません。 基本がわかっていると言えるのは、オブジェクトの説明を読んで把握し使えるレベルで、それはここでこのような質問をするレベルではありません。
- kkkkkm
- ベストアンサー率66% (1719/2589)
基本の勉強にVBを薦めているという人がいますが 質問者さんは 業務上使用に耐えるツールは作成可能なレベル だということを忘れているようです。基本はマスターしていると考えるべきでしょう。 ちなみにVBの推奨を非難しているわけではなく、VBの勉強をするというのは間違ってる(意味が殆どない)と思いますよと質問者さんに助言しているのです。 高い本を買って意味なかったよぉとなるのは気の毒だと思いますので。
- unokwave
- ベストアンサー率58% (966/1654)
VBEではエラー情報が曖昧だから基本を理解するのが難しい面がある。 だから基本の勉強にVBを薦めている。 VBAのデバッグにはVBEを使うしかないが、場合によってはVisual Studioで追いかけた方がわかりやすい場合もある。 それはエラー時のデバッグ機能の差のせいで。 そもそもVBEでの効率的デバッグなんてVBEのデバッグ機能が貧弱なせいで工夫の余地も僅かしかない。 ステップ実行、(デバッグ専用変数を設けて)変数の内容次第でstopを実行する一行条件分岐、ctrl+breakによる中断、サブルーチン化や関数化で小さな単位にまとめコードの信頼性を上げ再利用性を高める、定型化した書き方をする、こんなところでしょう。 指摘するなら導入部の敷居が高いといったところであって、ツッコミどころを間違えている。 それと間違ったやり方や迷惑行為やここのルールに反するならともかく、物の見方次第な点を自分の主観で非難するようなここのルールに反する主張をいい加減やめてください。
- imogasi
- ベストアンサー率27% (4737/17069)
極く初歩的な段階ではないのだから、本よりも、「WEBのVBAの記事を検索する」、が中心になると思います。疑問点が先の先の細かい点になり、市販のVBAの本で記述箇所を探すのも大変です。多分載っていない。それをやるなら、多分30冊ものVBAの本をそろえておかないと、ならないので、そういうことは、やらないでしょう。また百科事典的な本は、価格が4000円を超えて、商業的には、出版を躊躇してしまうでしょう。 有名サイトは (1)田中亨先生のサイト (2)MOUGのサイト (3)インストラクターのネタ帳 (4)エクセルの神髄 (5)https://sugoikaizen.com/excel_list/のような網羅的なVBA関連記事 結構多数あります。 ーー 大村あつし、さんの本を読むのも良いかも。今までの学習の反省(より深める) になると思う。 ーー 質問者にとって、これからは、 (1)オフィス内での他ソフトとの連携 (2)FSO Regexp Dictionary (3)SQL (4)WEBブラウザとの連携 (5)コントロールやイベント (6)ウインドウ(画面) (7)オブジェクトなどの仕組み 等に、必要性がむかうのでは。 私は当初Basic時代からの癖で、変数定義をあまり重く見ていませんが、企業では、変数名の付け方にルールを設けて、守るのに大変だった記憶があります。 デバッグはスクリプト(=VBA)の場合、止まったコードの行を指定してくれるし、ポインター的な考えも出てこないので、短いモジュールならあまり苦労しない。アッセンブラーの時代は大変だったが。 処理データとの絡みで、データ項目相互の関係で、エラーが起こているらしい場合は、定型的な処理ツールはなく、経験を積むしかないように思っている。 ーー 参考に https://career.levtech.jp/guide/knowhow/article/500/ ーー 「エクセル馬鹿」(エクセルしか知らない、何でもエクセル)にならないように、自戒したほうが良いと思う。 特にAIで話題になっている分野など、エクセルVBAは「掠ってもいない」のでは。(もちろん、エクセルでAI的な本も出ていますが) Googleなどのスクリプトの動向(はやるのか、機能的にエクセルを超えるのか)も気になる。
- kkkkkm
- ベストアンサー率66% (1719/2589)
VBとVBAの差を理解したほうがいいという意見もありますが、VBとVBAは違うものだという認識さえあれば、マクロを人に教えたり自作のマクロを説明することにたいしてVBを勉強することになんの意味があるのかと思えます。 エクセルのVBEではデバッグ環境が貧弱という意見もありましたが、VBAでエラーが出た場合どこでデバッグすればいいのでしょう。質問にも「デバッグを効率よく進めたい」とありますので、VBをすすめる方は教えてあげてください。
- unokwave
- ベストアンサー率58% (966/1654)
VBとVBAの差を理解できずにいて、「なぜそうなのか」「人に教える時の理由説明」能力は身につきませんよ。
- kkkkkm
- ベストアンサー率66% (1719/2589)
VBを勉強することを進めている方がいますが、やめた方がいいと思いますよ。 VBAでできないことを学習しても実際にエクセルで使えませんし同じプロパティでも書き方が違うこともあり混乱するだけだと思います。 たとえば VB TextBox1.BackColor = Color.Blue VBA TextBox1.BackColor = vbBlue
- unokwave
- ベストアンサー率58% (966/1654)
VB(Visual Basic)の本を買ってみることをお勧めします。 VB自体は個人が自宅で学習のために使う分には無償で利用できますし、本格的な開発ツールを使えば、何故そうなのかを理解するのに必要な情報が沢山あります。 その情報を理解するのが難しい場面も出てくるでしょうが、VBA(Visual Basic for Applications)のデバッグツールであるVBEではエラーに関する情報が曖昧でデバッグ環境が貧弱なので、却って学習が難しい面が多々あります。 それとVBを使いこなせば、Excelの機能を拡張することも可能になります。 VBAはVBの機能制約版ですからVBで学んだ事をそのままVBAに持ち込めない事もありますが、貴方が挙げている目標からすれば適っていると思えます。 https://docs.microsoft.com/ja-jp/dotnet/visual-basic/
- 1
- 2