来自工作簿单元格的Excel VBA实时UserForm标签

时间:2018-10-25 13:12:57

标签: excel label userform

我有一个名为“ DisplaySummaryForm”的用户窗体,它旨在显示有关正在计算的项目的实时信息。我有标签来显示工作表单元格中的值。现在,我必须一直重新打开UserForm才能更新我的值。如何一直更新它们?因此,它们在打开的用户窗体中被称为“相对时间”吗?

用于打开用户窗体的按钮:

Sub DisplaySummary()

DisplaySummaryForm.Show vbModless

End Sub

用户窗体代码:

Private Sub CommandButton1_Click()

Unload Me

End Sub
Private Sub UserForm_Initialize()

Controls("Label11").Caption = ThisWorkbook.Sheets("MAIN").Range("D11").value
Controls("Label12").Caption = ThisWorkbook.Sheets("MAIN").Range("D14").value

Me.TextBox2.value = ThisWorkbook.Sheets("Price calculation").Range("I148").value

Controls("Label14").Caption = ThisWorkbook.Sheets("Price calculation").Range("Q148").value
Controls("Label15").Caption = ThisWorkbook.Sheets("Price calculation").Range("Q148").value
Controls("Label18").Caption = ThisWorkbook.Sheets("Price calculation").Range("Q148").value
Controls("Label16").Caption = ThisWorkbook.Sheets("Price calculation").Range("Q148").value
Controls("Label17").Caption = ThisWorkbook.Sheets("Price calculation").Range("Q148").value
Controls("Label20").Caption = ThisWorkbook.Sheets("Price calculation").Range("Q148").value
Controls("Label22").Caption = ThisWorkbook.Sheets("Price calculation").Range("Q148").value
End Sub

2 个答案:

答案 0 :(得分:0)

我相信Excel中没有这样的选项可以自动更新Userforms中的值,但是当使用以下代码对单元格进行更新时,可以根据需要进行稍微的修改来卸载和加载 DisplaySummaryForm

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("Q148")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
       Is Nothing Then

    ' Display a message when one of the designated cells has been 
    ' changed.
    ' Place your code here.
    MsgBox "Cell " & Target.Address & " has changed."
End If
End Sub

Reference输入上述代码

答案 1 :(得分:0)

感谢大家。我想出了这个解决方案:

Private Sub Worksheet_Calculate()
    Dim KeyCell1 As Range
    Dim KeyCell2 As Range
    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCell1 = Range("Q148")
    Set KeyCell2 = Range("Q149")
    Set KeyCell3 = Range("Q150")
    Set KeyCell4 = Range("Q151")
    Set KeyCell5 = Range("Q152")
    Set KeyCell6 = Range("Q156")
        ' Display a message when one of the designated cells has been
        ' changed.
        DisplaySummaryForm.Controls("Label14").Caption = Format(KeyCell1.Value, "#,##0.00")
        DisplaySummaryForm.Controls("Label15").Caption = Format(KeyCell2.Value, "#,##0.00")
        DisplaySummaryForm.Controls("Label16").Caption = Format(KeyCell3.Value, "#,##0.00")
        DisplaySummaryForm.Controls("Label17").Caption = Format(KeyCell4.Value, "#,##0.00")
        DisplaySummaryForm.Controls("Label18").Caption = Format(KeyCell5.Value, "#,##0.00")
        DisplaySummaryForm.Controls("Label20").Caption = Format(KeyCell6.Value, "#,##0.00")
End Sub