Ir ao conteúdo

Posts recomendados

Postado

Galera, bom dia!

 

Sou novo no Vba e estou com uma dúvida aparentemente simples:

 

Tenho uma macro que copia e cola dados de uma planilha em outra, observem:

 

------------------------------------------------------------------------------------------------------

 

Sub Teste()
    
    Workbooks.Open ("R:\CERTIFICADOS\Lista Certificados (GERAL).xlsm")
 
    ActiveWorkbook.Sheets("Plan1").[b6:B100000].Value = ThisWorkbook.Sheets("PT-LC-001").[b6:B100000].Value
    ActiveWorkbook.Sheets("Plan1").[C6:C100000].Value = ThisWorkbook.Sheets("PT-LC-001").[C6:C100000].Value
    ActiveWorkbook.Sheets("Plan1").[D6:D100000].Value = ThisWorkbook.Sheets("PT-LC-001").[D6:D100000].Value
    ActiveWorkbook.Sheets("Plan1").[E6:E100000].Value = ThisWorkbook.Sheets("PT-LC-001").[E6:E100000].Value
    ActiveWorkbook.Sheets("Plan1").[F6:F100000].Value = ThisWorkbook.Sheets("PT-LC-001").[F6:F100000].Value
    ActiveWorkbook.Sheets("Plan1").[G6:G100000].Value = ThisWorkbook.Sheets("PT-LC-001").[G6:G100000].Value
    ActiveWorkbook.Sheets("Plan1").[H6:H100000].Value = ThisWorkbook.Sheets("PT-LC-001").[H6:H100000].Value
    ActiveWorkbook.Sheets("Plan1").[i6:I100000].Value = ThisWorkbook.Sheets("PT-LC-001").[i6:I100000].Value
    ActiveWorkbook.Sheets("Plan1").[J6:J100000].Value = ThisWorkbook.Sheets("PT-LC-001").[J6:J100000].Value
    ActiveWorkbook.Sheets("Plan1").[K6:K100000].Value = ThisWorkbook.Sheets("PT-LC-001").[K6:K100000].Value
    ActiveWorkbook.Sheets("Plan1").[M6:M100000].Value = ThisWorkbook.Sheets("PT-LC-001").[M6:M100000].Value
    ActiveWorkbook.Sheets("Plan1").[N6:N100000].Value = ThisWorkbook.Sheets("PT-LC-001").[N6:N100000].Value
    ActiveWorkbook.Sheets("Plan1").[O6:O100000].Value = ThisWorkbook.Sheets("PT-LC-001").[O6:O100000].Value
    ActiveWorkbook.Sheets("Plan1").[P6:P100000].Value = ThisWorkbook.Sheets("PT-LC-001").[P6:P100000].Value
    ActiveWorkbook.Sheets("Plan1").[s6:S100000].Value = ThisWorkbook.Sheets("PT-LC-001").[s6:S100000].Value
    ActiveWorkbook.Close savechanges:=True
    
    
End Sub
________________________________________________________________
 
e tenho um formulário com webbroser de um (gif animado loading) que gostaria que aparecesse enquanto essa macro acima fosse exercida
 
mas se antes dela eu colocar : UserForm1.show é aberto o formulário, mas a macro de copiar e colar nao funciona, gostaria que ficasse exibido o formulario enquanto a macro de copiar e colar e quando ela terminasse o formulário fechasse (unload UserForm1).
 
Alguem tem ideia de como fazer?
 
Obrigado
  • Membro VIP
Postado

Boa tarde erick

 

Para o pessoal te ajudar, você também tem que ajudar, anexe uma planilha de exemplo, com o código instalado e alguns dados laçados.

 

[]s

Postado

eu não sei o que é, mas tem algo estranho nessa macro e o fato de abrir o user form não funcionar

mas quando uma macro está rodando prende o funcionamento tanto da planilha quanto do vba e isso inclui o userform

 

mas tem coisa que pode ser melhorada

usar range completa em vez de coluna por coluna

    ActiveWorkbook.Sheets("Plan1").Range("B6:K100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("B6:K100000").Value2        ActiveWorkbook.Sheets("Plan1").Range("M6:P100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("M6:P100000").Value2            ActiveWorkbook.Sheets("Plan1").Range("S6:S100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("S6:S100000").Value2

e mais uma coisa, essa macro não devia demorar tanto para atuar assim

 

 

quando você fala de uma planilha para outra você está falando de ABAS ?

 

ActiveWorkbook =planilha ativa

ThisWorkbook= planilha onde está a macro

 

no caso você está chamando a macro de outra planilha para preencher a planilha ativa com os dados dela?

se for isso, quando se executa o userfor da outra planilha a outra planilha passa a ser a ativa

 

para isso funcionar você tem que referenciar o nome da planilha para onde vai os dados

 

Workbook("nomeplanilhaNova").Sheets("Plan1").Range("B6:K100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("B6:K100000").Value2

 

assim não importa qual planilha vai estar ativa e você pode fazer a operação a partir da planilha onde tem as macro e o usefor que você quer

  • Curtir 1
Postado

valeu Edcronos, vou tentar fazer aqui:

 

O objetivo é mandar da Lista de controle pra lista de certificados e enquanto manda mostrar o formulario tipo loading...

to postando as planilhas pra vocês sacarem, to achando elas muito pesadas também, sou novo nessa bagaça kk

valeu

Excel enviar.rar

Postado

a sua planilha está indo até a ultima linha de usada apesar de não estar preenchida

 

 

 

eu posso sugerir uma serie de mudanças para melhorar a performance

 

deixar toda a lista em uma aba sem formatação , sem formulas como banco de dados

não use tabelas do excel, apenas os dados

deixar uma aba para pesquisa e visualização do que se quer, essa sim pode se colocar as formulas e formatações, mas maneirando

 

essa macro é muito fácil de se fazer, mas essa sua planilha vai agarrar qualquer coisa que colocar

Postado

Mano,valeu, vou refazer essa planilha ai pra ficar mais leve mesmo, 

mas ai vou ter aquele mesmo problema do formulario, nao consigo nem a pau colocar ele pra rodar enquanto envio os dados...

Postado

como eu não sabia de onde você ia rodar a macro

eu coloquei na 

LISTAS DE CONTROLE (GERAL)

no modulo1

Sub Teste()' Workbooks.Open ("C:\Lista Certificados (GERAL).xlsm")    With ThisWorkbook.Sheets("PT-LC-001")        l = .Cells(Rows.Count, 2).End(xlUp).Row    ' ultima linha com dados da planilha        rane = "B6:S" & l    ' monta a range        Workbooks("Lista de Certificados (GERAL).xlsm").Sheets("Plan1").Range(rane).Value2 = .Range(rane).Value2        '  ActiveWorkbook.Close savechanges:=True 'salvar True    End WithEnd Sub
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...