VBA 用户窗体文本框滚动从顶部开始

VBA Userform Text Box Scroll Start at top

我有一个 Excel 用户表单,其中包含多个需要滚动条的多行文本框。当我单击文本框进行滚动时,它会从文本底部开始。当用户表单上只有一个文本框发生这种情况时,我使用了这个:

 Userform1.TextBox1.SelStart = 0

一切正常。如果我尝试在同一表单的多个文本框上使用它,则滚动条永远不会出现在任何文本框上。有谁知道如何解决这个问题?

更新:

发现一个怪癖,我帮助缩小了问题的范围:对于多个文本框,selstart=0 在第一个框上工作,但是我需要一个更大的数字来用于下一个文本框的 selstart。例子。下面的代码将滚动条放在两个文本框的顶部。通过双击 sheet 1 显示表单,文本框的值在初始化子中创建。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

 UserForm1.Show

End Sub
--------------
Private Sub UserForm_Initialize()

 UserForm1.TextBox1.Value = Sheets("Sheet1").Cells(1, 1).Value
 UserForm1.TextBox1.SelStart = 0

 UserForm1.TextBox2.Value = Sheets("Sheet1").Cells(2, 1).Value
 UserForm1.TextBox2.SelStart = 200

End Sub

但我只能通过猜测和检查发现textbox2必须从200开始。我不知道如何确定该文本框应该从哪里开始。

我有了突破。如果我使用 SetFocus 然后执行 selstart= 0 一切似乎都有效。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

 UserForm1.Show

End Sub

Private Sub UserForm_Initialize()

 UserForm1.TextBox1.Value = Sheets("Sheet1").Cells(1, 1).Value
 UserForm1.TextBox1.SetFocus
 UserForm1.TextBox1.SelStart = 0

 UserForm1.TextBox2.Value = Sheets("Sheet1").Cells(2, 1).Value
 UserForm1.TextBox2.SetFocus
 UserForm1.TextBox2.SelStart = 0

End Sub