- 13 Dez 2020 às 15:36
#61084
Boa tarde amigos sou novo no chat e mais novo ainda na utilização do vba.....
Mas seguinte, tenho uma planilha em que o usuário preenche os dados em um intervalo variável que pode ser de C8:L8, como pode variar até de C8:L70, ai iz uma macro que cópia o que foi preenchido nesses intervalos e joga para uma nova aba, colando sempre abaixo do ultimo registro, criando assim uma base de dados.
o problema é na hora que o usuário executa a macro de registro demora muito
o código que to executando é:
Sub Efetuar_Reg()
Application.DisplayAlerts = False
If Range("C9") = "" Then
Range("C8:L8").Copy
Sheets("REGISTROS").Select
linha_REGISTROS = Range("D28").End(xlDown).Row + 1
Range("D" & linha_REGISTROS).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ENTRADAS").Select
Application.CutCopyMode = False
Range("C8:L8").Select
Selection.ClearContents
Range("B2").Select
Else
Linha = Range("C8").End(xlDown).Row
Range("C8" & ":L" & Linha).Copy
Sheets("REGISTROS").Select
linha_REGISTROS = Range("D28").End(xlDown).Row + 1
Range("D" & linha_REGISTROS).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ENTRADAS").Select
Application.CutCopyMode = False
Range("C8" & ":L" & Linha).Select
Selection.ClearContents
Range("B2").Select
End If
Application.DisplayAlerts = True
End Sub
A primeira parte do código coloquei desse jeito, pois qdo o intervalo tem apenas uma linha a macro copiava na base de dados espaços em branco e como a base de dados é formatada como tabela tinha problemas com isso
Mas seguinte, tenho uma planilha em que o usuário preenche os dados em um intervalo variável que pode ser de C8:L8, como pode variar até de C8:L70, ai iz uma macro que cópia o que foi preenchido nesses intervalos e joga para uma nova aba, colando sempre abaixo do ultimo registro, criando assim uma base de dados.
o problema é na hora que o usuário executa a macro de registro demora muito
o código que to executando é:
Sub Efetuar_Reg()
Application.DisplayAlerts = False
If Range("C9") = "" Then
Range("C8:L8").Copy
Sheets("REGISTROS").Select
linha_REGISTROS = Range("D28").End(xlDown).Row + 1
Range("D" & linha_REGISTROS).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ENTRADAS").Select
Application.CutCopyMode = False
Range("C8:L8").Select
Selection.ClearContents
Range("B2").Select
Else
Linha = Range("C8").End(xlDown).Row
Range("C8" & ":L" & Linha).Copy
Sheets("REGISTROS").Select
linha_REGISTROS = Range("D28").End(xlDown).Row + 1
Range("D" & linha_REGISTROS).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ENTRADAS").Select
Application.CutCopyMode = False
Range("C8" & ":L" & Linha).Select
Selection.ClearContents
Range("B2").Select
End If
Application.DisplayAlerts = True
End Sub
A primeira parte do código coloquei desse jeito, pois qdo o intervalo tem apenas uma linha a macro copiava na base de dados espaços em branco e como a base de dados é formatada como tabela tinha problemas com isso