2015-04-03 83 views
0

我是VBA和Microsoft Access的新手。我已經閱讀了關於這個主題的幾篇文章,但無法弄清楚我做錯了什麼。或者如果我可能缺少參考?我想幾個組合框添加到一個數組,然後再用該數組做各種各樣的事情一樣讓它們可見或不可見等Microsoft Access VBA 2010如何創建組合框和數組?

我一直在努力的代碼是這樣的 - 我一直在使用控制,AccessObject嘗試,組合框的數組類型和獲取:對象變量或塊變量未設置 - 任何想法我做錯了什麼?

Private Sub Form_Load() 

Dim arrayComboBox(3) As Control 

Set arrayComboBox(0) = Me.cmbTourStops1 
Set arrayComboBox(1) = Me.cmbTourStops2 

arrayComboBox(0).Visible = False 
arrayComboBox(1).Visible = True 

End Sub 

謝謝!

+0

歡迎來到堆棧溢出。我將你的代碼粘貼到我自己的窗體模塊中,並將* cmbTourStops *名稱更改爲與我的相匹配。該代碼在Access 2010中運行時沒有錯誤,並且它符合我的想法。我不明白爲什麼它會爲你拋出一個錯誤。你能分享你的數據庫的副本嗎? – HansUp 2015-04-03 22:22:00

+0

嗨@HansUp我似乎無法像下面描述的那樣訪問數組值來進行更改。謝謝你的文章。 – Laura 2015-04-06 18:31:46

回答

0

您的組合框的數組應該在表單級別聲明,即在模塊的頂部和任何子例程或函數的外部。這樣它就可以在你的表單代碼中看到所有的例程。此外,您可以使您的例程更一般(減少對特定控件名稱的依賴)。見下:

Option Compare Database 
Option Explicit 

Private arrayComboBox() As ComboBox 

Private Sub Form_Load() 
    Dim howMany, i As Integer 
    Dim ctl As Control 
    Dim cbo As ComboBox 

    '--- count how many ComboBoxes we have on this form 
    howMany = 0 
    For Each ctl In Me.Form.Controls 
     If ctl.ControlType = acComboBox Then 
      howMany = howMany + 1 
     End If 
    Next ctl 

    '--- now properly size the array and store the 
    ' controls 
    If howMany > 0 Then 
     Debug.Print "we found " & howMany & " ComboBoxes on the form" 
     ReDim arrayComboBox(1 To howMany) As ComboBox 
     i = 1 
     For Each ctl In Me.Form.Controls 
      If ctl.ControlType = acComboBox Then 
       Set arrayComboBox(i) = ctl 
       Debug.Print "added " & ctl.Name 
      End If 
     Next ctl 
    End If 
End Sub