我在Access中有一個表單,允許用戶從列出使用VBA的所有表格的組合框中選擇一個表格。根據用戶選擇的表格,我希望將一組複選框添加到表單中。每個複選框將代表所選表格中的一列。我有一個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