我正在尝试循环遍历每个工作表并将100行A列设置为输入参数的值。我希望每个工作表调用一个输入框并使列的值等于该输入,但发生的情况是第一个工作表获取最后一个输入,并且columnA的所有工作表值都是空白,除了工作表1。
Dim wkbkorigin As Workbook
Set wkbkorigin = Workbooks.Open("C:\bookB.xls")
For Each ThisWorkSheet In wkbkorigin.Worksheets
Subject = InputBox("Enter the 'Subject' field for " & ThisWorkSheet.Name & ":")
For i = 1 To 100
Range("A2").Cells(i, 1) = Subject
Next
Next
答案 0 :(得分:2)
您可能想要更改:
Range("A2").Cells(i, 1) = Subject
为:
ThisWorkSheet.Range("A2").Cells(i, 1) = Subject
Range
本身将适用于当前工作表(根据您的症状,这是第一个工作表),所以您所做的只是覆盖该工作表中的单元格每一次。
这就是为什么他们最终输入的最后一个值,而其他表格保持空白。
答案 1 :(得分:2)
此外,无需循环 - 只需使用:
ThisWorkSheet.Range("A2:A100").Value = Subject
哪个会快得多