当前位置: 代码迷 >> VBA >> 求教 -Application.Evaluate()提示类型不匹配有关问题
  详细解决方案

求教 -Application.Evaluate()提示类型不匹配有关问题

热度:8152   发布时间:2013-02-26 00:00:00.0
求教 --Application.Evaluate()提示类型不匹配问题
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楼方法判断。

  相关解决方案