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
我有一个 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