使用vbscript在Excel列中search所有单元格

我编写了一个vbScript来为每个用户的计算机login时收集计算机信息,并且Id希望脚本将信息logging到服务器上的Excel工作表中,每台计算机都有自己的行。

我写了这个像6年前,但失去了脚本,并没有接触VBScript以来。

所以我需要做的是,

  1. 检查列B(这将是计算机名称)有价值的所有单元格
  2. 将该值与计算机名称保存的值进行比较
  3. 如果匹配,则将计算机信息写入该行
  4. 如果没有匹配,则将信息写入第一个空行

我不知道从哪里开始,因为vbScript对我来说是非常陌生的。

编辑 – 我有这个循环到目前为止,回声来testing它,但它只能到1,而我有6列的值在列0我试图有条件检查单元格值我知道存在和我得到一个运行时错误。

Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("test.xlsx") Do While objExcel.ActiveCell.Offset(iRow,0).Value<>"" WScript.Echo iRow If objExcel.Cells(iRow,0).Value = "three" Then WScript.Echo "three" End If iRow = iRow+1 Loop WScript.Quit 

您的脚本中很可能有一个On Error Resume Next ,这会使代码无法正常运行。

据我可以告诉你的代码,这可能是发生了什么事情:

  • Do While objExcel.ActiveCell.Offset(iRow,0).Value<>""

    该脚本检查活动单元的偏移量(iRow,0)处的单元是否为空,以及是否未进入循环。

  • WScript.Echo iRow

    该脚本回显iRow的当前值(可能为0)。

  • If objExcel.Cells(iRow,0).Value = "three" Then

    脚本尝试访问单元 (iRow,0)不是位于偏移量 (iRow,0) ),因为Cells()不是基于零的,所以失败。 第一行以及第一列在Cells()属性中具有索引1。 更不用说,使用Cells()你必须使用绝对的行和列号,而不是像Offset()那样相对于ActiveCell

要解决这个问题,我会删除On Error Resume Next并简单地使用Cells()而不是ActiveCell.Offset()

 iRow = 1 Do While objExcel.Cells(iRow, 2).Value <> "" WScript.Echo iRow If objExcel.Cells(iRow, 2).Value = "three" Then WScript.Echo "three" End If iRow = iRow + 1 Loop