我目前拥有包含多页面和列表框的UserForm1。列表框实际上显示了excel表单本身的一系列数据。
我已将Userform2设置为弹出窗口,以填充添加到Excel工作表的信息,然后在Userform1的列表框中移位。
本质上,用户导航到列表框,单击命令按钮,弹出窗口,用户完成信息,点击"确定"然后它会显示在列表框中。
我遇到的问题是,当用户点击"确定"时,我无法刷新列表框。
我在" ok"中的代码命令按钮是:
Private Sub CommandButton1_Click()
Dim LastRow As Long, ws As Worksheet
Set ws = Sheets("Exchange")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1
ws.Range("A" & LastRow).Value = TextBox1.Text
ws.Range("B" & LastRow).Value = TextBox2.Text
ws.Range("F" & LastRow).Value = TextBox3.Text
ws.Range("G" & LastRow).Value = TextBox4.Text
ws.Range("E" & LastRow).Value = TextBox5.Text
ws.Range("H" & LastRow).Value = ComboBox1.Text
UserForm2.Hide
Forms!UserForm1.ListBox1.Requery
Forms!UserForm1.Repaint
End Sub
我目前收到运行时错误' 424'需要对象。
关于我如何刷新的任何建议?
非常感谢
答案 0 :(得分:0)
用户表单ListBox
没有Requery
属性。如果您已将Row Source
属性设置为范围地址,那么每当工作表重新计算时,ListBox
中的值都会更新。
以下代码显示了这一点:
Const ADDR As String = "A1:A5"
Sheet1.Range(ADDR).Value = WorksheetFunction.Transpose(Array(1, 2, 3, 4, 5))
UserForm1.Show False
UserForm1.ListBox1.RowSource = ADDR
Application.Calculation = xlCalculationManual
Sheet1.Range("A5").Value = 6
MsgBox "Ready to see change in listbox."
Application.Calculate
如果您已禁用自动计算,那么您将无法看到ListBox
中的更改。可能还有其他方法可以禁用更新,但我非常确定EnableEvents
和ScreenUpdating
不在其中。
您应该检查Calculation
属性,如果您已将其停用,则强制执行计算Application.Calculate
或重新设置属性Application.Calculation = xlCalculationAutomatic
。