none
Erro 424 em planilha - o objeto é obrigatório RRS feed

  • Pergunta

  • Boa Tarde frequentadores do fórum.

    Meu nome é Saulo Fiori e tenho um problema com uma planilha.

    Esse é o código que coloquei para executar no evento open da workbook:

    Dim casos As Worksheet
    Set casos = Worksheets("Casos")

    casos.Select
     
    Dim linhas As Variant
    linhas = casos.UsedRange.Rows.Count

    With casos

    .Range("A7").Select

    Dim regs As Variant
    Static ThisValue As Range
    Static ThisValue2 As Range

    For regs = 7 To linhas 'regs = 7 8     'ThisValue = ThisValue + 1
    With ThisValue
        Set ThisValue = Cells(regs, 1).Value 'ThisValue = valor da celula A7
        If ThisValue = 1 Then
            ThisValue2 = Range(regs, regs).Select
            ThisValue2.Copy Destination:=Plan3.Range("A" & regs).Select
            ActiveCell.Offset(1, 0).Select
            regs = regs + 1
        End If
        If ThisValue <> 1 Then
            ActiveCell.Offset(1, 0).Select
            regs = regs + 1
        End If
    End With
    Next
    End With
    Range("K5").Value = ThisValue

    o mesmo gera o erro 424 na linha que está marcada em negrito. Como o VBA não entende que ThisValue é um objeto? O objeto foi declarado como tipo range, e setado. Onde se encontra meu erro?

    terça-feira, 23 de maio de 2017 19:57

Todas as Respostas

  • Saulo

    vejo dois problemas no seu método...

    você abre um with ThisValue sem que o objeto tenha sido carregado. acho que esse trecho não deveria existir. 

    o outro é onde gera o erro... ThisValue é do tipo range e você esta atribuindo um valor.

    altere:

    Set ThisValue = Cells(regs, 1).Value

    para:

    Set ThisValue = Cells(regs, 1)

    Abraço 


    Natan

    quarta-feira, 24 de maio de 2017 01:05
  • Caro Natan,

    Muito obrigado pela sua ajuda.

    Agora o problema é outro:

    Gera um erro 28 - espaço insuficiente para pilha, justamente na linha que está em negrito.

    No mesmo código, alterei onde fui instruído:

    Dim casos As Worksheet
    Set casos = Worksheets("Casos")

    casos.Select
     
    Dim linhas As Variant
    linhas = casos.UsedRange.Rows.Count

    With casos

    .Range("A9").Select

    Dim regs As Variant
    Dim ThisValue As Range
    Dim ThisValue2 As Range

    For regs = 9 To linhas 'regs = 7 8     'ThisValue = ThisValue + 1
    Set ThisValue = Cells(regs, 1)
        If ThisValue = 1 Then
            ThisValue = ThisValue + 1
            Set ThisValue2 = Range(regs, regs).Select
            ThisValue2.Copy Destination:=Plan3.Range("A" & regs).Select
            ActiveCell.Offset(1, 0).Select
            regs = regs + 1
        End If
        If ThisValue <> 1 Then
            ActiveCell.Offset(1, 0).Select
            regs = regs + 1
        End If
    Next

    Range("K5").Value = ThisValue

    quinta-feira, 25 de maio de 2017 15:03