【发布时间】: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
有人可以帮忙吗?做错了什么?是否有我没有引用的索引属性?提前谢谢!
【问题讨论】: