Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por silvaj08
#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
Por osvaldomp
#61087
Experimente:
Código: Selecionar todos
Sub Efetuar_RegV2()
 Range("C8:L" & Cells(Rows.Count, 3).End(3).Row).Cut Sheets("REGISTROS").Cells(Rows.Count, 4).End(3)(2)
End Sub
Por silvaj08
#61088
Show meu amigo!
Em uma linha todo um trabalho que levei dias para montar....rsrsrs quem sabe sabe
Só ficou com um problema esse código, é que agora ele faz um recorte e cola no destino de uma forma que a formatação condicional não funciona......
No meu código no momento em que eu copiava eu colava no destino como valores e assim a minha formatação condicional funcionava perfeito
Se poder dar a dica nesse ajuste......
Muitíssimo obrigado pelo apoio
osvaldomp agradeceu por isso
Por osvaldomp
#61089
Entendi.
Experimente este, que não altera a formatação nem na origem e nem no destino dos dados.
Código: Selecionar todos
Sub Efetuar_RegV3()
 Range("C8:L" & Cells(Rows.Count, 3).End(3).Row).Copy
 Sheets("REGISTROS").Cells(Rows.Count, 4).End(3)(2).PasteSpecial xlValues
 Range("C8:L" & Cells(Rows.Count, 3).End(3).Row).Value = ""
End Sub

Por silvaj08
#61090
Bom dia meu amigo......muitíssimo obrigado!!!
Atendeu perfeitamente. Fiz só um ajuste pra que na hora que retornasse ele saísse da seleção do intervalo .....
Agora estou estudando o código pra entender sua lógica e fixar o entendimento
osvaldomp agradeceu por isso
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord