Excel VBA, como adiciono valor a um número de células?

0

Quero teoricamente adicionar horas de execução e aumentar a data de várias máquinas todos os dias clicando em um botão. O que eu tenho é fraco, se parece com isso e só agrega valor para uma unidade;

Sub Knapp10_Klicka()

Worksheets(1).Range("C2").Value = Worksheets(1).Range("C2").Value + 24
Worksheets(1).Range("E2").Value = Worksheets(1).Range("E2").Value + 1

End Sub

Onde a coluna C é executada horas e a coluna E é a data em que foi medida.

Então, se eu clicar no botão, ele adicionará 24 horas de execução e 1 dia a uma das unidades, mas eu quero adicionar isso para toda a coluna C e E das células que têm valor nelas, caso eu adicione outra máquina para a lista. Existe uma maneira de fazer o loop desse comando?

    
por Jack the not so good excel man 10.03.2016 / 09:00

2 respostas

0

Considere:

Sub dural()
    Dim rng As Range, r As Range

    Set rng = Range("C:C").Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
    For Each r In rng
        r.Value = r.Value + 24
    Next r

    Set rng = Range("E:E").Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
    For Each r In rng
        r.Value = r.Value + 1
    Next r

End Sub

Detecta automaticamente os limites da operação.

    
por 10.03.2016 / 12:23
0

Você poderia tentar isso

Sub WalkThePlank()

Dim startRow As Integer
startRow = 1         ' ENSURE THIS BE THE FIRST ROW OF YE DATA

Dim r As Range
Set r = Range("C1:C500")    'ENTER THE RANGE WHERE YOUR TREASURE LIES

For Each cell In r

    If (Range("C" & startRow).Value <> "") Then
        Range("C" & startRow).Value = Range("C" & startRow).Value + 24 ' Gold cap'ain
    End If

    If (Range("E" & startRow).Value <> "") Then
        Range("E" & startRow).Value = Range("E" & startRow).Value + 1   ' aaahh, doubloons
    End If
    startRow = startRow + 1

Next

End Sub

Lembre-se, não há função desfazer, então sugiro que você faça um backup do arquivo primeiro!

Antes da execução do VBa:

ApósaexecuçãodoVBa:

    
por 10.03.2016 / 09:07