Ir ao conteúdo
  • Cadastre-se

Dúvida Macro no Excel


diegobh

Posts recomendados

Bom Dia Galera!

tenho 2 planilhas de orçamento, 1 de orçamento mesmo e a outra contendo os valores de custo (gasolina, funcionário, hr extra, uniformes, cargos etc).

Tenho a seguinte macro:

Sub Func()
Dim xl As New Excel.Application
Range("A2").Select
Selection.End(xlDown).Select
linha = ActiveCell.Row
Cells(linha, 1).Select
Range(Selection, Selection.End(xlUp)).Select
ActiveWorkbook.Names.Add Name:="func", RefersToR1C1:="='Cargos'!R2C1:R" & linha & "C1"
Workbooks("Orçamento_Conf.xlsm").Sheets("Cargos").Visible = 1
ActiveWorkbook.Worksheets("Cargos").Range("A2:A5000").Copy Destination:=Workbooks("Orçamento_Conf.xlsm").Worksheets("Cargos").Range("A2")
Workbooks("Orçamento_Conf.xlsm").Sheets("Cargos").Visible = 2
MsgBox "Funcionários Atualizado com Sucesso!"
End Sub

Porém dá erro ao rodar esta macro, caso a planilha Orçamento_Conf.xlsm não esteja aberta.

Como faço para não necessitar a planilha Orçamento_Conf.xlsm estar aberta ou como faço para ela ser aberta em segundo plano e depois ser fechar ao término da macro?

Consegui alguns comandos para abrir a outra planilha, salvar etc. mas ainda não está bom. Não está bom porque ao abrir a outra planilha - depois de ter executado a macro - parece que não foi salva, o dado adicionado não consta nela e também aparece na célula F12 (da planilha OrçamentoConf) da 1a folha uma data (da execução da macro, parece) . =(( Alguma ideia?

Comando:

Sub Func()
Dim xl As New Excel.Application
Range("A2").Select
Selection.End(xlDown).Select
linha = ActiveCell.Row
Cells(linha, 1).Select
Range(Selection, Selection.End(xlUp)).Select
ActiveWorkbook.Names.Add Name:="func", RefersToR1C1:="='Cargos'!R2C1:R" & linha & "C1"
Workbooks.Open Filename:="Orçamento_Conf.xlsm"
Workbooks("Orçamento_Conf.xlsm").Sheets("Cargos").Visible = 1
ActiveWorkbook.Worksheets("Cargos").Range("A2:A5000").Copy Destination:=Workbooks("Orçamento_Conf.xlsm").Worksheets("Cargos").Range("A2")
Workbooks("Orçamento_Conf.xlsm").Sheets("Cargos").Visible = 2
Workbooks("Orçamento_Conf.xlsm").Save
Workbooks("Orçamento_Conf.xlsm").Close
MsgBox "Funcionários Atualizado com Sucesso!"
End Sub

E a outra dúvida é o seguinte: Como fazer uma macro para que toda vez que eu mude a aba da planilha (por exemplo, estou na aba conf e troquei para a aba custos) e se a aba que eu estiver anteriormente for de nome conf (ou alguns ouros nomes específicos), ela ficar escondida (visible 2) automaticamente?

Ja consegui resolver xD

Resposta:

Private Sub Worksheet_Deactivate()
Sheets("conf").Visible = 2
End Sub

Obrigado pela atenção galera,

Falou

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!