• ベストアンサー

任意の数だけテキストボックスを表示したい。(Eval関数使用)

はじめまして、宜しくお願いします。 Access2002とSQLサーバーをつかってタイトルに書いたようなことを やろうと思っています。 やっていることは まずテキストコントロールを5個(名前:text1~text5)用意して、それらを全て 非表示(.visible = false)にしておきます。 その後「任意の数」をDBからとって来て、その数だけテキストボックスを 表示させたいと思っています。 任意の数が「3」のときはテキストボックスを3つだけ表示させ、任意の数が「5」 のときはテキストボックスを5つ表示したいと思っています。 eval関数を見つけたのでそれを使って下記のように記述しましたが evalがコントロール名の「text」を認識してくれず、エラーとなってしまいます。 ヘルプを見てみると、 eval関数は、 「評価しようとする変数の中でさらに変数を使っている場合、そこまで評価できない」 というようなことは書いてあったのですが、 この場合コントロール名なのでなぜ認識してくれないのか分からず、 行き詰っております。 それとも、このような処理はできないのでしょうか。 Dim CNT AS Integer:CNT = 0 Dim a AS String Do While cnt < 任意の数    CNT = CNT + 1    a = "text" & CNT & ".Visible = True"    Eval (a) Loop 基本的なことで間違えているのかもしれませんが、 お気づきの方が居られましたらご教授ください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#2685
noname#2685
回答No.2

特に Eval 関数を用いなくとも、  Me("text" & CNT).Visible = True とすることで可能です。

takatoo
質問者

お礼

早速のレスありがとうございます。 お礼がおくれて申し訳ございません。 土、日に見れなかったもので、、。 x89さんの言う通りやってみましたがうまくできました。 自分では思いつきませんでした。 ありがとうございます!

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

ヘルプに書いてある Value プロパティの値を設定する例を見るとこうですかね? Dim CNT AS Integer:CNT = 0 Dim a AS String Do While cnt < 任意の数    CNT = CNT + 1    Eval("text" & CNT).Visible = True Loop Evalでテキストボックスの参照を返してもらって、そのVisibleプロパティに値をセットしています。

takatoo
質問者

お礼

早速のレスありがとうございます。 お礼がおくれて申し訳ございません。 土、日に見れなかったもので、、。 taka_tetsuさんの言うとおりやってみたのですが、 やはりEval関数を使うと「text1が見つかりません」という エラーが出てしまいます。 変数名は解決してくれるのですが、コントロール名はだめなのか? と思いました。 この方法ではうまくいきませんでしたが、わざわざのご回答、 ありがとうございます!

関連するQ&A

  • Eval関数を使いたい!ドキュメントにある宣言とはなに?

    Eval関数を使いたい!ドキュメントにある宣言とはなに? DataBinder.Eval メソッド にある DataBinder.Eval (Object, String, String) 実行時にデータ バインディング式を評価し、 結果を要求側のブラウザに表示されるテキストとして書式化します。 を使いたいです。 Visual Studio 2005のドキュメントで見つけました。 ドキュメントにある宣言とはなんですか? Visual Basic (宣言) Public Shared Function Eval ( _ container As Object, _ expression As String, _ format As String _ ) As String Visual Basic (使用法) Dim container As Object Dim expression As String Dim format As String Dim returnValue As String returnValue = DataBinder.Eval(container, expression, format) 宣言と使用方法が載っていましたが、使い方がわかりません・・・ ~~~~~~~~~~~~~~~~~~~~~~ 以下を書くと「名前'Eval'は宣言されていません」とエラーが出ます。 宣言がわかっていないので、当たり前といえば、当たり前です。 Dim myWork As String = "1+2+3+4" Dim myTotal As String = "" myTotal = Eval("myWork") これが使えるようにするにはどうしたらいいか教えてください!

  • テキストボックスに変数を表示させたい

    access2003です。 フォーム1にテキスト0を配置し vbaで Private Sub Form_Open(Cancel As Integer) Dim 文字列 As String 文字列 = "a" End Sub と作成しました。 このときフォーム1をダブルクリックして開いた時に テキスト0に文字列に代入した変数を表示させるにはどうすればいいのでしょうか? テキスト0のコントロールソースに =[文字列] とやっても #Name? になってしまいます。 どうすれば読み取った変数をテキスト0に表示させることが可能なのでしょうか? よろしくお願い致します。

  • htmlタグを使用し表示させているテキストboxの初期化

    いつも参考にさせて頂いています。 ダイナミックテキストを使いテキストを表示させている テキストboxの初期化は例えば _root.key1_text.text=""; とすればできると思うのですが。 この場合のkey1_textはインスタンス名です。 htmlタグを使用した(<a href>など、、) htmlテキストボックスの初期化はどうやってやれば いいのでしょうか? _root.html_text.text=""; としても一度表示されたものが消えずに初期化できませんでした。 この場合html_textは変数名です。 よければご教授下さい。よろしくおねがいします。

    • ベストアンサー
    • Flash
  • Excel「テキストボックス」で

    コントロールツールボックス」の中のテキストボックスを使用しています。 変数aと変数bの値を一つのテキストボックスに入れたくて 変数a & 変数b というようにしました。 中身(プロパティでみたところ)はちゃんと入ってるようですが、 表示は変数aと変数bがかぶってしまっています。 これをきちんと表示させるにはどうしたらいいですか? また、このテキストボックス上で、センタリング、右寄せ、均等割付などを行いたい場合は どうしたらいいでしょうか?

  • テキストボックス空欄への追加入力

    リストボックス1であ行の氏名項目を選択実行しテキストボックス1~8に入力された後にか行にリストボックス項目を変え氏名を選択実行した場合、下記のコードではテキストボックス1からまた上書きされる。テキストボックス空欄に続けて選択項目が入力される方法はあるのでしょうか。悩んでいます。どなたかコードがわかる方よろしくお願いします。 Private Sub 実行Cnd_Click() Dim cnt As Integer   Dim i As Integer If ListBox1.ListIndex = -1 Then Exit Sub cnt = 1 For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then Me.Controls("TextBox" & cnt).Text = ListBox1.List(i) cnt = cnt + 1 End If Next End Sub

  • テキストボックスの数を変えるのは可能でしょうか?

    今、入門書を片手に質問しています。 本の例では、テキストボックスなどのコントロールは、あらかじめ貼り付けてコーティングしています。 これを、データによって増やしたり減らしたりすることは可能でしょうか? 今考えているのは、あるデータ(文章)があるとします。 これを正規表現で分けて、テキストボックスに表示しようと思っています。 このテキストボックスの数を、可変に出来ないかと思っています。 よろしくお願いします。

  • eval関数?エラーについて

    eval関数?エラーについて 掲示板の設置と設定時に各項目について必須や任意に設定できますが必須項目に無入力で投稿するとeval関数?エラーが表示されるのですが、この仕組みについて知りたいです。

    • ベストアンサー
    • Perl
  • (ACCESS)条件に応じて、テキストボックスを表示・非表示設定

    (ACCESS)条件に応じて、テキストボックスを表示・非表示設定 フォーム上のテキストボックスAを条件に応じて表示・非表示にさせたいです。 条件は、サブフォームのテキストボックスBに「支払」を言う文字があれば、 テキストボックスAが表示され、なければ非表示にする方法が探しています。 わからないなりに調べて、多分以下の文章になると思いますが、「?」の条件式がうまくいきません Private Sub AA_GotFocus() If  ????? Then Me!テキストボックスA.Visible = False Else Me!テキストボックスA.Visible = True End If End Sub どなたか教えてください。 宜しくお願い致します。

  • VBA データフォーム テキストBOX内容の表示

    VBA データフォーム テキストBOXの内容が旨く表示出来なくて困っています。  お世話になります。  データフォームを使って、シートの修正マクロを作成してます。 フォームにはコードと選択項目の2つのテキストBOXが有り、該当行の修正をしてOKボタンを クリックすると、修正したコードと選択項目はシートに反映されるのですが、以降の行の修正で テキストBOXの表示が1件目のまま変わりません。  行が変わった時に、該当行の内容(コード、選択項目)を表示させる様にしたいのです。 以下VBAのコーディングです。宜しくお願いします。 Dim setIn As Range Dim cnt_A As Long Private Sub CommandButton1_Click() '各項目の入力 Set setIn = ActiveCell.Offset(0, 0) Select Case データ入力.Caption Case Is = "コード 入 力" cnt_A = cnt_A + 1 'フォームにコードをセット With setIn(cnt_A) .Value = Sample_No .Offset(0, 0).Value = Sample_No End With Case Is = "A 入 力" cnt_A = cnt_A + 1 'フォームに項目Aをセット With setIn(cnt_A) '.Value = Sample_No .Offset(0, 1).Value = Sentaku_Koumoku End With Case Is = "B 入 力" cnt_A = cnt_A + 1 'フォームに選択項目Bをセット With setIn(cnt_A) '.Value = Sample_No .Offset(0, 2).Value = Sentaku_Koumoku End With End Select End Sub

  • ループを使ってテキストボックスにマスクをかける

    以前質問した「テキストボックスの名前に変数をつける」の 続きです。 取得した数をループを使ってテキストボックスに 挿入するのは、下記の方法で出来たのですが、 For 回数 = 1 To 挿入回数 Controls("Text" & カウンタ).Text = 取得した数 カウンタ = カウンタ + 1 Next これと同様に、ループを使って 挿入したテキストボックスにマスクをかける (テキストボックスに入力不可状態にする) 方法はあるのでしょうか? Lockedとか使ってみてもダメでした。

専門家に質問してみよう