Usuário com melhor resposta
Alternativa para uso do select dentro de uma planilha (sheet)

Pergunta
-
Senhores,
Não tem jeito!
O Felipe Gualberto já me disse que eu deveria evitar comandos que utilizassem o select, e qdo aciono uma planilha passei a utilizar o activate, e resolveu.
Porém qdo se trata de trabalhar com linhas, áreas, colunas, usando autofit, ainda não encontrei uma alternativa para o select e efetivamente sempre ocorre o erro 1004.
Por favor, existe alguma forma de contornar esses erros e definir tamanhos de linhas e colunas, e utilizr o autofit sem o erro 1004?Obrigado
Rui Martins
Respostas
-
Oi Rui
Para usar o Autofit, por exemplo, nas colunas A:C não há necessidade de Select
Basta isto
Columns("A:C").AutoFit
Espero que ajude
M.
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator quarta-feira, 19 de agosto de 2015 13:31
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 5 de novembro de 2015 15:33
-
"Existe alguma diferença em utilizar esses comando em uma sub de evento, tipo Activate, Deactivate, ou de um módulo de macro?"
Não existe diferença."esse método direto, tipo Columns("A:C").AutoFit, também não funcionou"
Faça uma qualificação mais específica dos seus objetos, como:
ThisWorkbook.Worksheets("Plan1").Columns("A:C").AutoFit
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 5 de novembro de 2015 15:33
Todas as Respostas
-
Olá Rui,
Se entendi direito você quer redimensionar altura e largura de células,
Pois bem, segue um exemplo abaixo
Rows("4:11").Select Selection.RowHeight = 36 Columns("B:D").Select Selection.ColumnWidth = 14.57
Este exemplo seleciona as linhas de 4 a 11 e fixa a altura para 36 pixels, depois seleciona as colunas de B a D e fixa a largura para 14.57
Seria isso que você precisa ?
-
Oi Rui
Para usar o Autofit, por exemplo, nas colunas A:C não há necessidade de Select
Basta isto
Columns("A:C").AutoFit
Espero que ajude
M.
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator quarta-feira, 19 de agosto de 2015 13:31
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 5 de novembro de 2015 15:33
-
-
-
-
Oi André,
Sim, tem, tanto bloqueadas, como mescladas, às vezes as duas.
Mas qto às bloqueadas, normalmente eu desprotejo as planilhas antes de fazer as alterações e protejo depois, antes de liberar para o operador, só não faço o mesmo com as mescladas.
A propósito, posso seguir o mesmo raciocínio do autofit, para RowHeight e similares?
Obrigado.
Rui Martins
- Editado Rui Lanhoso Martins quarta-feira, 19 de agosto de 2015 18:17
-
-
testei e continua retornando erro 1004
mudei todos os select para activate e continuou a mesma coisa
Rui Martins
- Editado Rui Lanhoso Martins quarta-feira, 19 de agosto de 2015 20:53
-
-
-
1. Sobre utilizar o gravador de macros, já fiz e continua retornando erro.
O pior é que não acontece em todos os comandos. Tenho alguns procedimentos que estão funcionando sem problemas.
Existe alguma diferença em utilizar esses comando em uma sub de evento, tipo Activate, Deactivate, ou de um módulo de macro?2. esse método direto, tipo Columns("A:C").AutoFit, também não funcionou. Pergunto se a posição do comando dentro da Sub, influencia, ou alguma instrução anterior.
O que me intriga é que não é em todos os casos que ocorre o erro.
exemplo 1: Sub AjustaMonitoramento() ' ' 05 AjustaMonitoramento Macro ' ' p02_Monitoramento.Activate p02_Monitoramento.Unprotect Rows("1:1").Select Selection.RowHeight = 40.5 Rows("2:2").Select Selection.RowHeight = 24 Rows("3:3").Select Selection.RowHeight = 43 Rows("7:7").Select Selection.RowHeight = 5 Rows("8:113").AutoFit Range("A1:A22").Select '[AjstMonitoramento].() .Select ActiveWindow.Zoom = True Range("G8").Select '[CelFxMonit] ActiveWindow.FreezePanes = True Range("B8").Select '[CelIniMonit] p02_Monitoramento.Protect End Sub ===================================================== exemplo 2: Private Sub Worksheet_Activate() ' ActiveWindow.DisplayHorizontalScrollBar = True ActiveWindow.DisplayVerticalScrollBar = True ActiveWindow.FreezePanes = False DiretorioAtual = p99_VariaveisTrab.[varDirAtual] NomeArqGravacao = p99_VariaveisTrab.[varNomeArqGravacao] Range("A1:A16").Select '[AjstMntAcaoPac] ActiveWindow.Zoom = true p10_mntAcaoPac.Unprotect If p01_Inicio.[DesOper] = "D" Then m03_MostraPlan.MostraTodasPlanilhas Else m02_Principal.NVeElemntTela ActiveWindow.Caption = "Monitoramento das Ações Pactuadas => " & DiretorioAtual & "\" & NomeArqGravacao End If Application.Goto Reference:=p10_mntAcaoPac.Range("a1"), scroll:=True p10_mntAcaoPac.Range("7:113").AutoFit '[LinDadosMntAcaoPac] p10_mntAcaoPac.Rows("6:6").Select Selection.EntireRow.Hidden = True p10_mntAcaoPac.Rows("2:3").Select Selection.RowHeight = 25 p10_mntAcaoPac.Rows("4:4").Select Selection.RowHeight = 40 p10_mntAcaoPac.Range("F7").Select '[CelFxMntAcaoPac] congela paineis de cabeçalho ActiveWindow.FreezePanes = True p10_mntAcaoPac.Range("B7").Select p10_mntAcaoPac.Protect End Sub
Rui Martins
-
"Existe alguma diferença em utilizar esses comando em uma sub de evento, tipo Activate, Deactivate, ou de um módulo de macro?"
Não existe diferença."esse método direto, tipo Columns("A:C").AutoFit, também não funcionou"
Faça uma qualificação mais específica dos seus objetos, como:
ThisWorkbook.Worksheets("Plan1").Columns("A:C").AutoFit
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 5 de novembro de 2015 15:33
-