c++气泡框提示_VBA学习笔记56:文字框

d31b3ae52566ec55638a2eb7ec821557.png

学习资源:《Excel VBA从入门到进阶》第56集 by兰色幻想


本节讲文字框控件。

一、显示

讲几个常用的属性:

1. 多行显示

MultiLine 属性值为true时,可以多行显示文本。

2. 文本框对齐

左右对齐可以用TextAlign对齐,但上下对齐则没有相应的属性设置。

3. 密码样式

可以设置passwordChar属性来隐藏输入的内容,在passwordChar输入显示的占位符字符, 就会把文本框中实际输入的字符逐一显示为占位符。默认不设置。

7cfc07f5b0f68f694acee7cd4f3b51a8.png

4. 行列超过宽度或高度时添加滚动条

ScrollBars属性可以设置垂直和水平滚动条,有四种常量:

6e0402f20eb2ec55b323b4884852eb79.png

eba43f7d06f4e2b4ff81168e6acd8af2.png
这里把它设置为当文本框内容过多时,同时显示水平和垂直滚动条。

dbb07bc6610be5cbd14a181905e902f0.png

但需注意WordWrap 设置为 True 时,多行控件将不显示水平滚动条,即使设置为显示水平滚动条。

5. 强制换行符号(同时MultiLine 属性也要设置为True,显示多行)

EnterKeyBehavior的属性值为TRUE时,可以强制换行,按回车即可以转到下一行。不设置的话,按回车就会到下一个控件。

如果用代码,可以借用换行符来实现转行。

Private Sub CommandButton1_Click()
  TextBox2 = "excelpx" & Chr(10) & ".com"  'Chr(10)换行符
End Sub

5aef2fc9bd228fcf820258603fcecbf8.gif

二、功能

1. 自动跳到一下个tab顺序的控件

AutoTab属性设置为true,当文字框输入字符数大于设置值MaxLength时,会自动跳转到tab顺序的下一个控件。

例:AutoTab设置为true,MaxLength设置为6,输入超过6个字符,自动跳转到Tab键顺序的下一个控件。

7bd7201858f0f6672147144cf67c5201.gif
(输入太快了,把另外一个属性也展示出来,修改内容会弹出提示)

2. 锁定文本和禁用

Locked属性为true时,显示正常,可以选取,可以复制,但不能编辑。

Enable属性为false时,显示灰色,不能选取。(上一课有讲过)

c801c5ca9f2d79d119ec88b9beafd540.png
Enable设置为True,Locked设置为True,文本框内容可以复制不可编辑。

b5f3e5ee3bb96c03c1bb385bad790b42.png
Locked运行的效果,可以选取它内容,按ctrl+C复制

8766d09854b688e5d8e24bc0e49201b9.png
只要Enable设置为False,文本框就显示灰色,且不能选取

5d1a2af752d971ff67806202d97ae735.png
文本框显示灰色,不能选取

3. 是否允许拖放复制值

DragBehavior 属性值为1时,可以进行拖放。默认不可以,属性值为0。

ffcd8611e13d7a46f285dcd321059bd3.gif

三、 常用方法和属性(写代码用)

1. lineCount属性:获得文本框的行数。

2. SelLength属性:可以获得当前文本框中选取的文本长度。

3. SelText属性:可以获得当前文本框中选取的文本。

4. SetFocus属性:获得焦点。

5. SelStart属性:可以获得当前文本框中选取文本的插入点。

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox2 = TextBox3.SelLength & ":" & TextBox3.SelText & ":" & TextBox3.SelStart
End Sub

226db8b1003270427598efbe31a27f81.png
选中“enable”,SelLength=6,SelText=“enable”,Selstrart=2

四、 事件

1. 当文本框值发生改变量时的事件

Private Sub 用户名_Change()   '修改用户名文本框就会弹出提示。
   MsgBox "你已修改用户名。"
End Sub

2. 当离开文本框时,如果数据发生了改变,则发生此事件。

Private Sub TextBox1_AfterUpdate()   '修改TextBox1文本框并离开就会弹出提示。
    MsgBox "已保存修改后的数据。"
End Sub

3. 焦点进入文本框时的事件

Private Sub 用户名_Enter()    '点击进入用户名文本框就会弹出提示。
    MsgBox "请填写用户名。"
End Sub

4. 离开文本框时的事件

例1:必须输入用户名,否则不准离开。

Private Sub 用户名_Exit(ByVal Cancel As MSForms.ReturnBoolean)  

If 用户名.Text = "" Then
    Cancel = True
    MsgBox "你没有输入用户名,不能跳过" & Chr(10) & "请输入内容"
End If

End Sub

注意:Cancel参数常用于取消该事件的发生,本事件是指取消离开动作,禁止离开。

88d1337e51b1bf958e3cc68b7bdd4ed2.gif
试图离开,点击其他文本框,会弹出提示阻止离开。

例2:密码必须输入数字,否则不准离开重新输入。

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)  
   If Not VBA.IsNumeric(TextBox1.Value) And TextBox1.Value <> "" Then
      Cancel = True
      MsgBox "密码只能输入数字,请重新输入"
    End If
 End Sub

72d54511e1a432f6d017cc7a506fe548.gif

五、综合实例

设计一个入库登记窗体,记录入库日期、商品名称、数量、单价和金额。

其中:

  1. 打开窗体,自动填入当前日期。(窗体初始化事件)
  2. 输入数量自动计算金额(控件Change事件)
  3. 按回车或焦点离开后并将这条记录记入数据库。(控件Exit事件)
  4. 通过商品名称,查找并返回其单价(字典),如输入不存在的商品名称,就返回提示,阻止离开并需重新输入。(控件Exit事件)
Option Explicit
Dim d As Object '定义全局变量d,字典

Private Sub UserForm_Initialize()'窗体初始化事件
Dim arr, x
 日期 = Date '自动填入当前日期
'用字典记录商品名称及其单价
 Set d = CreateObject("scripting.dictionary")
 arr = Sheets("sheet3").Range("G2:H4")
 For x = 1 To UBound(arr)
   d(arr(x, 1)) = arr(x, 2)
 Next x
End Sub

Private Sub 数量_Exit(ByVal Cancel As MSForms.ReturnBoolean) '离开数量后就自动输入到单元格中
Dim myrow As Long, x
If VBA.IsNumeric(数量.Value) Then      
    With Sheets("sheet3")
        myrow = .Range("a65536").End(xlUp).Row + 1
        .Cells(myrow, 1) = 日期
        .Cells(myrow, 2) = 商品
        .Cells(myrow, 3) = 数量.Value
        .Cells(myrow, 4) = 单价.Value
        .Cells(myrow, 5) = 金额.Value
    End With    
    商品 = ""
Else
    MsgBox "数量不能为非数字,请重新输入"
    Cancel = True
End If
End Sub

Private Sub 商品_Exit(ByVal Cancel As MSForms.ReturnBoolean) '根据商品查找单价
If d.Exists(商品.Value) Then
    单价 = d(商品.Value)
Else
    MsgBox "该商品单价不存在,请重新输入"
    Cancel = True
End If
End Sub

Private Sub 数量_Change() '输入数量后自动计算金额
If VBA.IsNumeric(数量.Value) Then
    金额 = 数量 * 单价
End If
End Sub

bdb427e3073710653b55db12a35af647.gif
(蓝色框的是商品名称和单价,字典数据来源。悬浮在左上角的透明框是按键显示。)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值