2015-12-30 32 views
0

所以我有一個用戶窗體上的listbox1。當用戶單擊列表框中的項目時,我有工作表上的列表框選擇的值填充單元格C20。Excel VBA列表框顯示新選擇後的上一條記錄

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,工作表將重新計算超過30範圍的數據與基於在小區C20這一個值的公式。 這30個數據範圍被編碼以將其新值傳輸到包含在用戶表單中的標籤標題上。

發生了什麼是窗體將正確初始化,但是一旦爲新選擇選擇了列表框,用戶窗體上的所有值都顯示屬於上一個選擇的值,但是在工作表上公式正在計算正確地說,只是新值並沒有用正確的信息填充用戶表單上的標籤標題。我試圖通過在工作表模塊和表單本身中使用更改事件和單擊事件來解決這個問題,但沒有成功。我無法解決這個問題。每次點擊時,顯示的數據都會顯示上一條記錄。

爲ListBox更改事件代碼:

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 

是否有人可以幫助這一點?什麼做錯了?有沒有索引屬性我不參考?先謝謝你!

回答

0

已解決。運行的所有程序之前,插入下面的代碼放到列表框的Click事件:

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

謝謝所有誰提出來查看我的帖子的努力。

新年快樂。