第6章 控件与用户窗体代码【超实用VBA】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章控件与用户窗体
范例67 文本框只能输入数值
Private Sub TextBox1_KeyPress(ByVal KeyANSI As MSForms.ReturnInteger) With TextBox1
Select Case KeyANSI
Case Asc("0") To Asc("9")
Case Asc("-")
If InStr(1, .Text, "-") > 0 Or .SelStart > 0 Then
KeyANSI = 0
End If
Case Asc(".")
If InStr(1, .Text, ".") > 0 Then KeyANSI = 0
Case Else
KeyANSI = 0
End Select
End With
End Sub
Private Sub TextBox1_Change()
Dim i As Integer
Dim Str As String
With TextBox1
For i = 1 To Len(.Text)
Str = Mid(.Text, i, 1)
Select Case Str
Case ".", "-", "0" To "9"
Case Else
.Text = Replace(.Text, Str, "")
End Select
Next
End With
End Sub
范例68 限制文本框的输入长度
Private Sub TextBox1_Change()
TextBox1.MaxLength = 6
End Sub
范例69 验证文本框输入的数据
Private Sub CommandButton1_Click()
With TextBox1
If (Len(Trim(.Text))) = 15 Or (Len(Trim(.Text))) = 18 Then
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = .Text
Else
MsgBox "身份证号码错误,请重新输入!"
End If
.Text = ""
.SetFocus
End With
End Sub
范例70 文本框回车自动输入
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim r As Integer
r = Cells(Rows.Count, 1).End(xlUp).Row
With TextBox1
If Len(Trim(.Text)) > 0 And KeyCode = vbKeyReturn Then
Cells(r + 1, 1) = .Text
.Text = ""
End If
End With
End Sub
范例71 文本框的自动换行
Private Sub UserForm_Initialize()
With TextBox1
.WordWrap = True
.MultiLine = True
.Text = "文本框是一个灵活的控件,受下列属性的影响:Text、" _
& "MultiLine、WordWrap和AutoSize。" & vbCrLf _
& "Text 包含显示在文本框中的文本。" & vbCrLf _
& "MultiLine 控制文本框是单行还是多行显示文本。" _
& "换行字符用于标识在何处结束一行并开始新的一行。" _
& "如果MultiLine 的值为False,则文本将被截断," _
& "而不会换行。如果文本的长度大于文本框的宽度," _
& "WordWrap允许文本框根据其宽度自动换行。" & vbCrLf _
& "如果不使用WordWrap,当文本框在文本中遇到换行字符时," _
& "开始一个新行。如果关闭WordWrap,TextBox中可以有不能" _
& "完全适合其宽度的文本行。文本框根据该宽度,显示宽度以" _
& "内的文本部分,截断宽度以外的那文本部分。只有当" _
& "MultiLine为True时,WordWrap才起作用。" & vbCrLf _
& "AutoSize 控制是否调节文本框的大小,以便显示所有文本。" _
& "当文本框使用AutoSize 时,文本框的宽度按照文本框中的" _
& "文字量以及显示该文本的字体大小收缩或扩大。"
End With
End Sub
范例72 格式化文本框数据
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox1 = Format(TextBox1, "##,#0.00")
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox2 = Format(TextBox2, "##,#0.00")
End Sub
范例73 使控件始终位于可视区域
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng As Range
Set rng = ActiveWindow.VisibleRange.Cells(1)
With CommandButton1
.Top = rng.Top
.Left = rng.Left
End With
With CommandButton2
.Top = rng.Top
.Left = rng.Left + CommandButton1.Width