仕事で必用になり、プログラミングを学んでいる者です。
VBAでの基本的なことですが、教えていただきたいことがあります。
例えば・・・
Cells(i, j).value = "あああ"
のようなステートメントがあったとき
Cells(i, j) の部分をオブジェクト
.value の部分をプロパティと考えていいですか?
もしそうだとすると、
Cells(i, j).Interior.ColorIndex = i
のようなステートメントは
Cells(i, j) オブジェクト
.Interior プロパティ
.ColorIndex プロパティのプロパティ??
ということになるのでしょうか?
ちょっと概念が整理できていません。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
こんばんは。
プロパティというのは、一般業界では、不動産のことをさしますが、コンピュータの世界では、「性質」や「特性」を表します。
オブジェクトというのは、日本語で言えば、「対象」ですが、複合的な要素を持っているもののことをさしています。
その複合的な要素の特徴は、また分かれていきます。
ただ、概念論から、VBAやプログラミング言語を覚えることはやめたほうがよいのです。私たちは、オブジェクトの実体というものを何かを知る必要がありません。哲学の「構造主義」の言葉で、「潜在的共存の多様性」という言葉がありますが、それがオブジェクトのことです。それを把握するのは、困難だと思うのです。
例えば、テレビ受像機のメカニズムがどのようになっているのか、細かく分けて知る人は少ないのです。スイッチを押す、ボリュームを上げ下げする、チャンネルを換える、それぞれは、プロパティです。
私たちは、ボリュームの位置さえ知っていれば、後は、回すのかスライドさせるのか、ボタンを押し続けるのか、それは、それぞれのプロパティのプロパティによって状態を変えることは出来ますが、まず、その位置さえ知っていれば、何とかなりそうなのは分かります。
逆にいうと、私たちは、音を下げたいのか上げたいか、という目的によって、そのプロパテイを知り、そのオブジェクトに働きかけることになるわけです。言い換えると、音を上下したいという目的のために、プロパティが存在し、オブジェクトが存在すると考えたほうが良いのではないでしょうか?
私たちの時代では、もう、オブジェクトが何であるのか、どんな格好や特性を持っているかを知ることは、ほとんど困難だと思ってよいと思います。それは、そうした言語やソフトウェアが必ずしも人間がその細部を分かって作られているということではないのです。
1970年代の組立てマイコン・キット時代だったら、ビットによってコンピュータはどう反応するか、ということをたどることが出来ました。初期の段階では、天才的なプログラマは、マシン語を生で扱うことが出来たそうです。しかし、もう、私たちには手の届かないところにあるのだと思います。
慣れないかもしれませんが、その目的を以って、プロパティを知り、そのオブジェクトを知るということを心がけたほうが良いと思います。
大変わかりやすい説明、ありがとうございました。
とても参考になりました。
私個人的な問題ですが、どうも概念論から入る癖があるようでして、それが物事をより複雑に捕らえてしまうようです。
ある意味目から鱗でした。
実はオブジェクト指向というのもよくわかってなく、その感覚を理解したいと思っているのですが、Wendy02さんのご回答の中に何かヒントがあるように思いました。
的確なアドバイス大変ありがとうございました。
No.1
- 回答日時:
プロパティとは、あくまでもオブジェクトの属性であり、プロパティ自体も何らかのオブジェクトであったり、単なる数値だったりします。
ExcelVBAの画面でヘルプを出して「Interior」で検索すると、
Interior プロパティ
Interior オブジェクト
の2つが出てくると思います。
Cells(i,j)はRangeオブジェクトですが、RangeオブジェクトはInteriorオブジェクトをInteriorという名前のプロパティとして持つ、ということです。
何かうまく説明できなくて、よけいややこしくなったかもしれませんが…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応 3 2022/12/27 22:27
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) クラス デフォルトプロパティの作り方 1 2022/10/23 11:41
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
VBAで既に開いている別アプリケ...
-
「Columns("A:C")」の列文字を...
-
コンパイルすると「メソッドま...
-
エクセルVBAで2つの画像を比較...
-
テキストボックスが読み取り専...
-
エクセルでダウンロードするには?
-
MSアクセスでエクセルのセルに...
-
エクセルのVBAでWEBページの更新
-
エクセルからマクロでパワーポ...
-
PowerPointVBAでスライドマスタ...
-
オブジェクトが見つかりません
-
MATLABのGUI、画像表示について
-
上下の位置揃えについて
-
VBのプログラムミング
-
エクセルVBAでテキストボックス...
-
エクセルVBAで配列内に空白デー...
-
エクセルVBAで同名オブジェクト...
-
VBA:オートシェイプの線の長...
-
<excel vba>selenium basicのWe...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
テキストボックス中の文字列の...
-
PowerPointVBAでスライドマスタ...
-
エクセルマクロエラー「'Cells'...
-
VBAからPDFファイルにパスワー...
-
Excelでフィルタをかけると警告...
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
-
VBA:オートシェイプの線の長...
-
VBで引数にDictionaryオブジェ...
-
AccessVBAで「dim dbs as datab...
おすすめ情報