none
Erro em tempo de execução '424': O objeto é obrigatório RRS feed

  • Pergunta

  • Olá,

    o erro do titulo insiste em aparecer na macro abaixo.

    O erro ocorre em **LRow = Main.Range("B500000").End(xlUp).Row**

    Mains é a planilha com a qual estou trabalhando.

    Será que poderiam, por favor, me ajudar, por que o erro continua?

    Obrigado.


    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Dim LRow As Long
    Dim LRowV As Long
       
    'Ajustando as colunas de variação
            LRow = Main.Range("B500000").End(xlUp).Row
            LRowV = Main.Range("M500000").End(xlUp).Row
    
    'Fórmulas
        If LRowV > LRow Then
            Main.Range("M" & LRow + 1 & ":P" & LRowV).Clear
            ElseIf LRowV < LRow Then
            Main.Range("FormulaBase").Copy
            Geography.Range("M" & LRowV + 1 & ":P" & LRow).PasteSpecial xlPasteFormulas
        Else: GoTo SemAlteracao:
        End If
        
    'Formatação
        Main.Range("C23:C" & LRow).Copy
        Main.Range("P23:M" & LRow).PasteSpecial xlPasteFormats
        Main.Range("D23:D" & LRow).Copy
        Main.Range("Q23:N" & LRow).PasteSpecial xlPasteFormats
        Main.Range("P23:N" & LRow).Copy
        Main.Range("R23:P" & LRow).PasteSpecial xlPasteFormats
        Main.Range("P23:E" & LRow).Copy
        Main.Range("R23:O" & LRow).PasteSpecial xlPasteFormats
        
    SemAlteracao:
        
        ActiveSheet.Range("B9").Activate
        
    Application.CutCopyMode = False
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
        
    End Sub




    terça-feira, 24 de novembro de 2015 14:10

Respostas

  • Certo, espero que tenha lido as orientações sobre seu código compilar.

    Para que Main seja um objeto válido, faça algo como:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Set Main = ThisWorkbook.Worksheets("Planilha Principal")
        '...resto do código

    Em que Planilha Principal é o nome da planilha que Main representa.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br


    quarta-feira, 25 de novembro de 2015 11:56
    Moderador

Todas as Respostas

  • Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    Seu código não está compilando. O que é a variável Main? Uma planilha? Se sim, você deve atribuí-la a alguma planilha antes de consumí-la.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    terça-feira, 24 de novembro de 2015 18:28
    Moderador
  • Ola,

    Sim, o "Main" é uma planilha.

    Como ficaria? Como deveria fazer pra atribuí-la?

    Obrigado.

    quarta-feira, 25 de novembro de 2015 11:31
  • Certo, espero que tenha lido as orientações sobre seu código compilar.

    Para que Main seja um objeto válido, faça algo como:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Set Main = ThisWorkbook.Worksheets("Planilha Principal")
        '...resto do código

    Em que Planilha Principal é o nome da planilha que Main representa.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br


    quarta-feira, 25 de novembro de 2015 11:56
    Moderador
  • Insira:

    Dim Main as Worksheet
    
    set Main = Plan1

    Plan1 deve ser referir ao índice da planilha que você vai usar, o nome entre parenteses que aparece em Microsoft Excel Objects do lado do nome que você atribuiu a planilha.

    quarta-feira, 25 de novembro de 2015 11:57
  • Eu vi sim e alterei a pergunta pra ficar no padrão.

    Muito obrigado, deu certo.


    quarta-feira, 25 de novembro de 2015 12:30
  • Obrigado por manter na formatação certa, mas não era isso o ponto do meu comentário: eu estava falando de compilação do código (que foi a segunda parte da minha primeira resposta).

    Costumo sempre recomendar que programadores de VBA testem a compilação do código regularmente para seus programas se tornarem mais robustos e que sempre utilizem a instrução de declaração Option Explicit.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    quarta-feira, 25 de novembro de 2015 12:46
    Moderador