私は、VBAを使用してすべてのテーブルをリストするコンボボックスからテーブルを選択するためのフォームをAccessに用意しています。ユーザーが選択するテーブルに基づいて、フォームに追加する一連のチェックボックスが必要です。各チェックボックスは、選択したテーブルの列を表します。ボタンを押した後にフォームを通じて選択された列で機能するVBA関数があります。Accessのテーブルの列に基づいてフォームにチェックボックスを追加する方法?
ユーザーがテーブルを選択した後、チェックボックスを表示するにはどうすればよいですか?このフォームを将来追加されるテーブルにも適用したいので、事前に列の数を知りません。チェックボックスをUserformに動的に表示させることができますが、Accessでよく使われていないと聞きました。私はまた、一生の間にフォームに追加できるコントロールの量には限界があると聞いています。私はこの制限をヒットしないようにコントロールの名前を変更するとにかくありますか?
これは私がコンボボックスを移入するために使用したコードです:
Private Sub Form_Load()
Dim tbl As DAO.TableDef
Dim db As Database
Set db = CurrentDb
With Me![TableName]
For Each tbl In db.TableDefs
If Not (tbl.name Like "MSys*" Or tbl.name Like "~*") Then
.AddItem tbl.name
End If
Next
End With
End Sub
これは、ユーザーフォームのチェックボックスを生成できるサンプルコードです:
Private Sub RetrieveColumns_Click()
Dim TableName As String
Dim MethodName As String
Dim tdf As DAO.TableDef
Dim rs As Recordset
Dim fld As Field
Dim chkBox As MSForms.CheckBox
TableName = Me![TableName]
Set tdf = dbs.CreateTableDef(TableName)
Set rs = dbs.OpenRecordset(TableName)
With rs
For i = 0 To .Fields.Count - 1
Set chkBox = Me.Controls("Forms.checkbox.1", "CheckBox_" & i)
chkBox.Caption = .Fields(i).name
chkBox.Left = 5
chkBox.Top = 5 + ((i - 1) * 20)
Next i
End With
End Sub
ありがとうございます!私は余分なテーブルを使用するとは思わなかった。 – kaineub