运行时错误"13":输入单元格区域时类型不匹配



我有一个VBA代码,可以根据部分名称在目录中搜索文件夹
部分名称在F列中,代码返回文件夹名称和文件夹路径。

例如,文件夹路径是";C: \Users\Dunelle\Desktop\10001-Rev1

路径的最后一部分(Rev1(发生了更改,但10001保持不变。我需要使用通配符10001*执行搜索。

部分名称在F列,当我在F列中输入值时,我想返回搜索,文件夹名称在同一行的A列中,并返回同一行B列中的文件夹路径。

当引用单个单元格时,我编写的代码就可以工作
但是,当我将范围更改为("F:F"(时,我会得到一个错误13类型不匹配错误。

这是我的代码:

Sub SearchName()
Dim ENumber As Range
Dim ECell As Range
Dim I As Integer
Dim rownumber As Integer
Dim varDirectory As Variant
Dim strDirectory As String
Set ENumber = Range ("F:F")
rownumber = ENumber.Row
strdirectory = "C:UsersDunelleDesktop" & ENumber & "*"
varDirectory = Dir (strDirectory, vbDirectory)
For Each ECell In ENumber.Cells
If ENumber <> "" Then
Cells(rownumber, 1) = varDirectory
Cells(rownumber, 2) = strDirectory + varDirectory
Exit Function
End If
Next ECell
End Sub

请帮忙
感谢

尝试将范围更改为定义的范围,如下所示:

Set ENumber = Range("F1:F10")

或者如果是可变长度范围:

Set ENumber = Range("F1:F" & Range("F1").End(xlDown).Row)

不能将整个范围命名为一个字符串strDirectory。一次只能从该范围中选择一个单元格。您只需要将3行移动到For循环中。

试试这个:

Sub SearchName()
Dim ENumber As Range
Dim ECell As Range
Dim I As Integer
Dim rownumber As Integer
Dim varDirectory As Variant
Dim strDirectory As String
Set ENumber = Range ("F:F")
'Move the next 3 lines into the loop and change `Enumber` to `Ecell`
'rownumber = ENumber.Row
'strdirectory = "C:UsersDunelleDesktop" & ENumber & "*"
'varDirectory = Dir (strDirectory, vbDirectory)
For Each ECell In ENumber.Cells
strDirectory = "C:UsersDunelleDesktop" & ECell & "*"
varDirectory = Dir(strDirectory, vbDirectory)
rownumber = ECell.Row
If ENumber <> "" Then
Cells(rownumber, 1) = varDirectory
Cells(rownumber, 2) = strDirectory + varDirectory
Exit Function
End If
Next ECell
End Sub

旁注:For循环中有Exit Function。应该是Exit Sub

最新更新