重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【終了しました】教えて!gooアプリ版

任意の名前がついたテキストボックスがあります。
これをVBAを使い、1つずつ選択することは可能でしょうか?
例えばエクセルのシートだったら
Sheets(1)
みたいな感じで数字も使えますが、アクセスのフォームではできないのでしょうか?
さらに取得していったテキストボックスの値を取得、ということもしたいです。

Access2000です。

A 回答 (4件)

フォーム上のコントロールの種類と名前を取得することができます。



TypeName(ctlObject)が"TextBox"のものがテキストボックスです。
ctlObject.Nameに名前が入ります。

必要なテキストボックスの名前さえわかれば、あとはどうとでもできるか、と思います。

事前にコントロールを貼り付けているなら、フォームロード時に以下を実行するようにしてみてください。


Dim ctlObject As Control

For Each ctlObject In Me.Controls

Debug.Print TypeName(ctlObject), ctlObject.Name

Next
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

For Each ctlObject In Me.Controls

Debug.Print TypeName(ctlObject), ctlObject.Name

Next

読み込み時に入れてみました。
えーと…これでどうなったかを確かめたいのですがどうしたらいいのでしょうか?(><)

またExcelの話に戻ってしまいますが、Excelだと
シート数がいくつあるか取得して
For ... Next
で1から最後までシートの名前を取得、などができますよね。
こんな感じにすることは可能なのでしょうか?

お礼日時:2004/11/23 15:25

VBAでの話しです。

かなり略して表示させます。
フォームがForm1で作成されていると仮定します。
またすでにコントロールの配置も完了していると仮定しています。

1.オブジェクトで[モジュール]を開いてください。
2.「新規作成」を行ってください。
3.左のペイン(ウィンドウ)に[Form_フォーム1]があるのでダブルクリック。
4.右のペインの上にあるコンボ2個の左で、[Form]を選択。
5.右のペインの上にあるコンボ2個の右で、[Load]を選択。
6.[Private Sub Form_Load()]から[End Sub]の間に先のコードを貼り付け。
7.オブジェクトで[フォーム]を開いてください。
8.[Form1]を開いてください。
9.VBE(VBAエディタ
画面の下のペイン[イミディエイト]にコントロールのTypenameとNameが表示されてます。


> こんな感じにすることは可能なのでしょうか?
Debug.Print TypeName(Me.Controls(1)), Me.Controls(1).Name でも名称取得は可能でした。
カッコ内の数字のMAXには注意してくださいね。

この回答への補足

すいません、無事できました。
ありがとうございました。

補足日時:2004/11/23 16:42
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
読み込み解除時にていろいろできそうですので、今いろいろと実験しているところです(^^)
ところでテキストボックスは下記でできたのですが、チェックボックスの場合はどうなるのでしょうか?

お礼日時:2004/11/23 16:33

> これでどうなったかを確かめたいのですがどうしたらいいのでしょうか?(><)



Ctrl+G(イミディエイトウィンドウの表示)をした状態で実行してみてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
無事下に出てきました。
ここで取得したものを他のところで使うにはそのまま使っていいのでしょうか?

それともこれらの値を使用する場合は読み込み時のところで済ませなければならないのでしょうか?

お礼日時:2004/11/23 15:36

txt01


txt02

のような名前になっているのなら

Dim lngIdx As Long

For lngIdx = 1 To 2
  Debug.Print Me.Controls("txt" & Format(lngIdx,"00").Value
Next lngIdx

のように使うことができます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

テキスト1
テキスト2
のようになっているなら
Controls("テキスト" & i)
という方法もあったんですが、
まったくバラバラの名前なんです。
これをどうにかして順番に変数に組み込む、ということは不可能でしょうか?

お礼日時:2004/11/23 14:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!