他山之石——VBA文本框

继续学习VBA!

'**********************文字框控件***************
'一 显示
  '1 多行显示
     'MultiLine 属性值为true时,可以多行显示文本
  '2 文本框对齐
     '左右对齐可以用TextAlign对齐,但上下对齐则没有相应的属性设置
  '3 密码样式
     '可以设置passwordChar属性来隐藏输入的内容
  '4 行列超过宽度或高度时添加滚动条
     'ScrollBars 属性可以设置垂直和水平滚动条
  '5 强制换行符号
     'EnterKeyBehavior的属性值为TRUE时,可以强制换行.按回车即可以转到下一行.
     '如果用代码,可以借用回车符来实现转行
Private Sub CommandButton1_Click()
  TextBox2 = "excelpx" & Chr(10) & ".com"  'Cha(10)换行符
End Sub


'二 功能
   '1 自动跳到一下个tab顺序的控件
     'AutoTab属性设置为true,当文字框输入字符数大于
   '2 锁定文本和禁用
      'locked属性为true时,显示正常,可以选取,可以复制,但不能编辑。
      'enable属性为false时,显示灰色,不能选取
   '3 是否允许拖放复制值
      'DragBehavior 属性值为1时,可以进行拖放
      
'三 常用方法和属性
   '1 lineCount属性:获得文本框的行数
   '2 SelLength属性可以获得当前文本框中选取的文本长度
   '3 SelText,可以获得当前文本框中选取的文本
   '4 SetFocus 获得焦点
   Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    ' TextBox2 = TextBox3.SelLength & ":" & TextBox3.SelText & ":" & TextBox3.SelStart
   End Sub



Private Sub UserForm_Click()

End Sub

'四 事件
  '1 当文本框值发生改变量时的事件
   Private Sub 用户名_Change()
     MsgBox 123
   End Sub
   '2 当离开文本框时,如果数据发生了改变,则发生此事件
   Private Sub TextBox1_AfterUpdate()
    ' MsgBox 123
   End Sub
  '3 焦点进入文本框时的事件
  Private Sub 用户名_Enter()
   ' MsgBox "我是用户名。"
  End Sub
  '4 离开文本框时的事件
  Private Sub 用户名_Exit(ByVal Cancel As MSForms.ReturnBoolean) '必须输入用户名
    If 用户名.Text = "" Then
      Cancel = True
      MsgBox "你没有输入用户名,不能跳过" & Chr(10) & "请输入内容"
    End If
  End Sub
  'Cancel参数常用于取消该事件的发生,本事件是指取消离开动作,禁止离开
  
 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
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 金额_Change()

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 If
End Sub

Private Sub 数量_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  
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


  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值