1
resposta

Dúvida em código VBA conta

Realizei um teste qualquer, sei que a forma abaixo não é a mais apropriada pois usei a forma de macro absoluta e não a foma relativa enfim, ao executar o script abaixo, o valor final quando digitado 10 de Nota P1 e 10 de Nota P2 tenho como resultado da linha e2 é 10, porém não sei onde estou errando

Sub cadastraR() Range("a1") = "Nome" Range("b1") = "RA" Range("c1") = "Nota P1" Range("d1") = "Nota P2" Range("e1") = "Media"

Range("a2") = InputBox("Informe o nome") Range("b2") = InputBox("Informe o RA") Range("c2") = InputBox("Informe a nota P1") Range("d2") = InputBox("Informe a nota P2") Range("e2") = (ActiveCell.Offset(0, -2).Value + ActiveCell.Offset(0, -1).Value) / 2

End Sub

1 resposta

Olá Roberto!

Não sei se entendi a sua dúvida corretamente.

Se a sua dúvida é o motivo do seu código não estar rodando a linha:

Range("e2") = (ActiveCell.Offset(0, -2).Value + ActiveCell.Offset(0, -1).Value) / 2

isso ocorre devido ao fato de vc estar usando .Offset() sem uma célula selecionada, sendo assim quando vc coloca o .Offset() o excel não sabe qual é a sua referência de localização, por mais que vc tenha colocado o range("e2") na frente o excel não sabe que essa é a sua referência.

Então, para corrigir isso basta que vc coloque antes dessa linha um comando para selecionar a célula E2, como pode ser visto abaixo:

Range("e2").Select
 Range("e2") = (ActiveCell.Offset(0, -2).Value + ActiveCell.Offset(0, -1).Value) / 2

Atente-se que se vc estiver com qualquer outra célula selecionada ele usará a posição dela como referência independente de ter valor a duas e uma células a esquerda dela ou não.

Consegui tirar sua dúvida?

Espero ter ajudado.

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software