excel vba-包含()的自定义公式

excel vba-包含()的自定义公式,vba,excel,scripting,Vba,Excel,Scripting,如果我有这样一个专栏: ColumnA ------- NUMBER VARCHAR(50 BYTE) TIMESTAMP 我正在寻找一个vba函数,它的工作原理如下: 包含(“要搜索的字符串”,要在其中搜索的单元格) ie.=包含(“VARCHAR”,A2) 如果单元格中确实包含它(单元格中的任何位置-不必开始或结束单元格),则使用“t”或“F”填充单元格(使用该函数) 在我的例子中: ColumnB ------- F T F 我还可以在其他VBA代码中使用此函数,如: If Len(A

如果我有这样一个专栏:

ColumnA
-------
NUMBER
VARCHAR(50 BYTE)
TIMESTAMP
我正在寻找一个vba函数,它的工作原理如下:

包含(“要搜索的字符串”,要在其中搜索的单元格) ie.=包含(“VARCHAR”,A2) 如果单元格中确实包含它(单元格中的任何位置-不必开始或结束单元格),则使用“t”或“F”填充单元格(使用该函数)

在我的例子中:

ColumnB
-------
F
T
F
我还可以在其他VBA代码中使用此函数,如:

If Len(A2) > 10 and contains("CHAR",A2) Then
 //do stuff
End If

如果它们必须是单独的函数(在返回“T”/“F”的单元格中使用,以及在其他VBA代码中使用),请同时提供这两种函数。

您需要VBA的
指令

例如,在模块中

Public Function Contains(Text As String, Cell As Range) As String
   If InStr(1, Cell.Value, Text, vbTextCompare) Then '//case insensitive
       Contains = "T"
   Else
       Contains = "F"
   End If
End Function

在工作表中启用
=Contains(“blah”,A1)

当我在工作表上尝试时,它会出现:#NAME?在单元格中,如果我将代码放入模块(必须是模块),然后在A1中放入
“AWA”
,如果我在B2中输入
=contains(“W”,A1)
,它将变成
T
啊,是的,在模块中它工作。我只在工作表中使用过代码。实际上,我如何在其他vba代码中使用Contains函数?比如,如果Len(A2)>10并且包含(“CHAR”,A2),那么……再次使用instr()<代码>如果Len(范围(“A1”).值)>20,而InStr(1,范围(“A1”).值,“CHAR”,vbTextCompare),则…