macro que inverte números

2

Preciso de ajuda para descobrir isso. Criei um pequeno script que altera um valor em uma célula para positivo se o número for negativo e vice-versa. Por exemplo, se o valor for 100, o script o alterará para -100 ou, se for -100, será alterado para 100. Consegui fazê-lo funcionar para uma célula, mas agora gostaria de incluir em um intervalo de células, por exemplo, todas células de B33 a B50. Desde já, obrigado.

Sub Sing_Change()

If Range("E9") > 0 Then
    Range("E9") = -(Range("E9"))
    Else
    Range("E9") = Abs(Range("E9"))
End If

End Sub
Eric
fonte
2
Tudo o que você precisa é negar o valor, usando -Range(E9): isso torna os números positivos negativos e os números negativos positivos, sem afetar o zero.
AFH
Obrigado pela resposta. O que eu estou preso é tentar criar um loop com esse script que irá descer a coluna começando de B33 a B50.
Eric
E se a célula contiver um resultado numérico de uma fórmula?
patkim
Para uma mudança de sinal, basta multiplicar por -1 ... menos 1 ... não é necessário verificar o alcance nem nada.
Solar Mike
@AFH sorry - eu vi o código e saltou, agora percebo que você disse a mesma ...
Solar Mike

Respostas:

4

Código muito básico para percorrer um intervalo especificado.

Sub test()

    Set myrange = Range("A1:A2") 'Set range here

    For Each cell In myrange
        'your code here e.g. cell.value = -cell.value or whatever
    Next cell

End Sub
patkim
fonte
1

Se você deseja evitar o loop, pode usar uma única linha com []colchetes, que pede à macro para avaliar o que deseja fazer. Como todas as grandes potências, ela vem com grandes responsabilidades.

[B33:B50] = [-B33:B50]
nutch
fonte