Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por pjuliocesar 11 Jan 2019 às 18:05
Membro 1 Estrela
Mensagens: 18
Reputação: 0
#40057
Ola,

Pelo o que eu pesquisar na internet, creio que o Excel nao tem uma ferramenta pronta para o que eu desejo fazer. Então gostaria de desenvolver uma macro que fizesse a seguinte atividade:

1) Tenho diversas coluna com dias do ano em sequência.

2) Esses dias estão dependentes da celula C1

3) O objetivo da macro é alterar a largura das colunas para o valor de "12" que possuem na linha dois os dias sábados e domingos.
E nas demais colunas, deixar com largura 33,14. (Como segue no exemplo)

Dessa forma, caso o usuário troque o valor da celula C1. Todas as demais colunas preenchidas devem alterar a largura conforme a regra dita em 3.

Obs: As referências já estão conforme problema real, ou seja:
- A celula que o usuario altera é a C1
- As colunas que devem ser verificadas pelos código é de C até MW

:!:
Apenas usuários registrados podem ver ou baixar anexos.
Avatar do usuário
Por Jimmy 11 Jan 2019 às 18:40
Membro 4 Estrelas
Mensagens: 392
Reputação: 254
#40058
Julio,

Teste a macro abaixo, que deve ser colocada na Plan1, e mão em módulo.

Mudei um pouco a definição que fez, mas se acha que ficou pior, posso alterar. Em vez de limitar até a coluna MW, a verificação é feita até a última célula preenchida da linha 3.

Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Cells(1, "C")) Is Nothing Then
        TamN = 10
        Ate = Cells(1, Columns.Count).End(xlToLeft).Column
        For Col = 3 To Ate
            TamA = Columns(Col).ColumnWidth         'Tamanho atual da coluna
            Data = Cells(1, Col).Value
            If IsDate(Data) Then _
                If Application.WorksheetFunction.Weekday(Data, 2) >= 6 Then TamN = 12 _
                                                                       Else TamN = 33.14
            If TamA <> TamN Then Columns(Col).ColumnWidth = TamN    'Só altera a largura caso necessário
        Next
    End If
End Sub


Jimmy San Juan

P.S.:
  • Alterei o código. Inclui uma consistência da data lida.
  • Apesar de aparentemente verdadeiro, não estou considerando o fato das datas estarem em sequencia. Ou seja, se amanhã passarem a não estar, a macro vai rodar da mesma forma.
Por pjuliocesar 14 Jan 2019 às 12:39
Membro 1 Estrela
Mensagens: 18
Reputação: 0
#40127
Obrigado Jimmy,

Seu código foi suficiente para o que eu estava precisando :!:
Excelente!
Muito obrigado