匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

VBA で コントロール名を変数ににして参照すると「このプロパティまたはメソッドはサポートしていません」と表示されます。


For i = 1 To 10
If Me.Controls("AAA" & cstr(i)).Value = True Then ←ここでエラー
  ・
  ・
Next

上記の cstr(i) の部分を、直接文字列にすると(例:「"AAA" & "1"」)、エラーになることはありません。

何が問題なのでしょうか?
久しぶりに VBAを使ってみたのですが、以前は問題なく上記のようなことをやっていた記憶があります。
エラーの回避方法はあるでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/05/26 16:28:51
  • 終了:2014/06/02 16:30:06

回答(1件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2014/05/26 17:25:13

エラーの内容から察するに、フォームモジュール以外の場所から呼び出したりしているとか、そういう系じゃないですか?
Me に正しくユーザーフォームが取得できてます?

匿名質問者

ご回答ありがとうございます。
ユーザーフォームの Privateでのモジュールですので他のフォームを参照しているとかそういうことはないと思います。

Dim controlName as string
controlName = "AAA" & "1"

If Me.Controls(controlName).value = True Than

なら上手く行くのです。

Dim controlName as string
Dim i as Integer
i = 1
controlName = "AAA" & cstr(i)

If Me.Controls(controlName).value = True Than

だとエラーになってしまいます。
添字の i の数字は、テキストの 1と判断されていないような・・・。

2014/05/27 10:13:33
匿名質問者

すみません。
解決しました。

参照しているコントロール名に誤りがありました。

2014/05/27 10:19:45

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません