word vba,怎样在光标所在的textbox中,使用按钮输入内容

三个文本框textbox1、textbox2、textbox3,一个按钮commandbutton1。我需要达到的效果是:当光标在textbox1上时,就在textbox1中输入内容;textbox2和textbox3也是这样用。我写的代码是这样的:

Private Sub CommandButton1_Click()
If TextBox1.SetFocus Then
TextBox1 = 1
ElseIf TextBox2.SetFocus Then
TextBox2 = 1
End If
End Sub

这里我只用了两个文本框来试验,就已经报错了,第3个就更不用试了。运行并单击按钮之后提示“缺少函数或变量”。不知这个问题该如何解决?向高手求教!多谢啦!

楼主,有个概念你要搞清楚,这个光标会变化的,比如当光标位于textbox1时候,你点击按钮的时候,这个时候焦点迅速转移到按钮上,所以,你再去判断光标是不是在textbox1上就失去意义了,因为它肯定不在那里,那么有没有办法可以解决这个问题了,办法当然是有的,就是设置一个公共变量用来记录获得焦点的textbox,这样就会轻而易举的解决问题

Public my_object As Object
Private Sub CommandButton1_Click()
    my_object.Value = 1
End Sub
Private Sub TextBox1_GotFocus()
    Set my_object = Me.TextBox1
End Sub

Private Sub TextBox2_GotFocus()
    Set my_object = Me.TextBox2
End Sub

Private Sub TextBox3_GotFocus()
    Set my_object = Me.TextBox3
End Sub

代码解析:

设置一个公共变量my_object,然后word当中有三个textbox,名称分别为textbox1,textbox2,textbox3,然后分别添加事件代码TextBox1_GotFocus
(当光标位于textbox内即获得焦点,会自动触发事件),然后把textbox赋值给公共变量,点击按钮后,给公共变量my_object赋值即可

追问

首先谢谢您的回答。但是我新建一个窗体、3个文本框、1个按钮,名称和问题中的一样,然后把您的代码粘进去、运行、点按钮,给出的错误提示是:“运行时错误‘91’。对象变量或With块变量未设置。”
请问这个要怎么处理?是我粘贴代码的问题吗?

追答

word窗体上面的TextBox没有GotFocus事件,只有一个Exit事件可以用,如果你是在word页面当中插入的Textbox控件可以使用上述代码,如果是窗体上插入的textbox得更换事件代码,具体代码如下,亲测通过

Public my_object As Object
Private Sub CommandButton1_Click()
    my_object.Value = 1
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Set my_object = Me.TextBox1
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Set my_object = Me.TextBox2
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Set my_object = Me.TextBox3
End Sub
温馨提示:内容为网友见解,仅供参考
无其他回答

VBA中如何给光标所在文本框赋值
建议在每个文本框旁添加一个按钮 仍然设置中间变量存放光标所在位置 当想要把某个文本框的内容赋给它时 单击该文本框旁的按钮 就可以实现你的要求了 (水平有限,仅供参考)

VBA如何让按钮指定按键?
在这个示例中,代码首先将焦点设置在`TextBox1`上,然后通过`SendKeys`方法分别发送剪切 (`"^A"`表示全选,`"^C"`表示复制) 和粘贴 (`"^V"`表示粘贴) 的按键序列。此操作将文本框`TextBox1`中的内容复制并粘贴到`TextBox2`中。请注意,这里使用了组合键(例如`"^A"`表示按下`Ctrl+A`键...

如何将VBA窗体textbox的数据通过按钮保存到excel中?
“假如数据存放于a列, 在b1输入=counta(A:A)”代码 sub aa()a=sheet1.cells(1,2) 或用a=application.worksheetfunction.counta(sheet1.range("A:A"),这样 “”里的内容就不用了 sheet1.cells(a,1)=userform1.textbox1.value end sub 不错不错!如果数据量不大话,差异不会太明显,不必...

...vba activex 控件 textbox 中的内容通过按钮导入到指定单元格?_百 ...
读取输入的姓名,然后在B列查找输入的姓名,找到就记下行号,更新信息。没有找到,就在最后一行的下一行添加数据。Private Sub CommandButton1_Click() 'Sheet1 是输入信息的工作表,Sheet2是存放数据的工作薄。 Dim lngRow As Variant, strName As String strName = Sheet1.TextBox2.Text...

VBA中textbox添加右键菜单功能!
给你看一下 蓝色幻想的一个程序事例 ,代码放窗体的加载程序里面Sub 添加快捷菜单() Dim mypup As CommandBar Dim com As CommandBarButton Dim x 删除命令 Set mypup = Application.CommandBars.Add(Name:="ABC", Position:=msoBarPopup) For x = 1 To 4 Set com = mypup.Controls...

vba中如何让textbox文本框自动根据内容增加高度,同时textbox文本框插入...
MultiLine = TrueEnd Sub可以给你一个思路。 第2个sub是给定初始的textbox宽度,并允许换行。第一个sub是根据输入内容的长度变换textbox的高度,具体数据需要自己调整。给的这个例子,输入字母可以正常使用。汉字的话 换为 TextBox1.Height = Int(Len(TextBox1.Text) \/ 3) * 10 + 20 ...

vba 怎么实现在excel中搜索窗体textbox中的内容
如何让textbox中输入信息,在表格中搜索到,并实时显示在listbox中 功能描述如下,如附件中frame图所示,在textbox中输入一个人名,实时在一个表格(如附件表格图所示)中搜索此人名,并将搜索结果放到frame中的listbox中,搜索结果包括姓名,班级,性别。实时显示就是在textbox中输入后马上执行搜索并显示...

...中如何实现鼠标所到行的信息在控件按钮的文本框显示
用VBA,具体步骤如下:假设从左到右的文本框名称依次为:TextBox1、TextBox2、TextBox3。ALT+F11,对象框选择:Worksheet,过程框选择:SelectionChange。输入代码如下:Private Sub Worksheet_SelectionChange(ByVal Target As Range) TextBox1.Value = Range("B" & Target.Row()) TextBox2.Va...

excel vba textbox内容写入到单元格
1'程序开始 sub Main 2、内容写入单元格 'Textbox1中的内容写入到第一张工作表的 第一个单元格中 sheets(1).cells(1,1)=me.textbox1.text 3、结束程序 end sub

在VBA中,为什么我的鼠标右键在TextBox中无法弹出
很复杂……VBA中的控件没有提供右键快捷菜单,用户可以使用Excel 中的命令栏自已添加右键快捷菜单。步骤1:按<Alt+F11>组合键进入VBE窗口,单击菜单“插入”→“模块”,在其代码窗口输入以下代码:001 Private ActiveTB As MSForms.TextBox 002 Public Sub CreateShortCutMenu()003 Dim ShortCutMe...

相似回答