2011-07-23 20 views
0

稱爲標題應該給這個問題一個公平的概述,但。當我運行表單時,這些值按預期顯示。當我通過命令按鈕調用模塊子例程時,值不會出現,我不知道爲什麼。Excel的VBA:動態範圍ComboBox.Rowsource值我正在爲一個窗體在組合框中使用動態範圍命名時不顯示用戶窗體命令按鈕

我會粘貼所有的代碼,並突出以下違規片段(S):

Private Sub btnGetGAToken_Click() 
'-------------------------------- 
'Obtain API Token from Google Analytics (GA), indicate to user that token has been obtained and populate Account combobox 
'with a unique list of accounts, which will in turn populate the Profile combobox with the profiles associated with the chosen 
'account 
'-------------------------------- 

Dim txtEmailField As String 
Dim txtPasswordField As String 

'Values written to sheet for use in UDFToken and UDFGetGAAcctData array formulas 
Range("FieldEmail").Value = Me.txtEmailField.Text 
Range("FieldPassword").Value = Me.txtPasswordField.Text 

Range("GAToken").Calculate 

With Me.lblGATokenResponseField 
    .Caption = Range("GAToken").Value 
    .ForeColor = RGB(2, 80, 0) 
End With 

Call FindUniqueAccountNames 

cboAccountNamesComboBox.RowSource = Sheet1.Range("ListUniqueAccountNames").Address 

End Sub 

Private Sub cboAccountNamesComboBox_Change() 

'Value written to sheet for use in the 'ListProfileNames' dynamic, named range 
Range("ChosenAccount").Value = Me.cboAccountNamesComboBox.Value 

With Me.cboProfileNamesComboBox 
    .Value = "" 
    .RowSource = Sheets("CodeMetaData").Range("ListProfileNames").Address 
End With 

End Sub 

動態範圍使用名稱管理器創建和低於:

命名範圍:「ListUniqueAccountNames」 = OFFSET(!CodeMetaData附加$ J $ 5,0,0,COUNTA(CodeMetaData附加$ J $ 5:!附加$ J $ 5000))

和便於參考,我使用的運行它的代碼如下:

cboAccountNamesComboBox.RowSource = Sheets("CodeMetaData").Range("ListUniqueAccountNames").Address 

的子程序調用用戶窗體是在這裏:

Public Sub ShowReportSpecsForm() 

Load frmReportSpecs 
frmReportSpecs.Show 

End Sub 

原諒我張貼了這麼多的代碼,但我不知道它到底是什麼是造成這個問題 - 我仍然非常有形式的新手。

任何幫助將不勝感激。謝謝。

+0

調試時,你是否檢查'Sheets(「CodeMetaData」)。Range(「ListUniqueAccountNames」)。Address' values? – JMax

回答

2

如果您使用的是行來源屬性和指定範圍那麼我會建議設置的組合框的在設計時行源屬性。然後調試所需的地方使用:

Debug.Print Range("ListUniqueAccountNames").Address 

這將返回命名範圍地址眼前的窗口,您可以檢查它是否正確。

0

請記住,財產地址從名爲動態範圍返回正常的靜態地址。

例如,範圍( 「ListUniqueAccountNames」)地址可以返回$ $Ĵ5:$ $Ĵ20

你不需要在行來源財產使用Excel的地址。您可以使用Excel名稱。

此外,當您顯示用戶窗體時,需要刷新組合框或列表框控件中的RowSource屬性以更新其值。 (Excel中控制不看,如果範圍或數據更改)刷新

可以激活事件內進行(它會立即運行條件顯示之前,它是如下所示),任何情況下的數據或範圍的變化。

Private Sub UserForm_Activate() 
    Me.cboAccountNamesComboBox.RowSource = "" 
    Me.cboAccountNamesComboBox.RowSource = "ListUniqueAccountNames" 
End Sub