Ну, я думаю, что это глупый вопрос, но я не могу понять их сам.
У меня есть WB, в котором есть различные макросы. Один для копирования шаблона (создание нового WS каждый раз, когда это необходимо), который заполняет пользователь. После этого один макрос для копирования результатов в WS «Summary», затем другой, который применяет формулу, после этого один, который применяет оценку (хорошо, плохо, хорошо) и последний, который копирует формат ячеек scpecifics, чтобы дать правильное форматирование для печати.
Последний действует странно. Я создал более 40 WS (копирование шаблона), но форматирование останавливается на 25-й строке. Я не знаю почему.
Я использовал формулу для копирования до последней строки, но ничто не может заставить эту вещь работать.
Ниже следует результат и код. Я подумал, что проблема может заключаться в том, что я сжал все команды в одной подпрограмме, поэтому я разбил ее на различные и создал кнопку «триггер» для активации всех этих команд.
Если мое объяснение не достаточно, просто попросите дополнительную информацию.
Заранее спасибо за помощь!
Ошибка при форматировании
Код, который я использовал.
==============
Sub FormatarCab()
Dim sht As Worksheet
Dim LastRow As Long
Set sht = ActiveSheet
'Using Find Function (Provided by Bob Ulmas)
LastRow = sht.Cells.Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).Row
'Para o cabeçalho
Worksheets("Descritivo").Range("B50").Copy
Worksheets("Avaliação Todos").Range("A1:E1").PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End Sub
'-------------------------------------
Sub FormatarNome()
Dim sht As Worksheet
Dim LastRow As Long
Set sht = ActiveSheet
'Using Find Function (Provided by Bob Ulmas)
LastRow = sht.Cells.Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).Row
'Para os Nomes das Abas
Worksheets("Descritivo").Range("B52").Copy
Worksheets("Avaliação Todos").Range("A2:A" & LastRow).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End Sub
'-------------------------------------
Sub FormatarConceito()
Dim sht As Worksheet
Dim LastRow As Long
Set sht = ActiveSheet
'Using Find Function (Provided by Bob Ulmas)
LastRow = sht.Cells.Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).Row
'Para o Conceito
Worksheets("Descritivo").Range("B54").Copy
Worksheets("Avaliação Todos").Range("E2:E" & LastRow).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End Sub
'-------------------------------------
Sub FormatarValores()
Dim sht As Worksheet
Dim LastRow As Long
Set sht = ActiveSheet
'Using Find Function (Provided by Bob Ulmas)
LastRow = sht.Cells.Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).Row
'Para os valoreso
Worksheets("Descritivo").Range("B56").Copy
Worksheets("Avaliação Todos").Range("B2:D" & LastRow).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End Sub
==============
Структура для функции LastRow
==============
Option Explicit
'Common Functions required for all routines:
Function LastRow(Sh As Worksheet)
On Error Resume Next
LastRow = Sh.Cells.Find(What:="*", _
After:=Sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
searchdirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
Function LastCol(Sh As Worksheet)
On Error Resume Next
LastCol = Sh.Cells.Find(What:="*", _
After:=Sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
searchdirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
End Function
==============