我是否需要在Excel Range.Find中定义默认值,还是可以跳过某些参数?

时间:2018-08-02 19:36:36

标签: excel excel-vba powershell

我需要使用Range.Find.

在Excel文档中进行不区分大小写的搜索

我当前正在使用以下命令尝试对https://haveibeenpwned.com返回的任何电子邮件地址进行不区分大小写的搜索

    $Found = $WorkSheet.Cells.Find($SearchText, $null, "xlValues", "xlWhole", "xlByRows", 1, $false) #What, After, Lookin, LookAt, SearchOrder, MatchCase 

它返回:

WARNING: [] No public exploits found!
Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))
At C:\Users\qqqq\Documents\incidents\Search-PwnAddress.ps1:31 char:9
+         $Found = $WorkSheet.Cells.Find($SearchText, $null, "xlValues" ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

如何正确进行范围查找,以便我可以进行不区分大小写的搜索?

1 个答案:

答案 0 :(得分:0)

Range.Find开始-请注意,"devicename2"xlValuesxlWhole不是常量xlByRows,而是常量。它们是特定String-XlFindLookInXlLookAtXlSearchOrder枚举的成员。

枚举的成员具有引用特定值的描述性名称-因此,在这种情况下,您可以使用相应的值作为参数。尝试将其名称传递为Enumerations(即Strings)将引发“类型不匹配”错误。

  • "xlValues":-4163
  • xlValues:1
  • xlWhole:1

请注意,您应该使用xlByRows而不是[Type]::Missing,如this answer所建议。