Excel VBA цикл по рабочим листам и установить значения в соответствии с вводом - PullRequest
0 голосов
/ 10 июня 2011

Я пытаюсь перебрать каждую таблицу и установить 100 строк столбца A в значение входного параметра. Я хочу, чтобы каждый лист вызывал поле ввода и имел значения столбца, равные этому входу, но происходит то, что 1-й рабочий лист получает последний ввод, и все значения листов для столбца A являются пустыми, за исключением листа 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 ]

2 голосов
/ 13 июня 2011

Кроме того, нет необходимости в цикле - просто используйте:

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

Что будет намного быстрее

2 голосов
/ 10 июня 2011

Вы можете изменить:

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

на:

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

Range само по себе будет применяться к текущему листу (который,Исходя из ваших симптомов, это первый рабочий лист), так что вы просто каждый раз перезаписываете ячейки в этом рабочем листе.

Вот почему они заканчиваются последним введенным значением, а остальные листы остаются пустыми.

...