Excel VBA从另一个UserForm命令按钮刷新UserForm

时间:2016-06-25 20:12:26

标签: excel vba refresh

我目前拥有包含多页面和列表框的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'需要对象。

关于我如何刷新的任何建议?

非常感谢

1 个答案:

答案 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中的更改。可能还有其他方法可以禁用更新,但我非常确定EnableEventsScreenUpdating不在其中。

您应该检查Calculation属性,如果您已将其停用,则强制执行计算Application.Calculate或重新设置属性Application.Calculation = xlCalculationAutomatic