以下几行代码之间的区别

时间:2018-11-05 21:23:11

标签: excel vba excel-vba

我正在写一个长宏,它实际上是复制和粘贴一堆东西。但是,我需要一些帮助来理解以下代码行的区别:

Something.Offset(0, -87) Like "-"

Something.Offset(0, -87)= "-"

Something.Offset(0, -87).Value= "-"

Something.Offset(0, -87) Like "*-*"

这是针对那些仅以“-”作为其数据的项目。

2 个答案:

答案 0 :(得分:4)

简短的回答:如果单元格始终包含“-”,则它们是相同的。

长答案:

第一行使用Like运算符确定单元格的值是否与仅匹配字符串“-”的模式“-”匹配。

第二行与第三行相同,因为.value是Range的默认获取器。

第三行获取单元格的值,并将其与字符串“-”进行比较(如果您不需要Like功能,则应该使用该方法)。

第4行使用Like运算符确定单元格的值是否与模式“ *-*”匹配。 *是通配符,用于匹配0个或多个字符。它不仅对“-”有效,而且对“ ABC-EFG”,“ A-”,“-A”等有效。

有关“赞”运算符https://analystcave.com/vba-like-operator/

的更多信息

答案 1 :(得分:2)

因此.Value是您在未指定范围后才调用的隐式属性,因此中间两个之间应该没有区别。

在中间的两个和最后一个之间,中间的将检查值是否完全等于减号,但最下面的一个将检查单元格是否包含减号。通配符*允许在指定的一面有任何内容,因此,通过将两者都括起来,可以将其显示在单元格值的任何位置。本质上,Like允许您使用可以找到here的不同符号来输入模式。还值得注意的是,like通常用于字符串,=通常用于数字。

最上面的一个与中间两个相同,因为您没有像上一个一样在比较字符串中添加任何模式运算符。

至少这是我对差异的理解。