首页 > 解决方案 > 更新用户表单标签 Worksheet_Calculate 和每次打开用户表单

问题描述

我有用户表单,其中有标签,每次我在工作表“价格计算”上进行更改时都会更新这些标签。除了我关闭用户窗体然后再次打开它的情况外,一切似乎都运行良好。那么所有标签都是空的。如果我在打开用户表单时转到我的工作表“价格计算”并在那里进行更改,我将再次获取用户表单的值。如何在用户表单打开时更新标签?

这是我的工作表“价格计算”的代码:

Private Sub Worksheet_Calculate()

Dim Ws As Worksheet

Set Ws = ThisWorkbook.Sheets("Price calculation")

Summary.Controls("Label630").Caption = Ws.Range("I1850").Value
Summary.Controls("Label635").Caption = Ws.Range("I1850").Value
Summary.Controls("Label634").Caption = Ws.Range("I1854").Value
Summary.Controls("Label633").Caption = Ws.Range("I1855").Value
Summary.Controls("Label632").Caption = Ws.Range("I1856").Value
Summary.Controls("Label631").Caption = Ws.Range("I1860").Value

End Sub

用户表单打开:

Sub DisplaySummary()

Summary.Show (vbModeless)

End Sub

标签: excelvba

解决方案


使用Prive Sub Userform_Initialize()您在用户窗体打开时设置您想要的标签。如下所示:

Private Sub Userform_Initialize()

   Dim Ws As Worksheet

   Set Ws = ThisWorkbook.Sheets("Price calculation")

   Me.Controls("Label630").Caption = Ws.Range("I1850").Value
   Me.Controls("Label635").Caption = Ws.Range("I1850").Value
   Me.Controls("Label634").Caption = Ws.Range("I1854").Value
   Me.Controls("Label633").Caption = Ws.Range("I1855").Value
   Me.Controls("Label632").Caption = Ws.Range("I1856").Value
   Me.Controls("Label631").Caption = Ws.Range("I1860").Value

   Set Ws = Nothing

End Sub

推荐阅读