Office中国论坛/Access中国论坛

标题: [求助]帮帮我检查这段代码,先磕三个响头 [打印本页]

作者: hangyi    时间: 2006-6-29 19:09
标题: [求助]帮帮我检查这段代码,先磕三个响头
大侠呀,下面这段代码气死我了[em06]。如果在指定的范围内有某个单元格的内容和TextBox1.Text 相同就可以完成将找到的内容整行导入窗体相应文本框中,但是[em06],在指定的范围内没有内容和TextBox1.Text 相同,程序就出现问题了,自动中断,弹出调试对话框,说“对象变量或With块变量未设置”,按“调试”按钮以下代码变黄色

RANGE1.Find(What:=Instring1, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, _
        MatchByte:=False, SearchFormat:=False).Activate

我都快疯了,不知出了什么问题

以下是“查询”按钮的全部代码

Private Sub CommandButton7_Click()
'如果学生姓名文本框不可用或为空时,就不能查找直接退出
If TextBox1.Enabled = False Or TextBox1 = "" Then
Exit Sub
End If

Instring1 = TextBox1.Text '*****************(TextBox1.Text )为学生姓名文本框
'********声明变量
Dim RANGE1 As Range
'********设置范围
Set RANGE1 = Range("A7:K33")
'********进行搜索的操作
RANGE1.Find(What:=Instring1, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, _
        MatchByte:=False, SearchFormat:=False).Activate

'********将查到的内容导入窗体相应文本框中

ActiveCell.Select
Selection.End(xlToLeft).Select
TextBox6.Text = ActiveCell.Offset(0, 0).Range("A1") '学生姓名
TextBox7.Text = ActiveCell.Offset(0, 0).Range("B1") '班级
TextBox8.Text = ActiveCell.Offset(0, 0).Range("C1") '性别
TextBox9.Text = ActiveCell.Offset(0, 0).Range("H1") '联系电话
TextBox10.Text = ActiveCell.Offset(0, 0).Range("J1") '早餐
TextBox11.Text = ActiveCell.Offset(0, 0).Range("K1") '备注
TextBox12.Text = ActiveCell.Offset(0, 0).Range("D1") '地址1
TextBox13.Text = ActiveCell.Offset(0, 0).Range("E1") '地址2
TextBox14.Text = ActiveCell.Offset(0, 0).Range("F1") '地址3
TextBox15.Text = ActiveCell.Offset(0, 0).Range("G1") '补充地址
TextBox16.Text = ActiveCell.Offset(0, 0).Range("I1") '乘车号
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

作者: Threaten    时间: 2006-6-30 08:01
程序一开始使用

On error resume next

就可以避免出错

或者,

On error goto X

此处为你的代码

exit sub

X:

Msgbox "Can not find it"
作者: hangyi    时间: 2006-7-1 01:15
谢谢Threaten,我弄明白了问题出现在

RANGE1.Find(What:=Instring1, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, _
        MatchByte:=False, SearchFormat:=False).Activate

上面的代码是执行.Find,如能找到,则设置它为.Activate,但是没有找到代码还是愚蠢地执行并强硬设置.Activate,没有找到任何单元格怎么会有.Activate。这就是出错了原因。我已通过其它办法解决了这个问题。

再次感谢热心的Threaten




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3