【问题标题】:Excel VBA Refresh a UserForm from another UserForm command buttonExcel VBA 从另一个用户窗体命令按钮刷新用户窗体
【发布时间】:2016-06-25 20:12:26
【问题描述】:

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

关于如何刷新有什么建议吗?

非常感谢

【问题讨论】:

  • Forms! 应该没用...试试UserForm1.ListBox1.RequeryUserForm1.Repaint
  • 非常感谢。我刚刚按照建议更改了结尾部分,我收到“编译错误:找不到方法或数据成员”?
  • 如何填充 UserForm1 列表框?通过“AddItem”还是“RowSource”?在后一种情况下,设置其 RowSource 属性的语句是什么?
  • Private Sub Userform_Initialize ListBox1.RowSource = "Exchange!A2:I" & Range("I" & Rows.Count).End(xlUp).Row 下填充

标签: excel vba refresh


【解决方案1】:

用户窗体 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

【讨论】:

  • 嗨,我已经仔细检查过,计算仍然是自动的。如果在 UserForm1 上添加一个命令按钮UserForm_Initialize,那么一切都会更新。问题是我希望通过 UserForm2 上的关闭按钮(是填写数据的表单)发生这种情况。如果我将UserForm_Initialize 添加到此操作中,我会得到“编译错误:未定义子或函数”
  • @Edd,你能用两个用户表单中的代码更新你的问题吗?我不完全明白你在说什么,看到所有代码会更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多