简体   繁体   English

在Excel VBA中创建一个函数以测试单元格是否包含某个字符

[英]Create a function in Excel VBA to test if a cell contains a certain character

I'm looking to create a function in Excel/VBA that will look at a range of cells and return a value of TRUE if any of the cells contains a certain character (an asterisk *). 我正在寻找在Excel / VBA中创建一个函数,该函数将查看一系列单元格,如果任何单元格包含某个字符(星号*),则返回TRUE值。 There will be some blank cells, some cells will contain text and some may contain text and an asterisk. 将有一些空白单元格,一些单元格将包含文本,一些单元格可能包含文本和一个星号。 Can anyone help? 有人可以帮忙吗? Many thanks 非常感谢

Copy and paste the below code into a new module 复制以下代码并将其粘贴到新模块中

Function ContainsStar(r As Range) as Boolean
    Dim i As Long
    Dim cell As Range
    Dim contains As Boolean
    For Each cell In r.Cells
        For i = 1 To Len(cell)
            If Right(Left(cell, i), 1) = Chr(42) Then
                contains = True
                GoTo ExitFn
            End If
        Next i
    Next
    Exit Function
ExitFn:
    ContainsStar = contains
    Exit Function
End Function

then use it in the spreadsheet like this 然后像这样在电子表格中使用它

Note: 注意:

D1 = =ConstainsStar(A1:A3) D1 = =ConstainsStar(A1:A3)

H1 = =ConstainsStar(E1:E3) H1 = =ConstainsStar(E1:E3)

在此处输入图片说明

you can also use the instr function 您还可以使用instr函数

function containstar(byval r as range) as boolean
dim cel as range 'be careful about variable names that are already existing code (cell)
for each cel in r.cells   
'or use a loop like: for i=1 to r.cells.count , and use r.cells(i), if you prefer.
  if instr(1,cel.value,"*")>0 then
     containstar=true
     exit sub   'you can also exit for
  end if
next cel
containstar=false
end sub

and to call the function: 并调用该函数:

a=containstar("a1:b8")

use only goto when you cannot do else, usually you don't need it. 仅在无法执行其他操作时才使用goto,通常不需要。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM