嘗試在Excel上下文中學習VBA。我想從A列中的一系列填充列表框,在Sheet2上(在列一些文本字符串),如下面的代碼VBA iactivate工作表用戶表單
Public Sub Test()
Dim NumTags As Integer
Dim TagString As String
NumTags = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
UserForm1.Show
TagString = "A1:A" & NumTags
'Worksheets("Sheet2").Activate
UserForm1.ListBox1.RowSource = TagString
End Sub
如果我把這個子工作表Sheet1的同時被激活,也不會正確填充列表框,或者至少不是每次。如果我取消註釋該工作表(「Sheet2」)。激活行,一切正常,但它當然切換激活到Sheet2,我不想。
問題:爲什麼?我是否以不正確/破舊的方式填充ListBox?
感謝您的幫助!
這種方法存在問題。 UserForm1之後的三行。Show'不會運行,直到userform被卸載,因爲userform將以模態模式打開;)因此,使用'UserForm_Initialize()'方法是很好的,正如我在下面提到的 –
的確會改變順序,I會建議使用initiallze也取決於circusntances這是可以接受的解決方案。 :) –
+ 1事實上,現在你已經將UserForm1.Show'移動到了末尾:) –