gpt4 book ai didi

vba - 对于导致类型不匹配的每个循环条件

转载 作者:行者123 更新时间:2023-12-03 01:47:02 25 4
gpt4 key购买 nike

当循环条件包括 F 列的整个范围时,此代码可以正常工作:

Dim ABnumb As String
Dim cellSkill As Range
Let ABnumb = dayWS.Cells(i1, 2).Value

For Each cellSkill In skillSheet.Range("F:F")
If cellSkill.Value = ABnumb Then
Let skillNumb = cellSkill.Offset(0, -5).Value
Let skillDelimited = skillDelimited & ";" & skillNumb
End If
Next cellSkill

但是为了提高效率,我想将循环限制在使用的范围内。当我将代码更改为:

For Each cellSkill In skillSheet.UsedRange("F")

我收到此表达式的类型不匹配错误:

If cellSkill.Value = ABnumb Then

我尝试更改两个变量声明的数据类型,但没有任何效果。

有什么办法可以使用 .UsedRange("F") 吗?或者我应该求助于 .Range(1, lastRow),其中 lastRow 已由脚本确定?

此外,循环中的 For Each 变量 cellSkill 会发生什么情况?我可以在单元格范围内的另一个 For Each 循环中重复使用此变量吗?

最佳答案

使用 Intersect 将 F 列修剪到工作表的 .UsedRange 属性。

For Each cellSkill In Intersect(skillSheet.Columns("F"), skillSheet.UsedRange)
...
next cellSkill

要解决您的替代方案,应该是,

with skillSheet
for each cellSkill in .Range(.cells(1, "F"), .cells(.rows.count, "F").end(xlup))
...
next cellSkill
end with

是的,您可以在下面的 For .... Next 循环中重用 cellSkill。当您退出最后一个循环时,cellSkill 应该为 Nothing

关于vba - 对于导致类型不匹配的每个循环条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com