2014-01-20 112 views
0

我很難根據Excel中的工作表值更新VBA表單中的標籤。 到目前爲止,我已經試過的方法:Excel VBA表單 - 基於單元格值更新標籤(調試)

1日採取:

Sub Update_Label_FirstTime() 
Label1.Caption = Sheets(1).Cells(1, 1) 
End Sub 
'Whenever I call the Macro for a second time It fails and VBA freezes my form 

2日以

Private Sub UserForm_Activate() 
call Update_Label 
End Sub 

Sub Update_Label() 
Label1.Caption = Sheets(1).Cells(1, 1) 
Application.OnTime Now() + TimeValue("00:00:01"), "Update_Label" 
End Sub 
' also tried Controls("Label1").Caption = Sheets(1).Cells(1, 1).Value 

這些都是存儲和用戶窗體代碼中運行。兩個代碼都可以在第一次加載/呼叫時正常工作,但是都會在我第二次給他們打電話時破壞我的表單。 每次我要求進行這些更新時(在加載初始值之後),表單凍結,彈出窗口中的VBA窗口沒有任何代碼高亮顯示或錯誤消息

我以前使用過這些方法,並且沒有這樣的問題。 有什麼想法?

+0

我猜'''是'表格(1),單元格(1,1).Value'中的拼寫錯誤你還從哪裏調用這段代碼? –

+0

更新了這篇文章,這些宏被存儲並從UserForm代碼中運行。 – Takedasama

+0

我希望標籤每秒刷新一次(更正了應該有UpdateLabel2的宏),讓它自己回憶它。問題是標籤不會在VBA凍結的第二次調用時更新。 – Takedasama

回答

0

嘗試將Update_Label移動到標準模塊。

您將需要引用代碼中的表單。您可能還想在獲取單元格值之前重新計算。

Sub Update_Label() 
    Dim rng As Range 
    Set rng = Sheets(1).Cells(1, 1) 
    rng.Calculate 
    UserForm1.Label1.Caption = rng 
    Application.OnTime Now() + TimeValue("00:00:01"), "Update_Label" 
End Sub 
相關問題