精华内容
下载资源
问答
  • 他山之石——VBA文本框

    千次阅读 2018-06-29 23:58:59
    继续学习VBA!'**********************文字框控件*************** '一 显示 '1 多行显示 'MultiLine 属性值为true时,可以多行显示文本 '2 文本框对齐 '左右对齐可以用TextAlign对齐,但上下对齐则没有相应的...

    继续学习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


    展开全文
  • 【Excel VBA】控件应用(1)-文本框

    千次阅读 2020-03-16 22:05:50
    用户在使用文本框输入数据时,往往希望可以限制输入数据的类型,例如,只允许输入数字,但是文本框的现有属性无法直接实现这样的要求。此时可以在文本框的KeyPress事件过程和Change事件过程中编写代码来判断输入的...

    12.1 限制文本框的输入

    用户在使用文本框输入数据时,往往希望可以限制输入数据的类型,例如,只允许输入数字,但是文本框的现有属性无法直接实现这样的要求。此时可以在文本框的KeyPress事件过程和Change事件过程中编写代码来判断输入的字符类型。只允许输入数字字符和一个"-"号、一个"."号,示例代码如下。

     Private Sub txtDemo_KeyPress(ByVal KeyANSI As MSForms.ReturnInteger)
         Select Case KeyANSI'判断参数的值
             Case Asc("0") To Asc("9")
             Case Asc("-")
                 If InStr(1, Me.txtDemo.Text, "-") > 0 Or _
                     Me.txtDemo.SelStart > 0 Then
                     KeyANSI = 0
                 End If
             Case Asc(".")
                 If InStr(1, Me.txtDemo.Text, ".") > 0 Then
                     KeyANSI = 0
                 End If
             Case Else
                 KeyANSI = 0
         End Select
     End Sub

    当用户按下一个ANSI键时触发KeyPress事件。

    KeyPress事件的语法格式如下。

     Private Sub object_KeyPress( ByVal KeyANSI As MSForms.ReturnInteger)

    其中,Object是必需的,代表一个有效的对象。

    参数KeyANSI是可选的,其值为整数型,代表标准的ANSI键代码。

    第3行代码利用Asc函数将字符串转换为字符代码。

    第4~8行用来判断字符"-",只能在文本框第1位输入单个"-"。如果键盘输入的是"-",先使用InStr函数判断文本框中是否存在"-",如果InStr函数的返回值大于0,说明文本框已存在"-"。接下来使用文本框的SelStart属性来检测插入点,如果文本框SelStart的属性值大于0,说明插入点不是第1个。

    将KeyANSI参数值设置为0,取消键盘输入。

    第5行代码中的Me表示当前窗体,txtDemo是窗体中文本框的名称,如下图所示。文本框的Text属性返回当前文本框中的字符串。

     

    但是以上代码无法禁止中文字符的输入和粘贴。利用文本框的Change事件可以解决此问题,示例代码如下。

     Private Sub txtDemo_Change()
         Dim i As Integer
         Dim strEntry As String
         With txtDemo
             For i = 1 To Len(.Text)'逐个提起文本框中的字符进行判断
                 strEntry = Mid(.Text, i, 1)
                 Select Case strEntry
                     Case ".", "-", "0" To "9"
                     Case Else
                         .Text = Replace(.Text, strEntry, "")
                 End Select
             Next i
         End With
     End Sub

    第10行代码使用Replace函数将非法输入字符替换成空字符串。当替换文本框的字符时,会触发Change事件。

    增加Change事件过程后,在文本框中只能输入数字和一个"."以及在第一位输入一个"-"。

    12.2 自动换行的文本框

    当使用文本框显示一段很长的文本时,需要将文本框设置成多行显示,否则文本内容只能在一行中显示,此时应设置文本框的WordWrap属性和MultiLine属性,示例代码如下。

     Private Sub UserForm_Initialize()
         With Me.txtDemo
             .WordWrap = True
             .MultiLine = True
             .Text = "文本框是一个灵活的控件,受下列属性的影响:Text、" _
                 & "MultiLine、WordWrap和AutoSize。" & vbCrLf _
                 & "Text 包含显示在文本框中的文本。" & Chr(10) _
                 & "MultiLine 控制文本框是单行还是多行显示文本。" _
                 & "换行字符用于标识在何处结束一行并开始新的一行。" _
                 & "如果 MultiLine 的值为False,则文本将被截断," _
                 & "而不会换行。如果文本的长度大于文本框的宽度," _
                 & "WordWrap允许文本框根据其宽度自动换行。" & Chr(10) _
                 & "如果不使用 WordWrap,当文本框在文本中遇到换行字符时," _
                 & "开始一个新行。如果关闭WordWrap,TextBox中可以有不能" _
                 & "完全适合其宽度的文本行。文本框根据该宽度,显示宽度以" _
                 & "内的文本部分,截断宽度以外的那部分文本。只有当" _
                 & "MultiLine为True时,WordWrap才起作用。" & Chr(10) _
                 & "AutoSize 控制是否调节文本框的大小,以便显示所有文本。" _
                 & "当文本框使用AutoSize 时,文本框的宽度按照文本框中的" _
                 & "文字量以及显示该文本的字体大小收缩或扩大。"
         End With
     End Sub

    第3行代码设置文本框的WordWrap属性为True。

    WordWrap属性指定控件的内容在行末是否自动换行。设置为True,文本将自动换行;设置为False,文本不换行。

    第4行代码设置文本框的MultiLine属性为True。

    MultiLine属性指定控件能否接受和显示多行文本。设置为True,支持多行显示文本。

    如果将文本框的MultiLine属性设置为False,则文本框的所有字符都合并为一行,包括非打印字符(如回车符和换行符)。

    注:对于同时支持这两个属性的控件,当MultiLine属性设置为False时,WordWrap属性将被忽略。

    当需要强制换行时,可以在文本中插入vbCrLf进行换行。

    运行结果如下。

     

    12.3 自动选择文本框内容

    如果希望文本框获得焦点时能自动选中其内容,可以在MouseUp事件和Enter事件中设置文本框的SelLength属性,示例代码如下。

     Private Sub txtDemo_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
         If Button = 2 Then'被释放的是否为鼠标右键
             With txtDemo
                 .SelStart = 0
                 .SelLength = Len(.Text)
             End With
         End If
     End Sub
     Private Sub txtDemo_Enter()
         txtDemo.SelStart = 0
         txtDemo.SelLength = Len(txtDemo.Text)
     End Sub

    第1~8行代码为文本框的MouseUp事件过程,在文本框中右击时自动选中文本框中的内容。

    按下鼠标右键时触发控件的MouseDown事件,释放鼠标时触发控件的MouseUp事件,其语法格式如下。

     Private Sub object_MouseUp( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

    MouseDownMouseUp 事件的语法包含以下成分:

    成分说明
    object必需。一个有效的对象。
    index必需。发生特定事件的多页和 TabStrip 中的页索引或标签索引。
    Button必需。标识引起该事件的鼠标按键的整数值。
    Shift必需。规定 Shift、Ctrl 和 Alt 的状态。
    X, Y必需。窗体、框架或页的位置的横坐标与纵坐标,以磅为单位,分别从左边和顶边开始测量。

    参数Button是必需的,标识引起该事件的鼠标按键值,如下表所示。

    Button 的设置如下:

    常量说明
    fmButtonLeft1按下左键。
    fmButtonRight2按下右键。
    fmButtonMiddle4按下中键。

    Shift 的设置如下:

    说明
    1按下 Shift。
    2按下 Ctrl。
    3同时按下 Shift 和 Ctrl。
    4按下 Alt。
    5同时按下 Alt 和 Shift。
    6同时按下 Alt 和 Ctrl。
    7同时按下 Alt 、Shift 和 Ctrl。

    第3~6行代码设置文本框的SelStart属性为0,SelLength属性为文本框中字符串的长度。

    SelStart属性指定选中文本的起点,如果没有选中的文本,则指定插入点。

    SelLength属性指定文本框或组合框中的文本被选中的字符数。

    对于SelLength和SelStart,其默认值均为0,设置值的有效范围是从0到组合框或文本框编辑区中的全部字符的长度。

    第9~12行代码为文本框的Enter事件过程,在文本框实际接收焦点前自动选中文本框中的内容。

    展开全文
  • 文本框控件(TextBox)的常用属性的说明以及起的用途
  • VBA 用户页面。常用的控件 属性与事件列表 包含sheet事件
  • VBA笔记——文本框控件的换行

    千次阅读 2020-01-03 13:11:02
    Private Sub UserForm_Initialize() With Me.txtDemo .WordWrap = True .MultiLine = True .Text = "文本框是一个灵活的控件,受下列属性的影响:Text、" _ & "MultiLine、WordWrap和AutoSize。"...
    Private Sub UserForm_Initialize()
        With Me.txtDemo
            .WordWrap = True
            .MultiLine = True
            .Text = "文本框是一个灵活的控件,受下列属性的影响:Text、" _
                & "MultiLine、WordWrap和AutoSize。" & Chr(10) _
                & "Text 包含显示在文本框中的文本。" & Chr(10) _
                & "MultiLine 控制文本框是单行还是多行显示文本。" _
                & "换行字符用于标识在何处结束一行并开始新的一行。" _
                & "如果 MultiLine 的值为False,则文本将被截断," _
                & "而不会换行。如果文本的长度大于文本框的宽度," _
                & "WordWrap允许文本框根据其宽度自动换行。" & Chr(10) _
                & "如果不使用 WordWrap,当文本框在文本中遇到换行字符时," _
                & "开始一个新行。如果关闭WordWrap,TextBox中可以有不能" _
                & "完全适合其宽度的文本行。文本框根据该宽度,显示宽度以" _
                & "内的文本部分,截断宽度以外的那部分文本。只有当" _
                & "MultiLine为True时,WordWrap才起作用。" & Chr(10) _
                & "AutoSize 控制是否调节文本框的大小,以便显示所有文本。" _
                & "当文本框使用AutoSize 时,文本框的宽度按照文本框中的" _
                & "文字量以及显示该文本的字体大小收缩或扩大。"
        End With
    End Sub
    
    展开全文
  • 题记:非常期间,希望大家静下心,多学习有用的知识,多提高自己的水平和能力,这才是正道。适当节制自我的各种欲望,谁都...今日内容是和大家分享VBA编程中常用的 “积木”过程代码,这些内容大多是取至我编写的“VB...

    9c847f9150889610a2fcc6cc7d063120.png

    题记:非常期间,希望大家静下心,多学习有用的知识,多提高自己的水平和能力,这才是正道。适当节制自我的各种欲望,谁都逃不过时间的历练,谁都是命运的行者,谁都是在人生的道路上一步一趋,把生活与工作打理好,不负年华。欲成大事者,必先修其身。欲修其身者,先正其心。小成靠智,大成靠德。身不修则德不立,德不立则无以成事。

    今日内容是和大家分享VBA编程中常用的 “积木”过程代码,这些内容大多是取至我编写的“VBA代码解决方案”教程中内容。今日分享的是NO.208-NO.208,内容是:

    NO. 208:在VBA代码中使用限制文本框的输入

    2daa8f281a0ecac09532e89513d81b63.png

    VBA过程代码208:在VBA代码中使用限制文本框的输入

    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    Select Case KeyAscii

    Case Asc("0") To Asc("9")

    Case Asc("-")

    If InStr(1, Me.TextBox1.Text, "-") > 0 Or _

    Me.TextBox1.SelStart > 0 Then

    KeyAscii = 0

    End If

    Case Asc(".")

    39b337557ca7db188ae3d0b749408953.png

    If InStr(1, Me.TextBox1.Text, ".") > 0 Then

    KeyAscii = 0

    End If

    Case Else

    KeyAscii = 0

    End Select

    End Sub

    代码解析: KeyPress事件过程,只允许输入数字字符和一个“-”号、一个“.”号。如果键盘输入的是0到9之间的数字字符,则允许输入。如果键盘输入的是“-”号,先使用InStr函数测试文本框中是否已有“-”号,如果InStr函数返回值大于0,说明文本框中已有“-”号。接下来使用文本框的SelStart 属性来测试插入点,如果文本框的SelStart 属性值大于0,说明“-”号的插入点不是第一个。如果以上两个条件中有任何一个成立,将KeyAscii参数值设置为0,使文本框只能在第一位输入一个“-”号。

    5b1eca12a107d9647783cce0f4521eeb.png

    VBA是实现自己小型办公自动化的有效手段,我根据自己20多年的VBA实际利用经验,现推出了四部VBA学习教程,这些是我多年编程经验的记录,也是我“积木编程”思想的体现。每一讲都是一块“积木”,可以独立的完成某些或者某类的过程。利用这些可以大大提高自己的编程效率。

    第一套:“VBA代码解决方案”是PDF教程,是VBA中各个知识点的讲解,覆盖了绝大多数的知识点,是初学及中级以下人员必备;

    第二套:“VBA数据库解决方案”是PDF教程,数据库是数据处理的利器,对于中级人员应该掌握这个内容了。

    第三套:“VBA数组与字典解决方案”是PDF教程,讲解VBA的精华----字典,是我们打开思路,提高代码水平的必备。

    第四套:“VBA代码解决方案”视频教程。目前正在录制,“每天20分钟,精进VBA”,越早参与,回馈越多。现在录制到第三册的124讲,以上各教程的代码都是经过实测,可以拿来即用。

    懒惰是很奇怪的东西,它使你以为那是安逸,是休息,是福气;但实际上它所给你的是无聊,是倦怠,是消沉。

    不要懒惰还是多学习些有用的知识吧,哪怕只是点滴。

    展开全文
  • 本框只能上人家选择数据进去,不能手动输入,经搜索研究发现个不错的解决方法,感兴趣的朋友可以参考下
  • VBA 文本框按Enter 键触发事件.

    万次阅读 2012-08-22 20:29:44
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox2.Value = "ok" TextBox3.SetFocus End Sub 注意: ...按钮的属性有一项是default 将其设成TRU
  • 文本框失去焦点事件、获得焦点事件 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect:当文字加亮后,产生该文件 onpropertychange 当属性...
  • WORD VBA 操作WORD 文本框

    千次阅读 2015-05-17 18:37:14
    '实例1:批量删除WORD文本框中的内容 Sub test1() Dim sha As Shape For Each sha In ActiveDocument.Shapes sha.TextFrame.TextRange.Delete Next end sub '实例2:批量删除WORD文本框而保留文字
  • NULL 博文链接:https://13521308103.iteye.com/blog/1887611
  • 大家好,我们今日继续讲解VBA代码解决方案的第95讲内容:如果文本框的录入校验不能通过,光标仍返回文本框中的另一方案。在上一讲中我讲了利用EXIT事件中的Cancel 参数的设置来达到我们的目的(值是True)。这种方法中...
  • 大家好,我们今日继续讲解VBA代码解决方案的第97讲内容:控件跟随鼠标,在利用VBA写代码的时候,往往很多发现是不经意间的。对于这类发现要善于总结,善于利用才能逐渐的提高自己的能力。例如在前几篇文章中讲到的...
  • VBA一例:如何保持文本框焦点

    千次阅读 2019-07-21 02:14:43
    在Excel的VBA编程中,设计一个用于录入的用户窗体,该窗体包含1个文本框和2个按钮,文本框用于扫描枪的录入。 要求扫描枪可以连续录入,即每扫描完一个条码,文本框自动清空,文本框继续获得焦点。 我们知道扫描...
  • EXCEL-VBA:引用SHEET中的TextBox1(文本框)的值
  • Word 宏处理文本框无颜色填充

    千次阅读 2019-12-25 15:26:08
    Word 宏处理文本框无颜色填充 在对word文档批量修改时,我们可以采用宏来进行处理。下面根据插入文本框批量进行无颜色填充设置。 第一步:首先录制宏 点击“宏”下面的倒立三角,再点击录制宏 在弹出“录制宏”窗口...
  • VBA++ 题记:一剪闲云一溪月,一程山水一年华。一世浮生一刹那,一树菩提一烟霞。岁月静好,现世安稳。纵算云水漂泊,心若安宁,亦可淡若清风。希望见者与不见者都能安康。静下心,多学习有用的知识,多提高自己的...
  • 对象/属性/方法/事件(Object/Attribute/ Method/Event) 描述(Description) ID 返回或设置当以网页保存页面时指定单元格的识别标志本示例将活动工作表上 A1 单元格的 ID 属性设置为“target”。 ActiveSheet....
  • 6.在属性窗口,给该模块重命名:Manipulations 7.选择“视图”-“对象浏览器”,或按F2 8. 在“工程/库”下拉列表框里选择“Excel”类 9. 在搜索框里输入“textbox”并点击搜索按钮。确保你没有在文字间敲...
  • VB文本框TEXTBOX文字垂直居中

    热门讨论 2008-08-25 16:57:39
    VB文本垂直居中,主要是为了补TEXTBOX不能垂直居中的不足
  • 打开Excel表格,通过任何一种方式进入VBA代码编程界面.插入一个窗体Userform1,这时候会弹出一个工具箱按钮.选则工具箱里的文本框(textbox),在窗体上画出一个文本框.文本框,textbox,是通过控件的方式向指定位置录入...
  • 摘 要:微软Office中的VBA编程功能可以将办公操作自动化。由于现代翻译中绝大多数原文和译文都用办公软件呈现,而且现代翻译中译前和译后的编辑工作基本上都可以在office软件中完成,因此VBA编程可以将翻译实践中的...
  • VBA编写的程序中,如果可以在运行时动态创建控件无疑是非常有用的,因为有些控件是无法预先得知的,这样就更必须在运行时动态创建然后设置相应控件属性。控件的名称如下: Forms.Checkbox.1(复选框) Forms....
  • 目录江雪大爷钓鱼:从简到繁,vba写库房管理软件(一)之开篇废话多江雪大爷钓鱼:从简到繁,vba写库房管理软件(二)之需求分析及初学者避坑指南江雪大爷钓鱼:从简到繁,vba写库房管理软件(三)之入库界面编写...
  • VB中基于Text1文本框的PasswordChar属性

    千次阅读 2019-03-04 09:26:45
    此程序中Text的属性栏PasswordChar属性设置为 * Private Sub C1_Click() If Text1.Text = “123456” Then Text1.Text = “口令正确” Text1.PasswordChar = “” Else Text2.Text = Text2.Text - 1 If Text2.Text &...
  • 大家好,我们今日继续讲解VBA代码解决方案的第119讲内容:如何遍历工作表中的图形。其实这节的内容在我前面的章节中已经讲过,今日但拿出来,作为一节的专门的内容。 工作表中的多个图形,有时我们需要根据实际的...
  • ``` Private Sub txt0_KeyDown(ByVal KeyCode As MSForms.... txt1.SetFocus ’对象不支持该属性或方法 End If End Sub ![图片说明](https://img-ask.csdn.net/upload/201911/27/1574839630_533907.png)
  • 对于文件的管理,目前市面... 另外,如果有必要,还可以加入文件属性、文件大小、创建日期、最后修改日期等内容,这个只需要创建一个FileSystemObject对象,然后循环调用对应的属性值即可。 创作不易,转载请注明来源!
  • ActiveX控件的属性 在编辑模式下,可以使用属性窗口更改ActiveX控件的属性。该属性窗口实际上与VBE中属性窗口的使用方法一致。ActiveX控件具有非常丰富的类别和属性,其中常用的通用属性 属 性 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,085
精华内容 434
关键字:

vba文本框属性