Excel-VBA: Dynamische Bereich für die ComboBox.Rowsource-Werte nicht angezeigt, wenn die userForm aufgerufen commandbutton
Sollte der Titel einen objektiven überblick über das problem, aber ich bin mit einem dynamischen benannten Bereich für den Einsatz in einem Kombinationsfeld in einem userform. Wenn ich das Formular ausführen, werden die Werte angezeigt wie vorgesehen. Wenn ich ein Modul sub-routine über einen command-button, die Werte werden nicht angezeigt und ich habe keine Ahnung, warum.
Ich werde fügen Sie den gesamten code und markieren Sie die beanstandeten snippet(s) unten:
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
Den dynamischen Bereich wurde erstellt mit dem name manager " und ist unter:
Benannten Bereich: "ListUniqueAccountNames" =OFFSET(CodeMetaData!$J$5,0,0,COUNTA(CodeMetaData!$J$5:$J$5000))
zur besseren übersicht, der code, den ich verwende, um es auszuführen ist unten:
cboAccountNamesComboBox.RowSource = Sheets("CodeMetaData").Range("ListUniqueAccountNames").Address
Die sub-routine aufrufen der userform ist hier:
Public Sub ShowReportSpecsForm()
Load frmReportSpecs
frmReportSpecs.Show
End Sub
Verzeihen Sie mir für die Buchung so viel code, aber ich bin mir nicht sicher, was es genau ist, dass ist der das problem verursacht - ich bin immer noch sehr viel ein rookie mit Formen.
Jede Hilfe wird sehr geschätzt. Danke.
- beim Debuggen, haben Sie
Sheets("CodeMetaData").Range("ListUniqueAccountNames").Address
Werte ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Datensatzherkunft-Eigenschaft, und benannte Bereiche dann würde ich vorschlagen, Einstellung der rowsource-Eigenschaft der combobox ' s zur design-Zeit. Dann Debuggen, wo erforderlich, verwenden Sie:
Diese zurück benannter Bereich-Adresse an das Fenster, wo Sie können überprüfen, dass es richtig ist.
Denken Sie daran, dass die Eigenschaft Adresse von einer benannten dynamic range gibt eine normale statische Adresse.
Beispielsweise Range("ListUniqueAccountNames").Adresse können gibt $J$5:$J$20.
Müssen Sie nicht verwenden, eine Excel-Adresse in RowSource Eigenschaft. Sie können einen Excel-Namen.
Außerdem, wenn Sie ein Userform-Formular, ist es notwendig, aktualisieren Sie die RowSource Eigenschaft von einer ComboBox oder ListBox-Steuerelement, um zu aktualisieren Sie Ihre Werte. (Excel-control nicht zu sehen, wenn die Auswahl oder änderung der Daten)
Aktualisiert werden können, erfolgen im Activate-Ereignis (es wird sofort ausgeführt, bevor form Zeigen, und es wird unten gezeigt) und jeder situation, wo Daten oder eine Reihe Veränderungen.