在excel vba中使用Find方法找不到电子邮件string
我正在尝试查找包含特定电子邮件地址的单元格的地址。 这是我的代码:
Function find_email(range_input As Range) As String Dim item_input As String item_input = "test@test.com" Dim found_range As Range With Worksheets("test_sheet").range_input Set found_range = .Find(What:=item_input, LookIn:=xlValues, LookAt:=xlPart) End With find_email = found_range.Address End Function
编辑post回答1
我已经采取了答案#1中的build议,并更改为代码为:
Public Function find_email(range_input As Range, string_input As String, collumn_offsett As Integer) As String Dim found_range As Range With Worksheets("test_sheet").Range(range_input.Address) Set found_range = .Find(What:=string_input, LookIn:=xlValues, LookAt:=xlPart) End With Dim output_range As Range Set output_range = found_range.Offset(0, collumn_offsett) find_email = output_range End Function Sub test_email_find_code() Debug.Print find_email(Range("f1:f7"), "test@test.com", -3) End Sub
子test_email_find_code
很好。 当我尝试在单元格中使用函数find_email
时,它不起作用。 我真的不明白如何研究这个。 我是否必须以某种方式调整范围input?
为了使它像你写的一样工作,你需要改变这样的行:
With Worksheets("test_sheet").Range(range_input.Address)
这是您的完整代码位于一个单独的模块:
Public Function find_email(range_input As Range) As String Dim item_input As String item_input = "test@test.com" Dim found_range As Range With Worksheets("test_sheet").Range(range_input.Address) Set found_range = .Find(What:=item_input, LookIn:=xlValues, LookAt:=xlPart) End With find_email = found_range.Address End Function
你可以用另一个子testing它:
Sub findEmail() Debug.Print find_email(Range("A1:D100")) End Sub
或者使用这样的内嵌函数:
=find_email(A1:D100)
结果取决于答案,我使用单元格C4,结果是$C$4