VBA用户表单文本框滚动从顶部开始

时间:2017-03-11 01:08:14

标签: excel vba excel-vba userform

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

 Userform1.TextBox1.SelStart = 0

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

更新

发现了一个怪癖我的帮助缩小了问题:使用多个文本框,selstart = 0适用于第一个框,但是我需要一个更大的数字用于下一个文本框的selstart。例。下面的代码将滚动条放在两个文本框的顶部。通过双击工作表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开始。我不知道如何确定文本框应该从哪里开始。

1 个答案:

答案 0 :(得分:1)

我有一个突破。如果我使用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