Function CheckKeywordAndReplace(ByVal searchKeyword As String, ByVal replaceKeyword As String, ByVal k As Integer) As Boolean
Dim isFound As Boolean
isFound = False
If Sheets(3).Range("AX" & k) = Empty Then
Set rgFound = Sheets(3).Range("AE" & k).Find(searchKeyword, LookIn:=xlValues, MatchCase:=False)
If Not rgFound Is Nothing Then
Sheets(3).Range("AX" & k).Value = replaceKeyword
isFound = True
End If
End If
CheckKeywordAndReplace = isFound
End Function
答案 0 :(得分:0)
我不确定确切需要解释什么,因此我在每行代码上方添加了注释。
此函数在“ AK”列的searchKeyword
(工作簿的第三页)中搜索字符串Sheets(3)
,其中行是参数k
。
例如,如果k
是1
:
如果AX1
为空,并且AE1
由searchKeyword
组成,它将用AX1
填充replaceKeyword
。如果打算这样做,它将在“ ho 我们 e”中找到单词“ us”。
函数返回Boolean
或True
的{{1}}数据类型-填充False
时返回True
。
AX
此功能可以改进。首先,不需要Function CheckKeywordAndReplace(ByVal searchKeyword As String, ByVal replaceKeyword As String, ByVal k As Integer) As Boolean
'declare data type (boolean is only True or False)
Dim isFound As Boolean
'this is not needed as default boolean is False
isFound = False
'if range is empty
If Sheets(3).Range("AX" & k) = Empty Then
'search for your keyword
Set rgFound = Sheets(3).Range("AE" & k).Find(searchKeyword, LookIn:=xlValues, MatchCase:=False)
'if keyword found
If Not rgFound Is Nothing Then
'replace value with your keyword
Sheets(3).Range("AX" & k).Value = replaceKeyword
'update result from False to True
isFound = True
End If
End If
'return result boolean - this will be True if keyword was found and replaced
CheckKeywordAndReplace = isFound
End Function
,因为函数本身返回IsFound
,默认情况下为Boolean
。您并没有声明所有数据类型,这绝不是一个错误,只是需要指出的一点。我建议您使用Option Explicit。另外,我建议设置工作表对象,尤其是当您打开多个工作簿时。除了使用False
函数之外,您还可以使用.Find
函数,这没有错,这只是做同一件事的另一种方式。您也可以对通配符使用InStr
运算符,但是VBScript不支持该运算符,因此我个人倾向于不使用它。这是我的方法:
Like