我有一张举重举行的工作表。去年我创建了一个标签,可以提供当前升降机的信息以及接下来的人员。
left side - Display, right side - input tab
当我输入" x"在数据选项卡的R,S,T或W列中,它会更改BenchGenerator选项卡中的信息,如下所示:
我想要做的是让用户表单显示在不同的屏幕上运行,以便人们可以看到这些信息。我去年通过扩展excel和使用两个视图窗口完成了这一点 - 在第二个屏幕上显示并在计算机上运行会议。这很好,但看起来非常笨重。使用浮动用户表单选项卡,它看起来很棒。我是新手,但得到了表格浮动:
Private Sub Worksheet_Change(ByVal Target As Range)
UserForm1.Show (vbModeless)
End Sub
最初填充标签:
使用此代码:
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"时,它目前所做的是更新字幕。在数据选项卡中。
正如我所提到的,这是我第一次尝试进入用户形态,并通过大量代码试图解决这个问题,但它不会是我的最后一步,因为有很多东西要用它们完成。
提前感谢您的帮助!
答案 0 :(得分:1)
你非常接近让这个工作。问题是每次发生变化时都要调用新表单。
将您的表单声明为创建(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
答案 1 :(得分:0)