Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA返回';类型不匹配';.Find函数出错-即使它是';他在正确地搜索_Excel_Vba_Find_Mismatch - Fatal编程技术网

Excel VBA返回';类型不匹配';.Find函数出错-即使它是';他在正确地搜索

Excel VBA返回';类型不匹配';.Find函数出错-即使它是';他在正确地搜索,excel,vba,find,mismatch,Excel,Vba,Find,Mismatch,我有一个问题,谷歌搜索告诉我很多人都有过,但有一个奇怪的例外。我正在尝试使用Outlook VBA搜索Excel电子表格,以查看是否存在记录(如果存在,请使用该记录的内容创建电子邮件) 我正在使用.find()函数,但它返回了一个错误-13,“类型不匹配”。奇怪的是: Dim oXLApp As Excel.Application Dim oXLBook As Excel.Workbook Dim oXLSheet As Excel.Worksheet Dim rng As Range Dim

我有一个问题,谷歌搜索告诉我很多人都有过,但有一个奇怪的例外。我正在尝试使用Outlook VBA搜索Excel电子表格,以查看是否存在记录(如果存在,请使用该记录的内容创建电子邮件)

我正在使用.find()函数,但它返回了一个错误-13,“类型不匹配”。奇怪的是:

Dim oXLApp As Excel.Application
Dim oXLBook As Excel.Workbook
Dim oXLSheet As Excel.Worksheet
Dim rng As Range
Dim foundproject As Range
Dim ProjectExists As Boolean
Dim searchterm As String


availcheckinfo.Show 'a userform which gets the public variable availcheckproject

searchterm = availcheckproject
ProjectExists = False

Set oXLApp = New Excel.Application
Set oXLBook = oXLApp.Workbooks.Open(FileName:="filepathredacted.xlsm", ReadOnly:=True)
Set oXLSheet = oXLBook.Worksheets("Sheet1")

Set foundproject = oXLSheet.Range("A:A").Find(searchterm)

If Not foundproject Is Nothing Then
        MsgBox "Match"
        ProjectExists = True
Else
        MsgBox "No match"
        ProjectExists = False
End If
  • 只有在存在匹配项时才会返回错误(我输入了一个我知道存在的searchterm)
  • 当没有匹配项时,我会按预期得到msgbox“no match”
因此,find函数似乎确实在工作,但在匹配时会生成错误。错误在.find函数的行上。我觉得这可能是一个愚蠢的语法错误或其他什么,所以任何帮助都是非常感谢的,但我自己无法对其进行排序。我使用的代码如下:

Dim oXLApp As Excel.Application
Dim oXLBook As Excel.Workbook
Dim oXLSheet As Excel.Worksheet
Dim rng As Range
Dim foundproject As Range
Dim ProjectExists As Boolean
Dim searchterm As String


availcheckinfo.Show 'a userform which gets the public variable availcheckproject

searchterm = availcheckproject
ProjectExists = False

Set oXLApp = New Excel.Application
Set oXLBook = oXLApp.Workbooks.Open(FileName:="filepathredacted.xlsm", ReadOnly:=True)
Set oXLSheet = oXLBook.Worksheets("Sheet1")

Set foundproject = oXLSheet.Range("A:A").Find(searchterm)

If Not foundproject Is Nothing Then
        MsgBox "Match"
        ProjectExists = True
Else
        MsgBox "No match"
        ProjectExists = False
End If

也许您的范围声明应该是Excel.Range?例如:将项目命名为Excel.Range–@Ron Rosenfeld

也许您的范围声明应该改为
Excel.Range
?例如:
以Excel格式创建项目。范围
完美!这么简单。非常感谢。有趣的是,在我的机器上,这是不必要的。我硬编码了
searchterm
,并使用了一个测试文件,但除此之外,没有更改您的代码。