none
Objeto válido para todos os procedimentos? RRS feed

  • Pergunta

  • Como fazer para, no código a seguir, não precisar repetir Set celula = Sheets(1).Cells(1, 1) em todos os procedimentos?

    Sub branco()
    
    Set celula = Sheets(1).Cells(1, 1)
    
    celula.Font.Bold = False
    
    celula.Font.Color = vbBlack
    
    celula.Interior.Color = vbWhite
    
    End Sub
    
    Sub amarelo()
    
    Set celula = Sheets(1).Cells(1, 1)
    
    celula.Font.Bold = True
    
    celula.Font.Color = vbRed
    
    celula.Interior.Color = vbYellow
    
    End Sub
    
    
    Sub preencher()
    
    
    Set celula = Sheets(1).Cells(1, 1)
    
    
    celula.Value = -500
    
    If celula.Value < 0 Then
    
    amarelo
    
    Else
    
    branco
    
    End If
    
    
    End Sub

    quarta-feira, 30 de outubro de 2013 19:18

Respostas

  • Não é possível fazer isso, você tem que declarar a variável antes de utilizá-la. Uma alternativa:

    Sub branco()
      With Worksheets(1).Cells(1, 1)
        .Font.Bold = False
        .Font.Color = vbBlack
        .Interior.Color = vbWhite
    End Sub

    Se esses código são executados em sequência, você pode declarar uma variável em nível de módulo e aproveitá-la em todos os os subprocedimentos:

    Dim mcélula As Excel.Range
    
    Sub fnc()
      Set mcélula = Worksheets(1).Cells(1, 1)
      
      branco
      amarelo
      preencher
    End Sub
    
    Sub branco()
        mcélula.Font.Bold = False
        mcélula.Font.Color = vbBlack
        mcélula.Interior.Color = vbWhite
    End Sub
    
    Sub preencher()
      mcélula.Value = -500
      If mcélula.Value < 0 Then
        amarelo
      Else
        branco
      End If
    End Sub

    Repetindo: a variável de nível de módulo mcélula deve ter sido atribuída antes de serem executados os outros subprocedimentos.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta AndersonFDiniz quinta-feira, 31 de outubro de 2013 00:47
    quarta-feira, 30 de outubro de 2013 21:49
    Moderador