ここのところ、初心者ながらAccess、ExcelのVBAを扱っていて
もやもやしていることがあり、お尋ねさせていただきたく書き込みします。
例えばフィールド名「txtタイトル」があって中身が「ドラゴンクエスト」だったとします。
これを
Dim txtTitle as string
txtTitle = Me.txtタイトル
と変数で置いたとき
「txtTitle」は"ドラゴンクエスト"として扱えるのか、"Me.txtタイトル"として扱えるのか
理解できておりません。
"ドラゴンクエスト"として扱いたいとしたら
Me.Controls(txtTitle) として扱わないといけないのでしょうか。
というのも、Excelのテキストボックスフォームで、テキストボックスの中身をコピーするコードを作ろうと思ったら
単純にtxtTitle.copy のような感じではうまくいかず、テキストボックスの頭から最後までコピーする、という
ようなコードを作らないといけないということも知りました。
なんだか思うように使えたり使えなかったりしていて、危なっかしいのできちんと理解したいと思っています。
ちなみに先ほど条件によりラベルの色を変更したいと思い
dim lblTitle as string
lblTitle = Me.lblタイトル
lblTitle.ForeColor = RGB(255, 0, 0)
としていたら、以下のエラーが出ました。
「実行時エラー438
オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
色々頭がこんがらがっており、このような質問で申し訳ありません。
基本的なところなので解説しているサイトをいろいろ探してみると良いです
オブジェクトを入れる変数(Office TANAKAさん)
VBAでは既定のプロパティの省略というコーディングを楽にするための仕組みがあるので、その結果として違いの判らない動作もあります。以下サンプルコードを記述するので違いを比べてみてください
ex)通常の変数宣言(文字列型)
ex)オブジェクトとしての変数宣言(Textbox型)
※ACCESSのテキストボックスにはCopyメソッドがないので2番目の例でもtxtTitle.Copyはエラーになる(ACCESSからクリップボードを操作するのはめんどくさいです)
ex)ラベルコントロールを変数にしたい
就業後にじっくり確認させていただきます。色々読んできたつもりなのですが、なかなか理解しきれず…
教えていただき、本当にうれしいです。読むのが楽しみです。