excel vba循环遍历工作表并根据输入设置值

时间:2011-06-10 01:04:24

标签: excel vba excel-vba scripting

我正在尝试循环遍历每个工作表并将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

2 个答案:

答案 0 :(得分:2)

您可能想要更改:

Range("A2").Cells(i, 1) = Subject

为:

ThisWorkSheet.Range("A2").Cells(i, 1) = Subject

Range本身将适用于当前工作表(根据您的症状,这是第一个工作表),所以您所做的只是覆盖该工作表中的单元格每一次。

这就是为什么他们最终输入的最后一个值,而其他表格保持空白。

答案 1 :(得分:2)

此外,无需循环 - 只需使用:

ThisWorkSheet.Range("A2:A100").Value = Subject

哪个会快得多