【问题标题】:Excel VBA Listbox showing previous record after new selection is made做出新选择后,Excel VBA 列表框显示以前的记录
【发布时间】:2015-12-30 20:58:51
【问题描述】:

所以我在用户表单上有 listbox1。当用户单击列表框中的项目时,我将列表框选择的值填充到工作表上的单元格 C20。

Private Sub frmListBox1_Click()
Worksheets("CONTROLSRFDS").Range("C20").Value = frmListBox1.Value

For i = 1 To 53 ' Non Multipage Controls
    Me.Controls("Label" & i).Caption = Worksheets("CONTROLSRFDS").Range("RBSLabels").Cells(i, 1).Value
    Me.Controls("TextBox" & i).Value = Worksheets("CONTROLSRFDS").Range("RBSOutput").Cells(i, 1).Value
Next i

End Sub

根据现在在单元格 C20 中的选择,工作表将使用基于单元格 C20 中的这一值的公式重新计算 30 多个数据范围。 这 30 个数据范围被编码以将它们的新值传输到包含在用户表单中的标签标题上。

发生的情况是表单将正确初始化,但是一旦选择列表框进行新选择,用户表单上的所有值都会显示属于先前选择的值,但是在工作表上,公式计算正确,只是新值没有用正确的信息填充用户表单上的标签标题。我试图通过在工作表模块和表单本身中使用更改事件和单击事件来解决这个问题,但没有成功。我无法解决这个问题。每次点击,显示的数据都会显示上一条记录。

列表框更改事件的代码:

Private Sub frmListBox1_Change()

If Application.CalculationState = done Then

Worksheets("CONTROLSRFDS").Range("C20").Value = frmListBox1.Value

For i = 1 To 53 ' Non Multipage Controls
Me.Controls("Label" & i).Caption = Worksheets("CONTROLSRFDS").Range("RBSLabels").Cells(i, 1).Value
Me.Controls("TextBox" & i).Value = Worksheets("CONTROLSRFDS").Range("RBSOutput").Cells(i, 1).Value
Next i

ii = 1 'Antenna Labels
For i = 54 To 75
Me.Controls("Label" & i).Caption = Worksheets("CONTROLSRFDS").Range("AntennaLabels").Cells(ii, 1).Value
        ii = ii + 1
Next i
End If
End sub

有人可以帮忙吗?做错了什么?是否有我没有引用的索引属性?提前谢谢!

【问题讨论】:

    标签: forms excel listbox vba


    【解决方案1】:

    解决了。在运行所有程序之前,将以下代码插入到列表框的单击事件中:

    Application.Calculate
    If Not Application.CalculationState = xlDone Then
        DoEvents
    End If
    

    感谢所有努力查看我帖子的人。

    新年快乐。

    【讨论】:

      猜你喜欢
      • 2013-02-03
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      相关资源
      最近更新 更多