Accessマクロにて、複数テーブルで共通のレコード追加フォームの作成を試みています。
その動作の一環として、テーブル名を持つコンボボックスを用意し、選択テーブルの列情報に準拠して、入力欄(ラベル:テキストボックスの組合せ)をフォーム内に設けるようにしようと考えています。
※コンボボックスが空文字の場合は入力欄全削除。
例)
コンボボックス:"テーブルA"選択
テーブルAフィールド:ID、名前、性別、学校名
フォーム配置コントロール:
(Label)ID: textbox
(Label)名前: textbox
(Label)性別: textbox
(Label)学校名: textbox
コントロール配置に向けたコード
VBA
1Private Sub AddTableNameChange_Change() 2 Me.AddTableNameChange.SetFocus 3 4 Dim control As control 5 6 If "" = Me.AddTableNameChange.Text Then 7 For Each control In Me.Controls 8 If コンボボックス名 <> control.Name Then 9 DeleteControl Me.Name, control.Name 10 End If 11 Next 12 Exit Sub 13 End If 14 15 Dim dbs As Database 16 Dim td As TableDef 17 Dim myField As field 18 Dim AddLBControl, AddTBControl As control 19 Dim AddPosY As Integer 20 21 Set dbs = CurrentDb 22 Set td = dbs.TableDefs(Me.AddTableNameChange.Text) 23 24 AddPosY = 100 25 For Each myField In td.Fields 26 'コントロール名、ラベル値、各サイズ、位置については、配置できるようになってから調整予定。 27 Set AddLBControl = CreateControl(Me.Name, acLabel, , , "", 30, AddPosY, 50, 50) 28 Set addtbconstrol = CreateControl(Me.Name, acCommandButton, , , "", 30, AddPosY, 50, 50) 29 AddPosY = AddPosY + 30 30 Next 31 32End Sub
上記のコードを実行すると、
Set AddLBControl = CreateControl(Me.Name, acLabel, , , "", 30, AddPosY, 50, 50)
で「コントロールの作成と削除は、デザインビューまたはレイアウトビューで行います。」のエラーになります。
別のビューに開きなおせばいい、と考え、
DoCmd.OpenForm Me.Name, acDesign
を足してみたところ、「別のビューに切り替えることはできません。」のエラーになります。
質問
やりたいこととしては、フォーム内のコントロールイベント内で、そのフォーム内のコントロール操作になりますが、これは可能なのでしょうか。
可能でしたら、方法をご教授頂ければと思います。
開発環境
Microsoft Access 2010

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/26 10:28
2019/06/26 10:29
2019/06/26 12:02
2019/06/27 02:10
2019/06/27 07:47
2019/06/28 01:40
2019/06/28 02:25