dポイントプレゼントキャンペーン実施中!

下記のような変数の使い方がAccessVBAでできれば
教えていただきたいと思います。
やりたい事は、変数を利用して、フォームやテーブ
ル等を利用することです。

例.フォーム「名前1」の「ラベル1」のバリューを
「あいうえお」に変更
---------------------
Dim Class As String
'変数に「名前1」を代入
Class = 名前1

'フォーム「名前1」の「ラベル1」の値を変更
Form_Class!ラベル1="あいうえお"
---------------------
というように、変数を利用してフォームやテーブル
を利用したいのです。

実際このようにすると、Form_Class がそのまま
フォーム名ととらえられ、変数として機能しません
でした。

宜しくお願いいたします。

A 回答 (1件)

こんにちは。

maruru01です。

こんな感じでしょうか。適当なSubプロシージャ内として、

Dim FormName As String
Dim LabelName As String
Dim Frm As Form
Dim Ctl As Control

'変数に代入
FormName = "名前1"
LabelName = "ラベル1"

For Each Frm In Forms
  If Frm.Name = FormName Then
    For Each Ctl In Frm.Controls
      If Ctl.Name = LabelName Then
        Ctl.Caption = "あいうえお"
        Exit Sub
      End If
    Next Ctl
  End If
Next Frm

テーブルについてはADOかDAOでレコードセットを作成します。
とりあえず、ADOでテーブルを開く方法は、

Dim TableName As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

TableName = "テーブル1"
Set cn = CurrentProject.Connection
Set rs = New ADODB.RecordSet

rs.Open TableName, cn, adOpenKeyset, adLockOptimistic
・・・・・
(処理)
・・・・・
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

なお、ADOを使用する場合は、VBE画面のメニューの[ツール]→[参照設定]で、
「Microsoft ActiveX Data Objects x.x Library」
(x.xはバージョン)
をチェックして下さい。
では。

この回答への補足

ひとまずフォームの方だけ試させていただきましたが、うまく行きませんでしたので、もう一度具体的に書かせていただきます。

以下-------------------
まず環境として
MainForm があり、その中にTabコントロールがあります。
Tabはそれぞれ
Tab1,Tab2,Tab3....

また、それぞれのTabのなかにフォームが用意されています。
Tab1form,Tab2form,Tab3form....

それぞれのフォーム内にはTextボックス『text』(全て同名)
があります。

したい事が、MainForm上のボタン『変更』を押すと、現在アク
ティブなタブのフォーム内の『text』を変更する。という事です。

フォーム毎に上記を書いていたのでは手間なので、フォーム名を
変数で取得(引数はタブがアクティブになった時等に取得)した
いのです。

【イメージ】左を右のように表記できたら・・・

Form_Tab1form!text="値"
Form_Tab2form!text="値" > Form_変数!text="値"
Form_Tab3form!text="値"

以上、よろしくお願い致します。

補足日時:2002/06/10 12:47
    • good
    • 0

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