我发现了一个VBScript,它在Excel 2013中打开了某个电子表格,添加了一个列并在列的第一行中添加了一个名称。我正在寻找是否有人可以帮助我使用可以执行以下操作的脚本:
脚本应从B2开始检查B列中的所有单元格。
一旦它击中空单元格,脚本就完成了。
我在下面有以下脚本。我不知道从哪里开始,我尝试了一些不同的东西,但得到错误。这是我试图说的最后一次修订"如果(b2小于或大于空白,则J2 = = 1),但它可能不是正确的格式。
Const xlToRight = -4161
const xlColumns = &H2
const xlLinear = -4132
const xlDay = 1
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWB = objExcel.Workbooks.Open("T:\Science Data\SampleFile.xls")
Set objSheet = objwb.Sheets("sheet")
objSheet.Columns("J:J").Insert xlToRight
objSheet.Cells(1, 10).Value = "GetBestMatch"
objSheet.Cells(2, 10).Value = 1
If objSheet.Cells(2,2).Value <> "" Then objSheet.Cells(2, 10).Value = 1
set Range = objSheet.Range("J1:J" & objSheet.UsedRange.Rows.Count)
Range.DataSeries xlColumns, xlLinear,xlDay, 1, , False
objwb.Save
objwb.close
objExcel.quit
非常感谢您的建议。我对脚本进行了更改。删除了objSheet.Cells(2,10).Value = 1
行(以粗体突出显示),因为它更像是重复。我不确定我是否可以在下面加入以下代码。你给我的线很好,我可以重复键入相同的行,每行的单元格值不同。
想要查看是否在您推荐的If
语句中,它可以添加一个语句来继续检查B行。例如,检查B3是否有数据,如果B3有数据,则使J3为1,然后是B4,依此类推,然后一旦遇到空B单元,就停止向相应的J行添加1。我无法使用你的If语句进行任何操作,所以我搜索并尝试了一个我发现的Do
语句,但对它进行了一些更改(如下)。
希望下面的代码有点正确。我尝试过,但它没有填写任何东西。我试图检查B2数据,如果B2为空,则移动8个单元格到J2,添加1,然后向下移动一行,然后返回到B3,然后再从那里开始Do
语句。
Sub Test2()
Range("B2").Select
Do Until IsEmpty(ActiveCell)
ActiveCell.Offset(0,8).select
ActiveCell.value = 1
ActiveCell.Offset(1,-8).select
Loop
End Sub
答案 0 :(得分:0)
if(B2<>"") then(J2="1")
在上面的行B2
和J2
是(未定义的)变量,当你真的想要引用单元格B2和J2时。对后者使用这样的东西:
If objSheet.Range("B2").Value <> "" Then objSheet.Range("J2").Value = 1
但请注意,Range("B2")
可能与活动单元格相关。我发现使用Cells
集合通常更安全:
If objSheet.Cells(2, 2).Value <> "" Then objSheet.Cells(2, 10).Value = 1
另外,这个:
set Range = objSheet.Range("J1:J2"&objSheet.UsedRange.Rows.Count)
应该看起来像这样:
set Range = objSheet.Range("J1:J" & objSheet.UsedRange.Rows.Count)
话虽如此,我强烈建议您沉浸在一本关于VBA的好书中。一旦你很好地理解了VBA的工作原理,using it from VBScript就不会太难了。