excel - 在不同的工作表上输入时更改从一个工作表派生的用户表单标签

标签 excel dynamic userform labels vba

我有一个运行举重比赛的工作表。去年,我创建了一个标签,提供有关当前举重者和下一个举重者的信息。

left side - Display, right side - input tab

当我在数据选项卡上的 R、S、T 或 W 列中输入“x”时,它会更改 BenchGenerator 选项卡中的信息,如下所示:

Updated Display tab

我想要做的是让用户窗体显示在不同的屏幕上运行,以便人们可以看到这些信息。去年,我通过扩大 Excel 并使用两个 View 窗口(在第二个屏幕上显示并在计算机上运行 session )实现了这一点。没关系,但看起来很笨重。使用 float 用户表单选项卡,它看起来很棒。我对此并不陌生,但表格 float :

Private Sub Worksheet_Change(ByVal Target As Range)
UserForm1.Show (vbModeless)
End Sub

并得到最初填充的标签:

Userform Display

使用此代码:
Private Sub UserForm_Activate()
UserForm1.Label1.Caption = Sheets("BenchGenerator").Range("c4").Value
UserForm1.Label2.Caption = Sheets("BenchGenerator").Range("c5").Value
UserForm1.Label3.Caption = Sheets("BenchGenerator").Range("c6").Value
UserForm1.Label4.Caption = Sheets("BenchGenerator").Range("d3").Value
UserForm1.Label5.Caption = Sheets("BenchGenerator").Range("d4").Value
UserForm1.Label6.Caption = Sheets("BenchGenerator").Range("d5").Value
UserForm1.Label7.Caption = Sheets("BenchGenerator").Range("d6").Value
End Sub

它目前不做的是当我在数据选项卡中输入“x”时更新标题。

正如我所提到的,这是我第一次涉足用户表单并通过大量代码试图弄清楚这一点,这不会是我的最后一次,因为有很多事情要做。

提前感谢您的帮助!

最佳答案

你已经很接近让这个工作了。问题是每次发生更改时您都会调用一个新表单。

将您的表单声明为 Sub 之外的对象创建(Show)它。

然后您可以访问它以更新另一个 Sub 的标签。具有相同的范围。

创建 UpdateForm例如,从您的 Worksheet_Change 调用它事件。

试试这个,将以下代码放在一个新的模块中:

Dim myForm As Object

Sub launchForm()
    Set myForm = UserForm1
    myForm.Show (vbModeless)
End Sub

Sub updateForm()
    Dim wks As Worksheet
    Set wks = Sheets("BenchGenerator")

    'Update label values here
    myForm.Label1.Caption = wks.Range("C4").Value
    myForm.Label2.Caption = wks.Range("C5").Value
    myForm.Label3.Caption = wks.Range("C6").Value
    myForm.Label4.Caption = wks.Range("D3").Value
    myForm.Label5.Caption = wks.Range("D4").Value
    myForm.Label6.Caption = wks.Range("D5").Value
    myForm.Label7.Caption = wks.Range("D6").Value
End Sub

如果您使用 Worksheet_Change要更新表单,您需要验证表单是否存在,或者如果不存在则跳过事件中的任何错误。
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    updateForm
End Sub

关于excel - 在不同的工作表上输入时更改从一个工作表派生的用户表单标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49693596/

相关文章:

javascript - Modal moSTLy 保持立即退出

c# - 在类中存储不同泛型类型的列表

python - Excel 导入 - 由文件路径/文件名引起的错误

excel - 如何从 Excel 中获取单元格超链接地址?

excel - 如何将单元格的文本内容分配给 Excel VBA 中的变量?

c# - 参数数量未知的动态Where子句

excel - 无效的外部过程

excel - 将用户表单导入 VBComponents 后,无法读取属性

excel-vba-用户窗体-框架-设置滚动条位置

vba - 如何在 VBA 应用程序中隐藏代码