
No.3ベストアンサー
- 回答日時:
#1 です。
#2 の方が書かれている通りなのですが、御質問の例に沿って「オブジェクトを指していない時の具体例」を補足します。変数 cTextBox に Nothing が入っている状態というのは、以下のパターンのいずれかになると考えられます。
1.変数 cTextBox が宣言だけされていて、実体が作成されていない状態。
Dim cTextBox As TextBox
となっているだけの時。
この後、「If cTextBox IsNot Nothing Then」の行に到達する前に、
cTextBox = New TextBox()
等とコーディングされておれば、オブジェクト実体を作って変数 cTextBox に参照させている事になりますので、メッセージボックスが正しく表示されます。
2.cTextBox を使い終わって Nothing を入れた後。
cTextBox = Nothing
と書いた後です。このように記載すると、cTextBox はオブジェクトの実体との参照を切断します。
以下蛇足ですが、#2の方が書かれているように事前に Dispose を呼び出すのがセオリーです。
cTextBox.Dispose()
cTextBox = Nothing
但しフォームの子供として正しくこの TextBox を追加している場合には、Dispose する必要はありません(フォームが閉じられた時に自動で呼ばれます)。
No.2
- 回答日時:
参照変数の仕組みは、どの入門本でも最初の方に書いてある
基礎知識だと思いますが。
http://msdn.microsoft.com/ja-jp/library/dd314344 …
> 参照型のデータでは値型とは異なり、その変数を宣言した
> からといって、そのデータ型にみあう領域が確保される訳
> ではありません。
参照変数はメモリ上のインスタンスのアドレスを格納
します。参照するまではアドレスを格納できる入れ物を
用意したに過ぎません。
つまり中身は空です。それを Nothing で表します。
通常は画面のテキストボックスなどは、デザイン時に
貼り付けたらそのままですので、意識する必要は無い
でしょう。(VBが裏で自動でプログラムを書いています)
しかし、自分で動的にコントロールを増減させたり
する時は、処理対象のオブジェクトがまだメモリ上に
存在しない場合も出てくるでしょう。その場合は、
まだどこも参照していないので Nothing になります。
まぁ、もっと使うのがフォームでしょうね。複数画面を
扱うアプリでは、各画面を新しくロードしたり、破棄
したりを頻繁に行いますので。
ただし、アドレス参照はしているが、アドレスの先の
インスタンスは破棄した状態もありえます。
その場合は Control.IsDisposed プロパティもあわせて
チェックします。
http://msdn.microsoft.com/ja-jp/library/system.w …
No.1
- 回答日時:
cTextBox がちゃんと実際のオブジェクト(変数名から推定して TextBox 型のオブジェクト)を指しているかどうかを確認しています。
実際のオブジェクトを指していない場合には、オブジェクトのプロパティにアクセスしようとしてエラーになってしまうので(cTextBox.Name の部分でエラーが発生してしまうので)。
実際のオブジェクトを指している事が明らかな場合には、不要な条件式ですね。
ご回答ありがとうございます。
よくわからないのですが実際のオブジェクトを指していないとは
具体的にどのような時のことをさすのでしょうか
textboxがenableにプログラムによって変更されたとか
なのでしょうか
よくわかりませんもしよろしかったらオブジェクトを指していないときの
具体例を教えていただけませんでしょうか
お忙しい中ご回答いただきありがとうござました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
VBAからPDFファイルにパスワー...
-
VBAで既に開いている別アプリケ...
-
Excelでフィルタをかけると警告...
-
VBA:オートシェイプの線の長...
-
[VBA]CDOメッセージ送信エラー
-
【VB】【エクセル操作】 SaveAs...
-
VBScriptからDLL参照設定したい
-
テキストボックス中の文字列の...
-
AccessVBAで「dim dbs as datab...
-
VBAで Set wb = Sheets(1).Cop...
-
VBAで作成するメール(開封確認...
-
EXCEL VBA オートシェイプナン...
-
エクセルマクロエラー「'Cells'...
-
ExcelVBAでのNZ関数について
-
コンパイルすると「メソッドま...
-
エクセルVBAで配列内に空白デー...
-
ある文字列が全て数字であるか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
上下の位置揃えについて
-
ExcelVBAでのNZ関数について
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
AccessVBAで「dim dbs as datab...
-
EXCEL VBA オートシェイプナン...
-
オブジェクト変数またはWITHブ...
-
[VBA]CDOメッセージ送信エラー
-
エクセルマクロエラー「'Cells'...
-
findメソッドの変数について
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
オブジェクト変数の取得について
-
CreateObjectとGetObjectの違い
おすすめ情報