Página 1 de 1

Variável recebe informação ao invés da Célula

Enviado: 15 Out 2021 às 15:58
por BrunoLuiel
Boa tarde Colegas!

Não entendi o que estou fazendo de errado... Criei a variavel "LancData" como Range pra não ter que ficar descrevendo no codigo inteiro o seu caminho, que é "Sheets(2).Range("A" & LinPag)". No entanto, quando chega na linha de depuração ao invés da celula correspondente ser preenchida com a variável "DebData" (que é uma data), a variavel "LancData" fica com o valor da data. Ou seja, ao invés da celula representada pela variavel "LancData" receber a data que está contida na variável "DebData", a váriável que recebe a informação, e a Célula continua em branco.

O que estou fazendo de errado? Já declarei, setei...
Código: Selecionar todos
Sub PAGAICMS()

    LinDeb = 440
    LinPag = 2
    
    Dim LancData, LancDebito, LancCredito, LancValor, LancH, another As Range

    Set LancData = Sheets(2).Range("A" & LinPag) 'Não funcionou Não funcionou Não funcionou Não funcionou 
    Set DebData = Sheets(1).Range("I" & LinDeb)
    Set LancDebito = Sheets(2).Range("B" & LinPag) 
    Set LancCredito = Sheets(2).Range("C" & LinPag)
    Set LancValor = Sheets(2).Range("D" & LinPag) 
    Set LancH = Sheets(2).Range("F" & LinPag) 
    LancHist = "Pagamento do ICMS sobre compras Interestaduais a recolher, conforme DARE de Nr. Lançamento " & Sheets(1).Range("C" & LinDeb) & ", Complemento " & Sheets(1).Range("F" & LinDeb) & " e código de receita " & Sheets(1).Range("G" & LinDeb) & "."
    LancHistJuros = "Pagamento de JUROS do ICMS sobre compras Interestaduais a recolher, conforme DARE de Nr. Lançamento " & Sheets(1).Range("C" & LinDeb) & ", Complemento " & Sheets(1).Range("F" & LinDeb) & " e código de receita " & Sheets(1).Range("G" & LinDeb) & "."


    Do Until Sheets(1).Range("B" & LinDeb) = ""
        VlrDebito = Sheets(1).Range("J" & LinDeb)
        VlrJuro = Sheets(1).Range("L" & LinDeb) - VlrDebito
        If VlrJuro = 0 Or VlrJuro = "" Or VlrJuro = "0" Then
            LancData = DebData
            LancDebito = "128"
            LancCredito = "5"
            LancValor = VlrDebito
            LancH = LancHist
        Else
            LancData = DebData
            LancDebito = "128"
            LancCredito = "5"
            LancValor = VlrDebito
            LancH = LancHist
            
            LinPag = LinPag + 1
            
            Sheets(2).Select
            
            LancData = DebData
            LancDebito = "342"
            LancCredito = "5"
            LancValor = VlrDebito
            LancH = LancHistJuros
        End If
        LinPag = LinPag + 1
        LinDeb = LinDeb + 1
    Loop
            
End Sub

Re: Variável recebe informação ao invés da Célula

Enviado: 15 Out 2021 às 16:36
por osvaldomp
Olá, @BrunoLuiel .

Veja se ajuda.

O código abaixo replica em Sheets(2).Range("A2") o conteúdo de Sheets(1).Range("A1") utilizando uma variável.
Código: Selecionar todos
Sub Teste()
 Dim LancData As Range
  Set LancData = Sheets(2).Range("A2")
  LancData.Value = Sheets(1).Range("A1").Value
End Sub
#
dica - nesta linha do seu código ~~~> Dim LancData, LancDebito, LancCredito, LancValor, LancH, another As Range
somente a variável "another" será do tipo Range, as demais serão consideradas do tipo Variant pois seus tipos não foram declarados.
Para declarar todas como Range:
Dim LancData As Range, LancDebito As Range, LancCredito As Range, ... ;)

Re: Variável recebe informação ao invés da Célula

Enviado: 15 Out 2021 às 17:23
por BrunoLuiel
Muito obrigado!

De fato somente ajustar a declaração corretamente já corrigiu o erro, como também poderia apenas ter inserido o ".value". Muito obrigado!