2014-01-20 2 views
0

Excel의 워크 시트 값을 기반으로 VBA 폼의 레이블을 업데이트하는 데 어려움이 있습니다. 지금까지 시도한 방법 :Excel VBA 폼 - 셀 값 (디버그)을 기준으로 업데이트 레이블

1 테이크가 : 2

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 

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

'Sheets (1), Cells (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 
관련 문제