使用vbscript在Excel列中search所有单元格
我编写了一个vbScript来为每个用户的计算机login时收集计算机信息,并且Id希望脚本将信息logging到服务器上的Excel工作表中,每台计算机都有自己的行。
我写了这个像6年前,但失去了脚本,并没有接触VBScript以来。
所以我需要做的是,
- 检查列B(这将是计算机名称)有价值的所有单元格
- 将该值与计算机名称保存的值进行比较
- 如果匹配,则将计算机信息写入该行
- 如果没有匹配,则将信息写入第一个空行
我不知道从哪里开始,因为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