使用VBA在查询WORD中表格的内容
我在word中插入了一个比如3*5的表格,并且录入了内容。现在我希望通过VBA编写一个子过程,当我通过InputBox输入字符串后,能够在表格中查询我输入的内容,如果吻合...
我在word中插入了一个比如3*5的表格,并且录入了内容。现在我希望通过VBA编写一个子过程,当我通过InputBox输入字符串后,能够在表格中查询我输入的内容,如果吻合,那么通过MsgBox把这一行的内容都显示出来。
急!!!在线等。
请尽量使用For Each Next语句。 展开
急!!!在线等。
请尽量使用For Each Next语句。 展开
2个回答
推荐于2016-03-21 · 知道合伙人软件行家
关注
展开全部
1.实例分析
分析:的目的是将指定工作表找出来,并且将其激活为当前工作表,这里首先要找出工作表,这个操作我们可以直接通过sheets("工作表名称")来指定,这个工作表名称接收用户输入,这里用一个inputbox就可以;然后就是选中激活为当前工作表,这里有一个select关键字就可以。
2.程序设计
根据上面的实例分析,我们编写出下面这套程序:
Sub SelSht() '工作表查找
Dim Sht As String
Dim str As String
On Error Resume Next 【1】
Sht = InputBox("请输入工作表名称:") 【2】
Sheets(Sht).Select 【3】
str = Err.Description 【4】
If str <> "" Then 【5】
MsgBox "不存在该工作表或名称输入有误!" 【6】
End If
End Sub
3.程序分析
【1】这句代码的意思是如果下面程序有错误不报错,这样做的目的是为了防止,用户输入的工作表名称不存在而导致程序无法运行
【2】接收用户输入工作表名称,并赋给Sht这个变量
【3】如果工作表存在,那么这句代码就会选中工作表,并将其激活为当前工作表
【4】如果前面代码出现错误,这个时候str就会被赋予一个变量,该变量值为所提示的错误字符串
【5】对str进行判断,很明显如果str为空值说明前面的程序没有出错,也就是工作表找到了,但是如果不为空,说明出错了,工作表没有找到,进而进入if语句内执行
【6】提示用户不存在该工作表或名称输入有误
4.将程序制定到Excel界面按钮上
在工具栏空白处,单击右键,选择窗体,弹出一个对象框,然后选择按钮,将指定的程序连接给该按钮。
分析:的目的是将指定工作表找出来,并且将其激活为当前工作表,这里首先要找出工作表,这个操作我们可以直接通过sheets("工作表名称")来指定,这个工作表名称接收用户输入,这里用一个inputbox就可以;然后就是选中激活为当前工作表,这里有一个select关键字就可以。
2.程序设计
根据上面的实例分析,我们编写出下面这套程序:
Sub SelSht() '工作表查找
Dim Sht As String
Dim str As String
On Error Resume Next 【1】
Sht = InputBox("请输入工作表名称:") 【2】
Sheets(Sht).Select 【3】
str = Err.Description 【4】
If str <> "" Then 【5】
MsgBox "不存在该工作表或名称输入有误!" 【6】
End If
End Sub
3.程序分析
【1】这句代码的意思是如果下面程序有错误不报错,这样做的目的是为了防止,用户输入的工作表名称不存在而导致程序无法运行
【2】接收用户输入工作表名称,并赋给Sht这个变量
【3】如果工作表存在,那么这句代码就会选中工作表,并将其激活为当前工作表
【4】如果前面代码出现错误,这个时候str就会被赋予一个变量,该变量值为所提示的错误字符串
【5】对str进行判断,很明显如果str为空值说明前面的程序没有出错,也就是工作表找到了,但是如果不为空,说明出错了,工作表没有找到,进而进入if语句内执行
【6】提示用户不存在该工作表或名称输入有误
4.将程序制定到Excel界面按钮上
在工具栏空白处,单击右键,选择窗体,弹出一个对象框,然后选择按钮,将指定的程序连接给该按钮。
展开全部
'仅 供 参 考
'此段代码没有对数据进行校验
Sub SearchCell()
Dim inp As String
Dim r As Row, c As Cell
Dim CELL_ENDING As String
CELL_ENDING= vbCr & Chr(7) 'word表格单元格文本结束符
inp = InputBox("输 入 关 键 字:")
inp = inp & CELL_ENDING
For Each r In ThisDocument.Tables(1).Rows '这里只查找文档中第1个表格
For Each c In r.Cells
If inp = c.Range.Text Then '这里也是完全相同,也可用instr'InStr(1, c.Range.Text, inp, vbTextCompare) = 1
MsgBox Replace(r.Range.Text, CELL_ENDING, vbTab)
Exit Sub
End If
Next
Next
End Sub
'此段代码没有对数据进行校验
Sub SearchCell()
Dim inp As String
Dim r As Row, c As Cell
Dim CELL_ENDING As String
CELL_ENDING= vbCr & Chr(7) 'word表格单元格文本结束符
inp = InputBox("输 入 关 键 字:")
inp = inp & CELL_ENDING
For Each r In ThisDocument.Tables(1).Rows '这里只查找文档中第1个表格
For Each c In r.Cells
If inp = c.Range.Text Then '这里也是完全相同,也可用instr'InStr(1, c.Range.Text, inp, vbTextCompare) = 1
MsgBox Replace(r.Range.Text, CELL_ENDING, vbTab)
Exit Sub
End If
Next
Next
End Sub
追问
非常感谢!
请问word表格单元格文本结束符不就是回车符vbCr吗?为什么还要Chr(7)?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询