【发布时间】:2016-06-30 15:24:39
【问题描述】:
访问 2013
我正在调用一个公式来修改一个字符串,它正在更改父子中的值。
例子:
Debug.Print Str 'Hello World my name is bob
BOBexists = InStringChceck(Str,"bob")
Debug.Print Str 'HELLO WORLD MY NAME IS BOB
Debug.Print BOBexists 'TRUE
我之前在 Excel VBA 中使用过这个函数,InStringCheck(这只是一个例子,我所有的字符串工具现在都在做同样的事情,我不知道为什么)
Function InStringCheck(Phrase as string, Term as string) as Boolean
Phrase = UCase(Phrase)
Term = UCase(Term)
if instr(1, Phrase, Term) then InStringCheck = True else InStringCheck = False
end function
在我的几个函数中,我操纵了输入变量,以得出一个解决方案,但我不希望这些操纵在函数之外持续存在,除非我将它们传回 - 一些它们是如何被传递的,但它们没有作为公共变量进行调整
【问题讨论】:
-
在参数声明中使用 ByVal 关键字 InStringCheck(ByVal Phrase as string, ByVal Term as string)
-
顺便说一句,您可以将
if instr(1, Phrase, Term) then InStringCheck = True else InStringCheck = False更改为InStringCheck = InStr(1, Phrase, Term)。永远不要基于布尔条件返回True或False。根据定义,它已经是True或False。只需返回布尔条件本身。您不必询问它并返回另一个布尔值。 -
其他注解:除非您在调用或
Option Compare中指定vbBinaryCompare,否则InStr()不区分大小写。所以不需要UCase。