EXCEL表中有 姓名 身份证号 性别 出生日期....
Sub 查询()
Dim AdoConn As New ADODB.Connection
Dim AdoRst As New ADODB.Recordset
Dim strConn As String
Dim strSQL As String
Dim strFName As String
Dim I As integer
'设置连接字符串
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 12.0;HDR=YES"";"
'打开数据库链接
AdoConn.Open strConn
'设置SQL语句,查询所有记录
strSQL = "SELECT * FROM [数据库$] WHERE 0=1"
'执行查询,并打开记录集
AdoRst.Open strSQL, AdoConn, 3, 3
'重新设定SQL语句
strSQL = "SELECT * FROM [数据库$] WHERE"
'将各条件写入查询字段子句中
For I = 1 To AdoRst.Fields.Count - 1
strFName = AdoRst.Fields(I).Name
If Application.Evaluate(strfname) <> "" Then
strSQL = strSQL & " " & strFName & "=""" & Application.Evaluate(strFName) & """ AND"
End If
Next I
....
End Sub
当循环到I=2是,strFName 的值为"身份证号",Application.Evaluate(strfname)提示类型不匹配,返回ERROR ,如何解决这个问题???
------解决方案--------------------------------------------------------
error:2029是应用成语定义或对象定义错误。
Evaluate所需的参数必须是规定的对象名称。如单元格、区域、名称、引用、图标等。你的参数传入的是一个字符串变量,所以肯定不行。要么你传入单元格对象,要么直接1楼方法判断。