我已经通过了一个Vba代码,我想知道它的含义

时间:2019-11-22 06:33:50

标签: excel vba

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

1 个答案:

答案 0 :(得分:0)

我不确定确切需要解释什么,因此我在每行代码上方添加了注释。

此函数在“ AK”列的searchKeyword(工作簿的第三页)中搜索字符串Sheets(3),其中行是参数k

例如,如果k1: 如果AX1为空,并且AE1searchKeyword组成,它将用AX1填充replaceKeyword。如果打算这样做,它将在“ ho 我们 e”中找到单词“ us”。

函数返回BooleanTrue的{​​{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