Я новичок в VBA, приведенный ниже код - это то, что мне удалось до сих пор, но я хотел бы спросить, может ли кто-нибудь помочь с форматированием и копированием формул, пожалуйста?
У меня есть приведенный ниже код, работающий в моем проекте, который передает данные с листа под названием «Обновить данные проверки качества» на другие листы на основе имен пользователей одним из двух способов:
- Увидев, что имя пользователя рабочего листа уже существует, и просто скопировав соответствующие данные; или,
- Создав новый рабочий лист с именем пользователя в качестве имени ws и скопировав данные из листа данных.
Что я хотел бы добавить, так это то, что при создании нового пользовательского листа формат и форумы из первого пользовательского листа копируются в новые листы и каждый дополнительный созданный пользовательский лист.
Я видел много потоков для копирования вставки и аргументов между буфером обмена и специальной вставкой, но теперь я довольно запутался и не знаю, как это сделать для листов, которых в настоящее время не существует. Не могли бы мне помочь?
Public Sub transfer()
Dim ws As Worksheet, wsName As Worksheet
Dim lRow As Long, lPaste As Long
Dim sName As String
Set ws = Worksheets("Update Quality Check Data")
With ws
For lRow = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
sName = .Cells(lRow, 2)
On Error Goto NoSheettFound
Jumper:
Set wsName = Worksheets(sName)
On Error Goto 0
lPaste = wsName.Cells(Rows.Count, 3).End(xlUp).Row + 1
.Cells(lRow, 1).Copy Destination:=wsName.Cells(lPaste, 3)
.Cells(lRow, 3).Copy Destination:=wsName.Cells(lPaste, 4)
Next lRow
End With
Exit Sub
NoSheettFound:
Set wsName = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
wsName.Name = sName
ws.Select
Goto Jumper
End Sub
С уважением
Джон
Sub TestBob() Dim ws As Worksheet Set ws = Worksheets("Bob") Call format1(ws.Range("D5:G10")) End Sub
... это, конечно, при условии, что в вашем шаблоне есть те же ячейки, отформатированные так, как вы хотите. 21.07.2016