Всем здоровья и благополучия! Когда-то где-то нашел макрос , который заполняет шаблон документа данными из выбранной строки (где активная ячейка) в таблице (Лист "Реестр"). В шаблоне (Лист "Печать бланка") имеются именованные области (в примере - 10 областей), в которые циклом вставляются данные. Код работает:
Код
Option Explicit
Private Sub CommandButton1_Click()
Dim nomer_stroki As Long, massiv() As Variant, i As Integer
nomer_stroki = ActiveCell.Row
massiv = Range(Cells(nomer_stroki, 1), Cells(nomer_stroki, 10))
With sh1
For i = 1 To 10
.Range("yacheyka_" & i) = massiv(1, i)
Next
End With
End Sub
Есть задача заполнить несколько шаблонов (до 12-ти) одинаковыми данными (причем не в каждом шаблоне используются все 10 полей данных). Попробовал (пока на три шаблона)организовать второй цикл (по листам) - ругается на второй Next:
Код
Option Explicit
Private Sub CommandButton1_Click()
Dim nomer_stroki As Long, massiv() As Variant, i As Integer, j As Integer
nomer_stroki = ActiveCell.Row
massiv = Range(Cells(nomer_stroki, 1), Cells(nomer_stroki, 10))
For j = 1 To 3
With Sheets("sh" & j)
For i = 1 To 10
.Range("yacheyka_" & i) = massiv(1, i)
Next
'Next
End With
End Sub
Не владею VBA. Писал по логике. Прошу исправить/подсказать/помочь. Заранее благодарен!
Новая ошибка. У меня одинаковые имена областей на каждом листе бланков. Причем на листе "Печать бланка" ОБЛАСТЬ - Книга (я не могу / не знаю как) изменить. на двух других листах Область - соотв. листы. Может здесь криминал?
Криминал думаю в том, что на первом листе нет именованных диапазонов, вернее они относятся к книге. Можно пробовать или переделать эти диапазоны, или на первом шаге обращаться к диапазону книги, а на 2 и 3 - к листам. P.S.Хотя... отработало банально так:
Код
Private Sub CommandButton1_Click()
Dim nomer_stroki As Long, massiv() As Variant, i As Integer, j As Integer
nomer_stroki = ActiveCell.Row
massiv = Range(Cells(nomer_stroki, 1), Cells(nomer_stroki, 10))
With sh1
For i = 1 To 10
.Range("yacheyka_" & i) = massiv(1, i)
Next
End With
With sh2
For i = 1 To 10
.Range("yacheyka_" & i) = massiv(1, i)
Next
End With
With sh3
For i = 1 To 10
.Range("yacheyka_" & i) = massiv(1, i)
Next
End With
End Sub
Т.е. можно просто идти циклом по листам, но не от 1, а от 2 то 4, используя индексы листов, а не кодовые имена. Или используя индексы массива с именами листов.