excel vba通过工作表循环,并根据input设置值

我试图循环通过每个工作表,并将列A的100行设置为input参数的值。 我希望每个工作表调用一个input框,并且列的值等于该input,但发生的情况是第一个工作表正在获取最后一个input,除了工作表1以外,columnA的所有工作表值都是空白的。

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 

您可能需要更改:

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

至:

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

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

这就是为什么他们最后input的值,而其他工作表保持空白。

而且,不需要循环 – 只需使用:

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

这将会更快