回答編集履歴

12 ミス修正

komugi3333

komugi3333 score 69

2019/03/11 18:06  投稿

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

komugi3333

komugi3333 score 69

2019/03/11 18:05  投稿

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

komugi3333

komugi3333 score 69

2019/03/11 18:04  投稿

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

komugi3333

komugi3333 score 69

2019/03/11 17:49  投稿

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

komugi3333

komugi3333 score 69

2019/03/11 17:38  投稿

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

komugi3333

komugi3333 score 69

2019/03/11 17:32  投稿

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

komugi3333

komugi3333 score 69

2019/03/11 17:28  投稿

一応、ExcelでのVBAの学習だと仮定して、今読んでみえる本の次に、以下の2冊をお勧めします。
(ExcelVBA以外の、WordやAccessのVBAの学習にもとても役立ちます。)
(A)スラスラ読める Excel VBA ふりがなプログラミング
  (ふりがなプログラミングシリーズ)
  リブロワークス  (著)
(B)いちばんやさしいExcelVBAの教本
  人気講師が教える実務に役立つマクロの始め方
   (「いちばんやさしい教本」シリーズ)
   伊藤潔人 (著)
この本の一語一句でもわからないところがあって、実際にこの2冊のとおりにExcelでサンプルを作って・動かすことができないなら、この先、VBAをしっかりと理解できなくなる可能性が高いと思いますので、是非一度本屋さんで立ち読みでもしてみてください。(サンプルはもちろんダウンロードもできます。)
他の本を読みながらでもいいので、この2冊だけは、もしできることなら、ご購入をお勧めします。
理由は、以降に挙げた(01)~(19)に当てはまるように書かれていて、長い目で見ると、挫折しにくかったり、一度や二度・挫折しても再度読み直すと復活しやすい本だからです。
理由は、以降に挙げた(01)~(20)に当てはまるように書かれていて、長い目で見ると、挫折しにくかったり、一度や二度・挫折しても再度読み直すと復活しやすい本だからです。
以降に挙げた(01)~(19)は、半分は、上記の2冊から学んだことです。
以降に挙げた(01)~(20)は、半分は、上記の2冊から学んだことです。
(私も初心者なので間違いがあるかもしれませんが。もしそうだったらスミマセン!)
僕自身、グラフも動かせないような初心者なのですが、ご紹介した2冊を読んだおかげで、ある地点から、自分で言うのもなんですが、飛躍的にExcelVBAを理解できるようになりました。
(ヘルプやオブジェクトブラウザを使えるようになり、人やWebに聞かなくても自力でエラーを解決できる件数が増えてきました。)
なお、以下のような流れを意識して書かれている「初心者本」は、ご紹介した2冊以外、どんなレジェンドさんの本を探しても、多分、無いのではないかと思っています。
2冊の本の不明点、と、以下の(01)~(19)の不明点を、一語一句、すべて、分かる人や先輩などに、わかるまで何回でも聞けば、恐らくですが、高い確率で上達すると思います。
2冊の本の不明点、と、以下の(01)~(20)の不明点を、一語一句、すべて、分かる人や先輩などに、わかるまで何回でも聞けば、恐らくですが、高い確率で上達すると思います。
他の初心者本なら、分からなかったらスルーしてもいいですが、この2冊は、スルーしないほうが良いと思います。一度や二度、挫折してもいいので、必ず「わかるまで」誰かに教えてもらってください。
頑張ってください!!
```VBA
(01)プログラミングとは、どんな言語であっても、基本、『「変数」というものを動かすことで「自動化」を実現する 』、そういう作業。
(02)基本、「変数」に「生データ」を代入することで、「変数」を動かせるようになる。
(03)そして、VBAの場合、「変数」には大きくは 2つある。というか、2つしかない。それは、「一般的な変数」と「オブジェクト変数」の2つ。
(04)「一般的な変数」に代入する生データは「一般データ( ≒ リテラル値 )」。具体的には「数値、文字列、日付、True/False」などの「文字ベース」のデータ。
(05)「オブジェクト変数」に代入する、生データに相当するものは「オブジェクト式」(=オブジェクト)。
(09)ちなみに「オブジェクト」は「ユニット、ツール、ロボット」といった雰囲気の、何らかの動作・仕事をする「部品」めいたもの。基本、「複合機能体」。(後述の「プロパティ」と「階層構造上下自由往来機能」は、どのオブジェクトも必ず保持・内包しています。メソッドやイベントは持たないモノがあります。)
(10)「オブジェクト」には、画面上に「絵」として見えるもの・裏方で動く目に見えないもの・大きいもの・小さいものがある。ただ、どんなに小さくても、基本、「複合機能体」。そして、プロパティと階層構造上下自由往来機能を必ず保持・内包している。
(06)「一般的な変数」は主に、「VBA関数」と「演算子」、「ステートメント」などで動かすイメージ(大雑把には。)。
(07)「オブジェクト変数」は主に、「メソッド・プロパティ・イベント・階層構造上下自由往来機能」と「名前付き引数(列挙と定数)」、「ステートメント」などで動かすイメージ(大雑把には。)。
(08)「メソッド・プロパティ・イベント・階層構造上下自由往来機能」はすべて、「オブジェクト」の内側に「内包」されるもの。内包される「命令・機能」という感じのもの。
(09)したがって「オブジェクト変数」は、その中に代入した「オブジェクト」の 内側に内包している命令・機能たちを「引き出して」、ステートメントとともに動かすイメージ。
(10)逆に、「一般データ」を代入した「一般的な変数」は、その外側にある「VBA関数」や「演算子」を使って、同じく、ステートメントとともに動かすイメージ。
(11)ただし、一般データは「一般的な変数」に代入しないと動かすことが困難だけど、オブジェクトは「オブジェクト変数」に代入しなくても「オブジェクト式のまま」で動かせる。というか、「動かせてしまう」。逆に言うと、このことが原因で、初心者が上達できない。
・・・とまあ、こんな感じに理解しています。
重要な注意事項としては以下のような感じのようです。
(12)オブジェクトの「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解できないと、またはいいかげんにしてしまうと、必ず挫折する。理由は、それがVBAの学習の「最重要な基礎・スタート地点」の1つとなるため。
(13)オブジェクトには、「階層構造の一覧図」があって、例えばExcelならバージョン2000~2003のヘルプに書いてあります。それと一緒に学習すると、「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解しやすいです。すべてのオブジェクトやコレクションが網羅されているわけではありませんが、初心者にとっては大きな助けとなります。逆に、これが必要ない人は、VBAをちゃんと理解していないという証明になります。
(14)「オブジェクトのオブジェクト変数への代入の方法」を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(15)「一般データ(値)やオブジェクトを返す自作関数」の作り方を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(16)オブジェクトには、「単一のオブジェクト(通称オブジェクト)」と「コレクションオブジェクト(通称コレクション)」の大きく2種類があります。なお、コレクションは単一のオブジェクトを複数束ねるものですが、束ねているからといって、単一オブジェクトの「上位の階層」にコレクションオブジェクトが位置しているわけではなさそうです。「束ねつつ、コレクションも単一オブジェクトも、同じ階層に存在する」、と仮定して理解してしまったほうが、階層構造一覧図を見ながらオブジェクト式を書きやすくなります。
実際、あるオブジェクトとオブジェクトのあいだに、コレクションが「1階層」分を占有して存在することはありません。
(17)オブジェクトを「取得する(=1つだけ選択する)」には、「プロパティ」を使う方法、「メソッド」を使う方法、「コレクション」を直接使う方法、VBA関数で返してもらう方法、などがあります。ExcelやWordの場合は、ほとんどが「プロパティ」を使う方法で、Accessの場合や(Excel・WWordでも)ユーザーフォームを扱う場合は、多分ですが、「コレクション」を直接使う方法、が多いと思います。(自信なし)
(18)上位の階層のオブジェクトを調べるには、例えばExcelVBAの場合なら、「Parentプロパティ+TypeName関数」の合わせ技やオブジェクトブラウザ+F1ヘルプ、下位の階層のオブジェクトを調べるには「Stop+ローカルウィンドウの合わせ技」やオブジェクトブラウザ+F1ヘルプ、などが調べやすいと思います。
(19)変数の中身が、現在何型でどんな値が入っているかを調べるには、「Stop+ローカルウィンドウ」を必ず使います。特に、Variant型やObject型の変数を使っている時は、いつでも使えるようになっておくことが必須です。
(19)変数の中身が、現在何型でどんな値が入っているかを調べるには、「Stop+ローカルウィンドウ」を必ず使います。特に、Variant型やObject型の変数を使っている時には、いつでも使えるようになっておくことが必須です。
(20)1つのプログラムの中で、「一般的な変数」を動かす処理と、「オブジェクト変数」を動かす処理は、多くの場合、混在します。
```
5 追記

komugi3333

komugi3333 score 69

2019/03/11 17:23  投稿

今読んでみえる本の次に、以下の2冊をお勧めします。
一応、ExcelでのVBAの学習だと仮定して、今読んでみえる本の次に、以下の2冊をお勧めします。
(ExcelVBA以外の、WordやAccessのVBAの学習にもとても役立ちます。)
(A)スラスラ読める Excel VBA ふりがなプログラミング
  (ふりがなプログラミングシリーズ)
  リブロワークス  (著)
(B)いちばんやさしいExcelVBAの教本
  人気講師が教える実務に役立つマクロの始め方
   (「いちばんやさしい教本」シリーズ)
   伊藤潔人 (著)
この本の一語一句でもわからないところがあって、実際にこの2冊のとおりにExcelでサンプルを作って・動かすことができないなら、この先、VBAをしっかりと理解できなくなる可能性が高いと思いますので、是非一度本屋さんで立ち読みでもしてみてください。(サンプルはもちろんダウンロードもできます。)
他の本を読みながらでもいいので、この2冊だけは、もしできることなら、ご購入をお勧めします。
理由は、以降に挙げた(01)~(19)に当てはまるように書かれていて、長い目で見ると、挫折しにくかったり、一度や二度・挫折しても再度読み直すと復活しやすい本だからです。
以降に挙げた(01)~(19)は、半分は、上記の2冊から学んだことです。
(私も初心者なので間違いがあるかもしれませんが。もしそうだったらスミマセン!)
僕自身、グラフも動かせないような初心者なのですが、ご紹介した2冊を読んだおかげで、ある地点から、自分で言うのもなんですが、飛躍的にExcelVBAを理解できるようになりました。
(ヘルプやオブジェクトブラウザを使えるようになり、人やWebに聞かなくても自力でエラーを解決できる件数が増えてきました。)
なお、以下のような流れを意識して書かれている「初心者本」は、ご紹介した2冊以外、どんなレジェンドさんの本を探しても、多分、無いのではないかと思っています。
2冊の本の不明点、と、以下の(01)~(19)の不明点を、一語一句、すべて、分かる人や先輩などに、わかるまで何回でも聞けば、恐らくですが、高い確率で上達すると思います。
他の初心者本なら、分からなかったらスルーしてもいいですが、この2冊は、スルーしないほうが良いと思います。一度や二度、挫折してもいいので、必ず「わかるまで」誰かに教えてもらってください。
頑張ってください!!
```VBA
(01)プログラミングとは、どんな言語であっても、基本、『「変数」というものを動かすことで「自動化」を実現する 』、そういう作業。
(02)基本、「変数」に「生データ」を代入することで、「変数」を動かせるようになる。
(03)そして、VBAの場合、「変数」には大きくは 2つある。というか、2つしかない。それは、「一般的な変数」と「オブジェクト変数」の2つ。
(04)「一般的な変数」に代入する生データは「一般データ( ≒ リテラル値 )」。具体的には「数値、文字列、日付、True/False」などの「文字ベース」のデータ。
(05)「オブジェクト変数」に代入する、生データに相当するものは「オブジェクト式」(=オブジェクト)。
(09)ちなみに「オブジェクト」は「ユニット、ツール、ロボット」といった雰囲気の、何らかの動作・仕事をする「部品」めいたもの。基本、「複合機能体」。(後述の「プロパティ」と「階層構造上下自由往来機能」は、どのオブジェクトも必ず保持・内包しています。メソッドやイベントは持たないモノがあります。)
(10)「オブジェクト」には、画面上に「絵」として見えるもの・裏方で動く目に見えないもの・大きいもの・小さいものがある。ただ、どんなに小さくても、基本、「複合機能体」。そして、プロパティと階層構造上下自由往来機能を必ず保持・内包している。
(06)「一般的な変数」は主に、「VBA関数」と「演算子」、「ステートメント」などで動かすイメージ(大雑把には。)。
(07)「オブジェクト変数」は主に、「メソッド・プロパティ・イベント・階層構造上下自由往来機能」と「名前付き引数(列挙と定数)」、「ステートメント」などで動かすイメージ(大雑把には。)。
(08)「メソッド・プロパティ・イベント・階層構造上下自由往来機能」はすべて、「オブジェクト」の内側に「内包」されるもの。内包される「命令・機能」という感じのもの。
(09)したがって「オブジェクト変数」は、その中に代入した「オブジェクト」の 内側に内包している命令・機能たちを「引き出して」、ステートメントとともに動かすイメージ。
(10)逆に、「一般データ」を代入した「一般的な変数」は、その外側にある「VBA関数」や「演算子」を使って、同じく、ステートメントとともに動かすイメージ。
(11)ただし、一般データは「一般的な変数」に代入しないと動かすことが困難だけど、オブジェクトは「オブジェクト変数」に代入しなくても「オブジェクト式のまま」で動かせる。というか、「動かせてしまう」。逆に言うと、このことが原因で、初心者が上達できない。
・・・とまあ、こんな感じに理解しています。
重要な注意事項としては以下のような感じのようです。
(12)オブジェクトの「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解できないと、またはいいかげんにしてしまうと、必ず挫折する。理由は、それがVBAの学習の「最重要な基礎・スタート地点」の1つとなるため。
(13)オブジェクトには、「階層構造の一覧図」があって、例えばExcelならバージョン2000~2003のヘルプに書いてあります。それと一緒に学習すると、「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解しやすいです。すべてのオブジェクトやコレクションが網羅されているわけではありませんが、初心者にとっては大きな助けとなります。逆に、これが必要ない人は、VBAをちゃんと理解していないという証明になります。
(14)「オブジェクトのオブジェクト変数への代入の方法」を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(15)「一般データ(値)やオブジェクトを返す自作関数」の作り方を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(16)オブジェクトには、「単一のオブジェクト(通称オブジェクト)」と「コレクションオブジェクト(通称コレクション)」の大きく2種類があります。なお、コレクションは単一のオブジェクトを複数束ねるものですが、束ねているからといって、単一オブジェクトの「上位の階層」にコレクションオブジェクトが位置しているわけではなさそうです。「束ねつつ、コレクションも単一オブジェクトも、同じ階層に存在する」、と仮定して理解してしまったほうが、階層構造一覧図を見ながらオブジェクト式を書きやすくなります。
実際、あるオブジェクトとオブジェクトのあいだに、コレクションが「1階層」分を占有して存在することはありません。
(17)オブジェクトを「取得する(=1つだけ選択する)」には、「プロパティ」を使う方法、「メソッド」を使う方法、「コレクション」を直接使う方法、VBA関数で返してもらう方法、などがあります。ExcelやWordの場合は、ほとんどが「プロパティ」を使う方法で、Accessの場合や(Excel・WWordでも)ユーザーフォームを扱う場合は、多分ですが、「コレクション」を直接使う方法、が多いと思います。(自信なし)
(18)上位の階層のオブジェクトを調べるには、例えばExcelVBAの場合なら、「Parentプロパティ+TypeName関数」の合わせ技やオブジェクトブラウザ+F1ヘルプ、下位の階層のオブジェクトを調べるには「Stop+ローカルウィンドウの合わせ技」やオブジェクトブラウザ+F1ヘルプ、などが調べやすいと思います。
(19)変数の中身が、現在何型でどんな値が入っているかを調べるには、「Stop+ローカルウィンドウ」を必ず使います。特に、Variant型やObject型の変数を使っている時は、いつでも使えるようになっておくことが必須です。
```
4 書き間違い修正

komugi3333

komugi3333 score 69

2019/03/11 17:20  投稿

今読んでみえる本の次に、以下の2冊をお勧めします。
(A)スラスラ読める Excel VBA ふりがなプログラミング
  (ふりがなプログラミングシリーズ)
  リブロワークス  (著)
(B)いちばんやさしいExcelVBAの教本
  人気講師が教える実務に役立つマクロの始め方
   (「いちばんやさしい教本」シリーズ)
   伊藤潔人 (著)
この本の一語一句でもわからないところがあって、実際にExcelでサンプルを動かすことができないなら、この先、VBAをしっかりと理解できなくなる可能性が高いと思いますので、是非一度本屋さんで立ち読みでもしてみてください。
この本の一語一句でもわからないところがあって、実際にこの2冊のとおりにExcelでサンプルを作って・動かすことができないなら、この先、VBAをしっかりと理解できなくなる可能性が高いと思いますので、是非一度本屋さんで立ち読みでもしてみてください。(サンプルはもちろんダウンロードもできます。)
他の本を読みながらでもいいので、この2冊だけは、もしできることなら、ご購入をお勧めします。
理由は、以降に挙げた(01)~(19)に当てはまるように書かれていて、長い目で見ると、挫折しにくかったり、一度や二度・挫折しても再度読み直すと復活しやすい本だからです。
以降に挙げた(01)~(19)は、半分は、上記の2冊から学んだことです。
(私も初心者なので間違いがあるかもしれませんが。もしそうだったらスミマセン!)
僕自身、グラフも動かせないような初心者なのですが、ご紹介した2冊を読んだおかげで、ある地点から、自分で言うのもなんですが、飛躍的にExcelVBAを理解できるようになりました。
(ヘルプやオブジェクトブラウザを使えるようになり、人やWebに聞かなくても自力でエラーを解決できる件数が増えてきました。)
なお、以下のような流れを意識して書かれている「初心者本」は、ご紹介した2冊以外、どんなレジェンドさんの本を探しても、多分、無いのではないかと思っています。
2冊の本の不明点、と、以下の(01)~(19)の不明点を、一語一句、すべて、分かる人や先輩などに、わかるまで何回でも聞けば、恐らくですが、高い確率で上達すると思います。
他の初心者本なら、分からなかったらスルーしてもいいですが、この2冊は、スルーしないほうが良いと思います。一度や二度、挫折してもいいので、必ず「わかるまで」誰かに教えてもらってください。
頑張ってください!!
```VBA
(01)プログラミングとは、どんな言語であっても、基本、『「変数」というものを動かすことで「自動化」を実現する 』、そういう作業。
(02)基本、「変数」に「生データ」を代入することで、「変数」を動かせるようになる。
(03)そして、VBAの場合、「変数」には大きくは 2つある。というか、2つしかない。それは、「一般的な変数」と「オブジェクト変数」の2つ。
(04)「一般的な変数」に代入する生データは「一般データ( ≒ リテラル値 )」。具体的には「数値、文字列、日付、True/False」などの「文字ベース」のデータ。
(05)「オブジェクト変数」に代入する、生データに相当するものは「オブジェクト式」(=オブジェクト)。
(09)ちなみに「オブジェクト」は「ユニット、ツール、ロボット」といった雰囲気の、何らかの動作・仕事をする「部品」めいたもの。基本、「複合機能体」。(後述の「プロパティ」と「階層構造上下自由往来機能」は、どのオブジェクトも必ず保持・内包しています。メソッドやイベントは持たないモノがあります。)
(10)「オブジェクト」には、画面上に「絵」として見えるもの・裏方で動く目に見えないもの・大きいもの・小さいものがある。ただ、どんなに小さくても、基本、「複合機能体」。そして、プロパティと階層構造上下自由往来機能を必ず保持・内包している。
(06)「一般的な変数」は主に、「VBA関数」と「演算子」、「ステートメント」などで動かすイメージ(大雑把には。)。
(07)「オブジェクト変数」は主に、「メソッド・プロパティ・イベント・階層構造上下自由往来機能」と「名前付き引数(列挙と定数)」、「ステートメント」などで動かすイメージ(大雑把には。)。
(08)「メソッド・プロパティ・イベント・階層構造上下自由往来機能」はすべて、「オブジェクト」の内側に「内包」されるもの。内包される「命令・機能」という感じのもの。
(09)したがって「オブジェクト変数」は、その中に代入した「オブジェクト」の 内側に内包している命令・機能たちを「引き出して」、ステートメントとともに動かすイメージ。
(10)逆に、「一般データ」を代入した「一般的な変数」は、その外側にある「VBA関数」や「演算子」を使って、同じく、ステートメントとともに動かすイメージ。
(11)ただし、一般データは「一般的な変数」に代入しないと動かすことが困難だけど、オブジェクトは「オブジェクト変数」に代入しなくても「オブジェクト式のまま」で動かせる。というか、「動かせてしまう」。逆に言うと、このことが原因で、初心者が上達できない。
・・・とまあ、こんな感じに理解しています。
重要な注意事項としては以下のような感じのようです。
(12)オブジェクトの「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解できないと、またはいいかげんにしてしまうと、必ず挫折する。理由は、それがVBAの学習の「最重要な基礎・スタート地点」の1つとなるため。
(13)オブジェクトには、「階層構造の一覧図」があって、例えばExcelならバージョン2000~2003のヘルプに書いてあります。それと一緒に学習すると、「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解しやすいです。すべてのオブジェクトやコレクションが網羅されているわけではありませんが、初心者にとっては大きな助けとなります。逆に、これが必要ない人は、VBAをちゃんと理解していないという証明になります。
(14)「オブジェクトのオブジェクト変数への代入の方法」を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(15)「一般データ(値)やオブジェクトを返す自作関数」の作り方を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(16)オブジェクトには、「単一のオブジェクト(通称オブジェクト)」と「コレクションオブジェクト(通称コレクション)」の大きく2種類があります。なお、コレクションは単一のオブジェクトを複数束ねるものですが、束ねているからといって、単一オブジェクトの「上位の階層」にコレクションオブジェクトが位置しているわけではなさそうです。「束ねつつ、コレクションも単一オブジェクトも、同じ階層に存在する」、と仮定して理解してしまったほうが、階層構造一覧図を見ながらオブジェクト式を書きやすくなります。
実際、あるオブジェクトとオブジェクトのあいだに、コレクションが「1階層」分を占有して存在することはありません。
(17)オブジェクトを「取得する(=1つだけ選択する)」には、「プロパティ」を使う方法、「メソッド」を使う方法、「コレクション」を直接使う方法、VBA関数で返してもらう方法、などがあります。ExcelやWordの場合は、ほとんどが「プロパティ」を使う方法で、Accessの場合や(Excel・WWordでも)ユーザーフォームを扱う場合は、多分ですが、「コレクション」を直接使う方法、が多いと思います。(自信なし)
(18)上位の階層のオブジェクトを調べるには、例えばExcelVBAの場合なら、「Parentプロパティ+TypeName関数」の合わせ技やオブジェクトブラウザ+F1ヘルプ、下位の階層のオブジェクトを調べるには「Stop+ローカルウィンドウの合わせ技」やオブジェクトブラウザ+F1ヘルプ、などが調べやすいと思います。
(19)変数の中身が、現在何型でどんな値が入っているかを調べるには、「Stop+ローカルウィンドウ」を必ず使います。特に、Variant型やObject型の変数を使っている時は、いつでも使えるようになっておくことが必須です。
```
3 追記と誤字の修正

komugi3333

komugi3333 score 69

2019/03/11 17:15  投稿

今読んでみえる本の次に、以下の2冊をお勧めします。
(A)スラスラ読める Excel VBA ふりがなプログラミング
  (ふりがなプログラミングシリーズ)
  リブロワークス  (著)
(B)いちばんやさしいExcelVBAの教本
  人気講師が教える実務に役立つマクロの始め方
   (「いちばんやさしい教本」シリーズ)
   伊藤潔人 (著)
この本の一語一句でもわからないところがあって、実際にExcelでサンプルを動かすことができないなら、この先、VBAをしっかりと理解できなくなる可能性が高いと思いますので、是非一度本屋さんで立ち読みでもしてみてください。
他の本を読みながらでもいいので、この2冊だけは、もしできることなら、ご購入をお勧めします。
理由は、以降に挙げた(01)~(19)に当てはまるように書かれていて、長い目で見ると、挫折しにくかったり、一度や二度・挫折しても再度読み直すと復活しやすい本だからです。
以降に挙げた(01)~(19)は、半分は、上記の2冊から学んだことです。
(私も初心者なので間違いがあるかもしれませんが。もしそうだったらスミマセン!)
僕自身、グラフも動かせないような初心者なのですが、ご紹介した2冊を読んだおかげで、ある地点から、自分で言うのもなんですが、飛躍的にExcelVBAを理解できるようになりました。
(ヘルプやオブジェクトブラウザを使えるようになり、人やWebに聞かなくても自力でエラーを解決できる件数が増えてきました。)
なお、以下のような流れを意識して書かれている「初心者本」は、ご紹介した2冊以外、どんなレジェンドさんの本を探しても、多分、無いのではないかと思っています。
2冊の本の不明点、と、以下の(01)~(19)の不明点を、一語一句、すべて、分かる人や先輩などに、わかるまで何回でも聞けば、恐らくですが、高い確率で上達すると思います。
他の初心者本なら、分からなかったらスルーしてもいいですが、この2冊は、スルーしないほうが良いと思います。一度や二度、挫折してもいいので、必ず「わかるまで」誰かに教えてもらってください。
頑張ってください!!
```VBA
(01)プログラミングとは、どんな言語であっても、基本、『「変数」というものを動かすことで「自動化」を実現する 』、そういう作業。
(02)基本、「変数」に「生データ」を代入することで、「変数」を動かせるようになる。
(03)そして、VBAの場合、「変数」には大きくは 2つある。というか、2つしかない。それは、「一般的な変数」と「オブジェクト変数」の2つ。
(04)「一般的な変数」に代入する生データは「一般データ( ≒ リテラル値 )」。具体的には「数値、文字列、日付、True/False」などの「文字ベース」のデータ。
(05)「オブジェクト変数」に代入する、生データに相当するものは「オブジェクト式」(=オブジェクト)。
(09)ちなみに「オブジェクト」は「ユニット、ツール、ロボット」といった雰囲気の、何らかの動作・仕事をする「部品」めいたもの。基本、「複合機能体」。(後述の「プロパティ」と「階層構造上下自由往来機能」は、どのオブジェクトも必ず保持・内包しています。メソッドやイベントは持たないモノがあります。)
(10)「オブジェクト」には、画面上に「絵」として見えるもの・裏方で動く目に見えないもの・大きいもの・小さいものがある。ただ、どんなに小さくても、基本、「複合機能体」。そして、プロパティと階層構造上下自由往来機能を必ず保持・内包している。
(06)「一般的な変数」は主に、「VBA関数」と「演算子」、「ステートメント」などで動かすイメージ(大雑把には。)。
(07)「オブジェクト変数」は主に、「メソッド・プロパティ・イベント・階層構造上下自由往来機能」と「名前付き引数(列挙と定数)」、「ステートメント」などで動かすイメージ(大雑把には。)。
(08)「メソッド・プロパティ・イベント・階層構造上下自由往来機能」はすべて、「オブジェクト」の内側に「内包」されるもの。内包される「命令・機能」という感じのもの。
(09)したがって「オブジェクト変数」は、その中に代入した「オブジェクト」の 内側に内包している命令・機能たちを「引き出して」、ステートメントとともに動かすイメージ。
(10)逆に、「一般データ」を代入した「一般的な変数」は、その外側にある「VBA関数」や「演算子」を使って、同じく、ステートメントとともに動かすイメージ。
(11)ただし、一般データは「一般的な変数」に代入しないと動かすことが困難だけど、オブジェクトは「オブジェクト変数」に代入しなくても「オブジェクト式のまま」で動かせる。というか、「動かせてしまう」。逆に言うと、このことが原因で、初心者が上達できない。
・・・とまあ、こんな感じに理解しています。
重要な注意事項としては以下のような感じのようです。
(12)オブジェクトの「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解できないと、またはいいかげんにしてしまうと、必ず挫折する。理由は、それがVBAの学習の「最重要な基礎・スタート地点」の1つとなるため。
(13)オブジェクトには、「階層構造の一覧図」があって、例えばExcelならバージョン2000~2003のヘルプに書いてあります。それと一緒に学習すると、「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解しやすいです。すべてのオブジェクトやコレクションが網羅されているわけではありませんが、初心者にとっては大きな助けとなります。逆に、これが必要ない人は、VBAをちゃんと理解していないという証明になります。
(14)「オブジェクトのオブジェクト変数への代入の方法」を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(15)「一般データ(値)やオブジェクトを返す自作関数」の作り方を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(16)オブジェクトには、「単一のオブジェクト(通称オブジェクト)」と「コレクションオブジェクト(通称コレクション)」の大きく2種類があります。なお、「コレクションも単一オブジェクトも、同じ階層にある」、と改定してしまうと、階層構造一覧図を見ながらオブジェクト式を書きやすくなります。
(16)オブジェクトには、「単一のオブジェクト(通称オブジェクト)」と「コレクションオブジェクト(通称コレクション)」の大きく2種類があります。なお、コレクションは単一のオブジェクトを複数束ねるものですが、束ねているからといって、単一オブジェクトの「上位の階層」にコレクションオブジェクトが位置しているわけではなさそうです。「束ねつつ、コレクションも単一オブジェクトも、同じ階層に存在する」、と仮定して理解してしまったほうが、階層構造一覧図を見ながらオブジェクト式を書きやすくなります。
実際、あるオブジェクトとオブジェクトのあいだに、コレクションが「1階層」分を占有して存在することはありません。
(17)オブジェクトを「取得する(=1つだけ選択する)」には、「プロパティ」を使う方法、「メソッド」を使う方法、「コレクション」を直接使う方法、VBA関数で返してもらう方法、などがあります。ExcelやWordの場合は、ほとんどが「プロパティ」を使う方法で、ユーザーフォームやAccessの場合は、多分ですが、「コレクション」を直接使う方法、だと思います。(自信なし)
(17)オブジェクトを「取得する(=1つだけ選択する)」には、「プロパティ」を使う方法、「メソッド」を使う方法、「コレクション」を直接使う方法、VBA関数で返してもらう方法、などがあります。ExcelやWordの場合は、ほとんどが「プロパティ」を使う方法で、Accessの場合や(Excel・WWordでも)ユーザーフォームを扱う場合は、多分ですが、「コレクション」を直接使う方法、が多いと思います。(自信なし)
(18)上位の階層のオブジェクトを調べるには、例えばExcelVBAの場合なら、「Parentプロパティ+TypeName関数」の合わせ技やオブジェクトブラウザ+F1ヘルプ、下位の階層のオブジェクトを調べるには「Stop+ローカルウィンドウの合わせ技」やオブジェクトブラウザ+F1ヘルプ、などが調べやすいと思います。
(19)変数の中身が、現在何型でどんな値が入っているかを調べるには、「Stop+ローカルウィンドウ」を必ず使います。特に、Variant型やObject型の変数を使っている時は、いつでも使えるようになっておくことが必須です。
```
2 一部追記

komugi3333

komugi3333 score 69

2019/03/11 17:05  投稿

今読んでみえる本の次に、以下の2冊をお勧めします。
(A)スラスラ読める Excel VBA ふりがなプログラミング
  (ふりがなプログラミングシリーズ)
  リブロワークス  (著)
(B)いちばんやさしいExcelVBAの教本
  人気講師が教える実務に役立つマクロの始め方
   (「いちばんやさしい教本」シリーズ)
   伊藤潔人 (著)
この本の一語一句でもわからないところがあって、実際にExcelでサンプルを動かすことができないなら、この先、VBAをしっかりと理解できなくなる可能性が高いと思いますので、是非一度本屋さんで立ち読みでもしてみてください。
他の本を読みながらでもいいので、この2冊だけは、もしできることなら、ご購入をお勧めします。
理由は、以降に挙げた(01)~(19)に当てはまるように書かれていて、長い目で見ると、挫折しにくかったり、一度や二度・挫折しても再度読み直すと復活しやすい本だからです。
以降に挙げた(01)~(19)は、半分は、上記の2冊から学んだことです。
(私も初心者なので間違いがあるかもしれませんが。もしそうだったらスミマセン!)
僕自身、グラフも動かせないような初心者なのですが、ご紹介した2冊を読んだおかげで、ある地点から、自分で言うのもなんですが、飛躍的にExcelVBAを理解できるようになりました。
(ヘルプやオブジェクトブラウザを使えるようになり、人やWebに聞かなくても自力でエラーを解決できる件数が増えてきました。)
なお、以下のような流れを意識して書かれている「初心者本」は、ご紹介した2冊以外、どんなレジェンドさんの本を探しても、多分、無いのではないかと思っています。
2冊の本の不明点、と、以下の(01)~(19)の不明点を、一語一句、すべて、分かる人や先輩などに、わかるまで何回でも聞けば、恐らくですが、高い確率で上達すると思います。
他の初心者本なら、分からなかったらスルーしてもいいですが、この2冊は、スルーしないほうが良いと思います。一度や二度、挫折してもいいので、必ず「わかるまで」誰かに教えてもらってください。
頑張ってください!!
```VBA
(01)プログラミングとは、どんな言語であっても、基本、『「変数」というものを動かすことで「自動化」を実現する 』、そういう作業。
(02)基本、「変数」に「生データ」を代入することで、「変数」を動かせるようになる。
(03)そして、VBAの場合、「変数」には大きくは 2つある。というか、2つしかない。それは、「一般的な変数」と「オブジェクト変数」の2つ。
(04)「一般的な変数」に代入する生データは「一般データ( ≒ リテラル値 )」。具体的には「数値、文字列、日付、True/False」などの「文字ベース」のデータ。
(05)「オブジェクト変数」に代入する、生データに相当するものは「オブジェクト式」(=オブジェクト)。
(09)ちなみに「オブジェクト」は「ユニット、ツール、ロボット」といった雰囲気の、何らかの動作・仕事をする「部品」めいたもの。基本、「複合機能体」。(後述の「プロパティ」と「階層構造上下自由往来機能」は、どのオブジェクトも必ず保持・内包しています。メソッドやイベントは持たないモノがあります。)
(10)「オブジェクト」には、画面上に「絵」として見えるもの・裏方で動く目に見えないもの・大きいもの・小さいものがある。ただ、どんなに小さくても、基本、「複合機能体」。そして、プロパティと階層構造上下自由往来機能を必ず保持・内包している。
(06)「一般的な変数」は主に、「VBA関数」と「演算子」、「ステートメント」などで動かすイメージ(大雑把には。)。
(07)「オブジェクト変数」は主に、「メソッド・プロパティ・イベント・階層構造上下自由往来機能」と「名前付き引数(列挙と定数)」、「ステートメント」などで動かすイメージ(大雑把には。)。
(08)「メソッド・プロパティ・イベント・階層構造上下自由往来機能」はすべて、「オブジェクト」の内側に「内包」されるもの。内包される「命令・機能」という感じのもの。
(09)したがって「オブジェクト変数」は、その中に代入した「オブジェクト」の 内側に内包している命令・機能たちを「引き出して」、ステートメントとともに動かすイメージ。
(11)ただし、一般データは「一般的な変数」に代入しないと動かすことが困難だけど、オブジェクトは「オブジェクト変数」に代入しなくても「オブジェクト式のまま」で動かせる。というか、「動かせてしまう」。逆に言うと、このことが原因で、初心者が上達できない。
・・・とまあ、こんな感じに理解しています。
重要な注意事項としては以下のような感じのようです。
(12)オブジェクトの「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解できないと、またはいいかげんにしてしまうと、必ず挫折する。理由は、それがVBAの学習の「最重要な基礎・スタート地点」の1つとなるため。
(13)オブジェクトには、「階層構造の一覧図」があって、例えばExcelならバージョン2000~2003のヘルプに書いてあります。それと一緒に学習すると、「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解しやすいです。すべてのオブジェクトやコレクションが網羅されているわけではありませんが、初心者にとっては大きな助けとなります。逆に、これが必要ない人は、VBAをちゃんと理解していないという証明になります。
(14)「オブジェクトのオブジェクト変数への代入の方法」を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(15)「一般データ(値)やオブジェクトを返す自作関数」の作り方を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(16)オブジェクトには、「単一のオブジェクト(通称オブジェクト)」と「コレクションオブジェクト(通称コレクション)」の大きく2種類があります。なお、「コレクションも単一オブジェクトも、同じ階層にある」、と改定してしまうと、階層構造一覧図を見ながらオブジェクト式を書きやすくなります。
(17)オブジェクトを「取得する(=1つだけ選択する)」には、「プロパティ」を使う方法、「メソッド」を使う方法、「コレクション」を直接使う方法、VBA関数で返してもらう方法、などがあります。ExcelやWordの場合は、ほとんどが「プロパティ」を使う方法で、ユーザーフォームやAccessの場合は、多分ですが、「コレクション」を直接使う方法、だと思います。(自信なし)
(18)上位の階層のオブジェクトを調べるには、例えばExcelVBAの場合なら、「Parentプロパティ+TypeName関数」の合わせ技やオブジェクトブラウザ+F1ヘルプ、下位の階層のオブジェクトを調べるには「Stop+ローカルウィンドウの合わせ技」やオブジェクトブラウザ+F1ヘルプ、などが調べやすいと思います。
(19)変数の中身が、現在何型でどんな値が入っているかを調べるには、「Stop+ローカルウィンドウ」を必ず使います。特に、Variant型やObject型の変数を使っている時は、いつでも使えるようになっておくことが必須です。
```
1 追記

komugi3333

komugi3333 score 69

2019/03/11 17:02  投稿

今読んでみえる本の次に、以下の2冊をお勧めします。
(A)スラスラ読める Excel VBA ふりがなプログラミング
  (ふりがなプログラミングシリーズ)
  リブロワークス  (著)
(B)いちばんやさしいExcelVBAの教本
  人気講師が教える実務に役立つマクロの始め方
   (「いちばんやさしい教本」シリーズ)
   伊藤潔人 (著)
この本の一語一句でもわからないところがあって、実際にExcelでサンプルを動かすことができないなら、この先、VBAをしっかりと理解できなくなる可能性が高いと思いますので、是非一度本屋さんで立ち読みでもしてみてください。
他の本を読みながらでもいいので、この2冊だけは、もしできることなら、ご購入をお勧めします。
理由は、以降に挙げた(01)~(19)に当てはまるように書かれていて、長い目で見ると、挫折しにくかったり、一度や二度・挫折しても再度読み直すと復活しやすい本だからです。
以降に挙げた(01)~(19)は、半分は、上記の2冊から学んだことです。
(私も初心者なので間違いがあるかもしれませんが。もしそうだったらスミマセン!)  
僕自身、グラフも動かせないような初心者なのですが、ご紹介した2冊を読んだおかげで、ある地点から、自分で言うのもなんですが、飛躍的にExcelVBAを理解できるようになりました。
(ヘルプやオブジェクトブラウザを使えるようになり、人やWebに聞かなくても自力でエラーを解決できる件数が増えてきました。)
なお、以下のような流れを意識して書かれている「初心者本」は、ご紹介した2冊以外、どんなレジェンドさんの本を探しても、多分、無いのではないかと思っています。
2冊の本の不明点、と、以下の(01)~(19)の不明点を、一語一句、すべて、分かる人や先輩などに、わかるまで何回でも聞けば、恐らくですが、高い確率で上達すると思います。
他の初心者本なら、分からなかったらスルーしてもいいですが、この2冊は、スルーしないほうが良いと思います。一度や二度、挫折してもいいので、必ず「わかるまで」誰かに教えてもらってください。
頑張ってください!!
```VBA
(01)プログラミングとは、どんな言語であっても、基本、『「変数」というものを動かすことで「自動化」を実現する 』、そういう作業。
(02)基本、「変数」に「生データ」を代入することで、「変数」を動かせるようになる。
(03)そして、VBAの場合、「変数」には大きくは 2つある。というか、2つしかない。それは、「一般的な変数」と「オブジェクト変数」の2つ。
(04)「一般的な変数」に代入する生データは「一般データ( ≒ リテラル値 )」。具体的には「数値、文字列、日付、True/False」などの「文字ベース」のデータ。
(05)「オブジェクト変数」に代入する、生データに相当するものは「オブジェクト式」(=オブジェクト)。
(09)ちなみに「オブジェクト」は「ユニット、ツール、ロボット」といった雰囲気の、何らかの動作・仕事をする「部品」めいたもの。基本、「複合機能体」。(後述の「プロパティ」と「階層構造上下自由往来機能」は、どのオブジェクトも必ず保持・内包しています。メソッドやイベントは持たないモノがあります。)
(10)「オブジェクト」には、画面上に「絵」として見えるもの・裏方で動く目に見えないもの・大きいもの・小さいものがある。ただ、どんなに小さくても、基本、「複合機能体」。そして、プロパティと階層構造上下自由往来機能を必ず保持・内包している。
(06)「一般的な変数」は主に、「VBA関数」と「演算子」、「ステートメント」などで動かすイメージ(大雑把には。)。
(07)「オブジェクト変数」は主に、「メソッド・プロパティ・イベント・階層構造上下自由往来機能」と「名前付き引数(列挙と定数)」、「ステートメント」などで動かすイメージ(大雑把には。)。
(08)「メソッド・プロパティ・イベント・階層構造上下自由往来機能」はすべて、「オブジェクト」の内側に「内包」されるもの。内包される「命令・機能」という感じのもの。
(09)したがって「オブジェクト変数」は、その中に代入した「オブジェクト」の 内側に内包している命令・機能たちを「引き出して」、ステートメントとともに動かすイメージ。
(10)逆に、「一般データ」を代入した「一般的な変数」は、その外側にある「VBA関数」を使って、同じく、ステートメントとともに動かすイメージ。
(11)ただし、一般データは「一般的な変数」に代入しないと動かすことが困難だけど、オブジェクトは「オブジェクト変数」に代入しなくても「オブジェクト式のまま」で動かせる。というか、「動かせてしまう」。逆に言うと、このことが原因で、初心者が上達できない。
・・・とまあ、こんな感じに理解しています。
重要な注意事項としては以下のような感じのようです。
(12)オブジェクトの「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解できないと、またはいいかげんにしてしまうと、必ず挫折する。理由は、それがVBAの学習の「最重要な基礎・スタート地点」の1つとなるため。
(13)オブジェクトには、「階層構造の一覧図」があって、例えばExcelならバージョン2000~2003のヘルプに書いてあります。それと一緒に学習すると、「階層構造上下自由往来機能」「省略しないオブジェクト式の書き方」を理解しやすいです。すべてのオブジェクトやコレクションが網羅されているわけではありませんが、初心者にとっては大きな助けとなります。逆に、これが必要ない人は、VBAをちゃんと理解していないという証明になります。
(14)「オブジェクトのオブジェクト変数への代入の方法」を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(15)「一般データ(値)やオブジェクトを返す自作関数」の作り方を学ばないと、「思い通りのプログラム」を書くことは非常に難しい、ので、遅かれ早かれ、挫折します。
(16)オブジェクトには、「単一のオブジェクト(通称オブジェクト)」と「コレクションオブジェクト(通称コレクション)」の大きく2種類があります。なお、「コレクションも単一オブジェクトも、同じ階層にある」、と改定してしまうと、階層構造一覧図を見ながらオブジェクト式を書きやすくなります。
(17)オブジェクトを「取得する(=1つだけ選択する)」には、「プロパティ」を使う方法、「メソッド」を使う方法、「コレクション」を直接使う方法、VBA関数で返してもらう方法、などがあります。ExcelやWordの場合は、ほとんどが「プロパティ」を使う方法で、ユーザーフォームやAccessの場合は、多分ですが、「コレクション」を直接使う方法、だと思います。(自信なし)
(18)上位の階層のオブジェクトを調べるには、例えばExcelVBAの場合なら、「Parentプロパティ+TypeName関数」の合わせ技やオブジェクトブラウザ+F1ヘルプ、下位の階層のオブジェクトを調べるには「Stop+ローカルウィンドウの合わせ技」やオブジェクトブラウザ+F1ヘルプ、などが調べやすいと思います。
(19)変数の中身が、現在何型でどんな値が入っているかを調べるには、「Stop+ローカルウィンドウ」を必ず使います。特に、Variant型やObject型の変数を使っている時は、いつでも使えるようになっておくことが必須です。
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る