• 締切済み

Excelマクロ(vba)についての、良い本は

Excelマクロ(vba)の初級者です。 プロではなく、一般の事務職ですが、これまで我流でマクロを作ってきました。 ですが今後のvbaの勉強のために、良い本を探しています。 当方のレベルと、今後求めるレベルを書きに記しますので、おすすめの本を教えて頂ければ幸いです。 当方のレベル:一応、業務上使用に耐えるツールは作成可能なレベル ・マクロの変数、条件分岐や繰り返しの記述を理解して使っている ・配列変数や別のスクリプトを呼び出すなどはよく判らなかったり器用にできない ・変数を宣言せずに使っている ・デバッグの効果的な進め方がわからない ・一般的、常識的なvbaの書き方がわからないので、人に教えたりはできない 今後できるようになりたいこと: ・人に教えたり、自分が作成したマクロを他人にも判りやすく説明するために、一般的、常識的なマクロの記述方法を知りたい ・デバッグを効率的に進めたい ・その他、マクロ作成に役立つツールの使い方や方法論などを身に着けたい 以上です。 宜しくお願いします。

みんなの回答

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.12

一般の事務職ですが、これまで我流でマクロを作ってきました。 ですが今後のvbaの勉強のために、良い本を探しています。 ★出鼻を挫くようですが、Excelには豊富な関数が用意されていますが  なぜかVBAは色々不具合があるようでお勧めできませんが  関数は豊富です。  Excelでの開発は関数とマクロにとどめる。  書籍はページ数のより少ないものにし、全体を把握する  詳しく知りたいときはOKWAVEを含めてWeb検索  VBAがお望みならVBまたはAccessVBAをお勧めします。   >当方のレベル ・一応、業務上使用に耐えるツールは作成可能なレベル ★??? ・条件分岐や繰り返しの記述を理解して使っている ★分岐を避けるためサブルーチン化する ・変数を宣言せずに使っている ★変数を使うには「変数の宣言を強制する」添付参照   ・配列変数や別のスクリプトを呼び出すなどはよく判らなかったり  器用にできない ★スクリプトはサブルーチンっと同義ですね ★配列は必ず DIM A(5,10) のように宣言 ・デバッグの効果的な進め方がわからない ・一般的、常識的なvbaの書き方がわからないので、人に教えたりはできない 今後できるようになりたいこと: ・人に教えたり、自分が作成したマクロを他人にも  判りやすく説明するために、一般的、常識的なマクロの記述方法を知りたい ★自分のパターンを見つける、一つのルーチンを複数のサブルーチンにする ・デバッグを効率的に進めたい ★命令文の左端をクリックし●を表示するかStop命令を入れ  実行するとこの場所で止まり、命令文が表示され  F8キーで一つづつ進む、  カーソルを命令文の変数へ移動すると変数の値が表示される ・その他、マクロ作成に役立つツールの使い方や方法論などを身に着けたい 補足:データ入力を複数人がするsheetは  データ入力のセルの書式設定でロックを外しSheet保護をかける  

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.11

VB推奨さんと議論したいわけではないのですが…推奨しない人間もいるということで(笑) > 場合によってはVisual Studioで追いかけた方がわかりやすい場合もある。 具体的のどのような場合なのか教えてあげた方が質問者さんのためになると思いますし(デバッグは気にしてるようですので)、使い勝手が良ければVisual Studioを利用する利点にもなると思いますが。 どちらにしても、VBを導入するかどうかは質問者さんの判断でしょうし、これ以上あれこれ言う気はありません。お疲れさまでした。

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.10

非難する意図がないなら私の二回目の回答に反論する必要もなければVBEによるデバッグについての回答を要求する事もないでしょう。 業務上使用に耐えるレベルと言ってもピンきりですよ。 使用条件を厳密に規定して想定外や融通性を考慮していない業務用マクロが会社ではたくさん見られますが、それだって業務上使用に耐えるレベルです。 でもプログラミングレベルとして見ると未熟な物が珍しくありません。 基本がわかっていると言えるのは、オブジェクトの説明を読んで把握し使えるレベルで、それはここでこのような質問をするレベルではありません。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.9

基本の勉強にVBを薦めているという人がいますが 質問者さんは 業務上使用に耐えるツールは作成可能なレベル だということを忘れているようです。基本はマスターしていると考えるべきでしょう。 ちなみにVBの推奨を非難しているわけではなく、VBの勉強をするというのは間違ってる(意味が殆どない)と思いますよと質問者さんに助言しているのです。 高い本を買って意味なかったよぉとなるのは気の毒だと思いますので。

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.8

VBEではエラー情報が曖昧だから基本を理解するのが難しい面がある。 だから基本の勉強にVBを薦めている。 VBAのデバッグにはVBEを使うしかないが、場合によってはVisual Studioで追いかけた方がわかりやすい場合もある。 それはエラー時のデバッグ機能の差のせいで。 そもそもVBEでの効率的デバッグなんてVBEのデバッグ機能が貧弱なせいで工夫の余地も僅かしかない。 ステップ実行、(デバッグ専用変数を設けて)変数の内容次第でstopを実行する一行条件分岐、ctrl+breakによる中断、サブルーチン化や関数化で小さな単位にまとめコードの信頼性を上げ再利用性を高める、定型化した書き方をする、こんなところでしょう。 指摘するなら導入部の敷居が高いといったところであって、ツッコミどころを間違えている。 それと間違ったやり方や迷惑行為やここのルールに反するならともかく、物の見方次第な点を自分の主観で非難するようなここのルールに反する主張をいい加減やめてください。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

極く初歩的な段階ではないのだから、本よりも、「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
  • ベストアンサー率65% (1606/2443)
回答No.6

VBとVBAの差を理解したほうがいいという意見もありますが、VBとVBAは違うものだという認識さえあれば、マクロを人に教えたり自作のマクロを説明することにたいしてVBを勉強することになんの意味があるのかと思えます。 エクセルのVBEではデバッグ環境が貧弱という意見もありましたが、VBAでエラーが出た場合どこでデバッグすればいいのでしょう。質問にも「デバッグを効率よく進めたい」とありますので、VBをすすめる方は教えてあげてください。

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.5

VBとVBAの差を理解できずにいて、「なぜそうなのか」「人に教える時の理由説明」能力は身につきませんよ。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.4

VBを勉強することを進めている方がいますが、やめた方がいいと思いますよ。 VBAでできないことを学習しても実際にエクセルで使えませんし同じプロパティでも書き方が違うこともあり混乱するだけだと思います。 たとえば VB TextBox1.BackColor = Color.Blue VBA TextBox1.BackColor = vbBlue

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.3

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/

関連するQ&A

  • エクセルマクロ(VBA)の変数について教えてください。

     仕事でエクセルを利用してファイルを作ることが多いのですが、関数とマクロに課題のある者です。  マクロはそんなに高度で複雑なものが現状、必要でないので記録マクロで事足りていますが、私のやり方は  1.手順を記録  2.マクロの実行  3.ステップイン機能でステートメントの動作を見る  4.無駄な構文を削除  5.エラー(デバッグ警告表示)修正  6.日々替わる取り扱いファイル、シート名をそこだけ置き換えて汎用性を持たせている。  7.さらに動作を加えたい時は新しいマクロ記録で構文を記録し、ベースマクロに構文を追加している  8.日々更新変動されるファイルは情報量の余裕をみて、ファイルが想定を超えないように作っている。  9.記述式マクロ(VBA)が十分出来るスキルが乏しい  と言うのが私のレベルですが、参考書、テキストを読んでいると必ず、『変数』Dimスペルというものが出てきます。この意味がもう一つよく分からないので、ツール→オプションのダイヤログボックス編集で『変数の宣言を強制をする』を外しています。  変数は実行の都度変わる値を扱ったり、代入すると言うことは何となく分かるのですが、完全に理解できてないので、(記述が分かりにくい)そこから前に進めません。  サンプル例はありますが、詳しく解説しているものが少ないです。『何故、こうなるか?』というのが抽象的な説明です。  『変数宣言を強制』にチェックを入れた場合、今まで、チェック無しで作ったマクロファイルは動作しませんか?  たまに自動メンバー表示機能から構文を挿入しますが、個々のプロパティやメソッド、コレクションなど記述構文は英語ですが、これを日本語に置き換えて理解できるようにしたいのですが、皆さんはどのようにされたのですか?  

  • エクセル2002のマクロ

    エクセル2002のマクロについて教えてください。 マクロを記録すると便利なことはわかったのですが、実践例として「会社」「学校」「その他」などの場でちょっと簡単なマクロを記録してこんなに便利に使えます・・・とパソコンの初級、中級者に説明をしたいんです。 実践例などで、こんなことに使っていますというのがあれば何でもいいので教えてください。 難しいマクロを組む、記述するというのではなく、できれば初級の人でも「ツール」「マクロ」から記録してすぐに使えそうなのがあれば一番うれしいです。どんなことでもいいので教えてください。

  • excellのマクロ

    VBAというのですか。excellのマクロを2ケ月ほどでマスターしたい。 初級,中級のお奨めサイトは なお当方,プログラムの一般的知識はあります。

  • VBAエクセル2003でのマクロの実行について

    VBAで2003を使っています。 マクロの実行をショートカットキーで操作したいのですが ツール→マクロ→オプションでショートカットキーの作成が可能ですが 会社(エクセル2003)のでやろうとすると オプションの表示がありません。 (もしかしたら2003ではないのかもしれませんが、確認した範囲では 2003かと思われます。2010とかいいのではないのは確かです。) ショートカットキーを作る方法でどのような方法が 他にありますか?教えてください。 お願いいたします。

  • EXCEL VBAマクロ中断でデバッグ(コード閲覧)できないようにしたい

    EXCEL VBAで、ツール開発をしております。 エラー処理等、組み込んではおりますが、想定外のエラーが起きたときに、ご存知のとおりエラーメッセージウインド([継続] [終了] [デバッグ] [ヘルプ]ボタンが表示されるウインド)が出ます。 これを、出さないようにするか、あるいは[デバッグ]ボタンのみを非表示(グレーアウト可)させたいのです。 理由は、VBAコードを見られないようにマクロにパスワードをかけているのですが、エラーが出て[デバッグ]ボタンを押すと、パスワードを無視して簡単にVBAコードにアクセスできてしまい、すべてのコードが参照可能になってしまいます。 これを防ぎたいのです。 何か良い方法はございますでしょうか? お知恵をお貸しください。よろしくお願いします。

  • VBA 問題集のような本はありますか?

    excel2010を使っています。 FOM出版のマクロVBAを買いマクロを覚えました。 練習問題や総合問題を何回も解き、解くうちに正解率が増し、自信をつけていました。 先日、図書館で新たにVBAのテキストを借り、載っていた練習問題を解くと、簡単なマクロ作成でもつまずきました。 自分は、ただコード記述を暗記していたかから解けたのであり、自分の力で組み立てたわけではないと気づきました。 図書館で借りたテキストは、載っていた練習問題は3つほどです。 より多くの問題に触れたいです。 良い練習問題が載っているテキストがあれば、教えてください。 私は、コードの意味は理解しています。ただ、応用が不慣れです。 「こんな感じにしたい」と頭では思っていても、いざコードを書きだすと、明後日の変数を宣言したり(もしくは不要だったり)。 select case が相応しいのに、ifを作って1つ1つ条件を作って閉めてを繰り返し、ややこしくしたり(最終的に、結果は同じになるんですけどね(^_^;))。 Okwebで、マクロ記述の質問に、答えていらっしゃる方のコード記述法を盗んだり(笑)してますが…。 私は、実践あるのみ!と思っていますが、その覚え方も明後日の方向ですか?

  • VBAマクロ自体を変更したい

    ExcelのVBAマクロ(標準モジュールのModule1)にExcelファイルを保存するマクロを記述しています。 その中で、保存する際のファイル名の命名規則を変更する必要が出てきました。 しかしながら、対象のファイルは多数あり、一つ一つ修正していくと、 間違いが起こる可能性があります。時間もかかります。 そこで、 できるだけ簡単に間違いなくVBAを修正したいと考えています。 何か手段はあるでしょうか? 使用するツールは、バッチファイルなどWindows標準、Office周りを考えています。 VisualStudioなどは当方にライセンスがないため、使用できませんが、 このような考え方でできる!という情報もお待ちしています。 よろしくお願いいたします。

  • ワード エクセルを学べるわかりやすい本

    ワード、エクセルを学べるわかりやすい、おすすめの本を教えてください。本屋をみてもたくさんありすぎてどれがいいのかわかりません。 最近インターネットが使えるようになったくらいのビギナレベルです。 特にエクセルは難しそうです。関数とかマクロVBAとか?難しそうです。できましたら初級から上級まで何冊かおすすめの本を教えてほしいです。次のOSがでるまでに覚えたいんです。 よろしくお願いします。

  • エクセルとVBAの関係記述言語

    エクセルとVBAの関係について教えて下さい。マクロを組むとその行程がVBAで記述されるということは知っています。ですがマクロ=VBAなのでしょうか?そもそもこれはマイクロソフトの企業秘密かもしれませんが、エクセルを作成した記述言語は何なのでしょう?VBAでない事は確からしいので、VBAはエクセル本体とマクロというプログラミングの仲立ちの様なものでしょうか。

  • エクセル VBA 

    エクセル VBA  Sheet上にコマンドボタンをクリックさせたら 電卓表示させるにはどのように記述をしたら良いですか? (1)勿論、VBAで電卓作成したいのですが…何か良いサイトはありますか?それか  作り方を教えて欲しいです。 (2)ツール⇒すべてのプログラム⇒アクセサリ⇒電卓  で表示できますよね!それをコマンドボタンクリックで  表示させるには、どのように記述したら良いですか?   すいません教えてください!

専門家に質問してみよう