IE自动化与数组

你好,我是我公司的零件分析师。 我在我们的在线目录上search引擎序列号,看是否在网站上为客户提供了所需的信息。 我有大约三千个数字来检查每个月。 我有一个Excel表,我复制引擎序列号,并将其粘贴到在线目录的search。 这是一个非常乏味的任务。 我一直在研究一个macros来自动化这个过程。 我在macros中有一个数组。 我想要数组跳过不需要search的序列号。 到目前为止,macros将打开浏览器到电子目录,并通过数组循环显示所有包含数组值的序列号。 我现在需要数组跳过这些值。 我想在数组中使用一个if语句,以便每次运行macros时,它将运行得更快,因为正在search的值的数量正在减less。

脚本

  1. 我点击Excel中的一个button,打开所需的文件,开始searchA列中的序列号。
  2. 如果F2 = Y,则跳过目录中的A2search,但如果F2 = N,则searchA2
  3. 如果searchA2返回所需信息,则在F2中inputY,否则在F2中inputN,转到A3并重复处理。

我search了很多论坛,我一直没有find解决办法。 我有的macros是下面。 我需要帮助来完成这个macros。 我试图让数组跳过数组中的值,并通过向if语句添加Not来突出显示所有其他值。 这不起作用,相反,所有的序列号都突出了,当我添加“不”的if语句。 任何build议表示赞赏。

Sub HighlightValue() Dim MyVals As Variant MyVals = Array("*472908*", "*471905*", "*471914*", "*471935*", "*471917*", "*471920*", "*471933*", "*471932*", "*471934*") 'Enter all the values to search for Application.Goto Range("A2"), False Do Until IsEmpty(ActiveCell) For Each esn In Selection For i = LBound(MyVals) To UBound(MyVals) If esn.Value Like MyVals(i) Then esn.Interior.ColorIndex = 6 'yellow Exit For End If Next i Next esn ActiveCell.Offset(1, 0).Select Loop 

结束小组

在这里输入图像说明

没问题。 这是我掀起的一个快速testing。 有两种方法可供select。

  1. 如果在数组中find条目,将它们全部设置为黄色并清除颜色
  2. 在循环中使用一个标志。 将其设置为false,然后将其设置为true,如果在数组中find该条目。 在for循环之后,使用该标志的状态来决定是否为单元格着色。

我已经使用了方法2。

另外请注意,根据您提供的数据,数组中每个string开头的通配符(*)是不必要的。 (我还添加了数组中的最后一个元素,所以我会有一些匹配的单元格和一些没有的单元格)

 Sub highlightCellsNotInArray(myVals) Dim found As Boolean Application.Goto Range("a2"), False Do Until IsEmpty(ActiveCell) For Each engSerNum In Selection found = False For i = LBound(myVals) To UBound(myVals) If engSerNum.Value Like myVals(i) Then found = True Exit For End If Next i If found = False Then engSerNum.Interior.ColorIndex = 6 ' yellow End If Next engSerNum ActiveCell.Offset(1, 0).Select Loop End Sub Sub test() Dim arrayVals arrayVals = Array("472908*", "471905*", "471914*", "471935*", "471917*", "471920*", "471933*", "471932*", "471934*", "471907*") highlightCellsNotInArray (arrayVals) End Sub