Excel VBA, come posso aggiungere valore a un numero di celle?


0

Voglio teoricamente aggiungere ore di esecuzione e aumentare la data per un numero di macchine ogni giorno facendo clic su un pulsante. Quello che ho ottenuto è debole, sembra questo e aggiunge solo valore per una unità;

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

Dove la colonna C viene eseguita ore e la colonna E è la data in cui è stata misurata.

Quindi, se clicco sul pulsante, aggiunge 24 ore di funzionamento e 1 giorno a una delle unità, ma voglio aggiungerlo per l'intera colonna C ed E per le celle che hanno valore in esse, nel caso aggiungo un'altra macchina a la lista. C'è un modo per ripetere questo comando?


Dovresti eseguire il ciclo di ciascuna cella in un intervallo di colonne e quindi eseguire lo stesso controllo.
Dave

Risposte:


0

Tenere conto:

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

Rileva automaticamente i limiti dell'operazione.


0

Potresti provare questo

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

Ricorda, non esiste una funzione di annullamento, quindi ti suggerisco di eseguire prima il backup del file!

Prima che VBa venga eseguito:

enter image description here

Dopo l'esecuzione di VBa:

enter image description here


Anche questo funziona, ma è meglio come ho bisogno di definire la cella finale con questo; Sub Knapp1_Klicka () Dim x As long For x = 2 a 35 celle (x, "B"). Valore = celle (x, "B"). Valore + 24 celle (x, "C"). Valore = celle ( x, "C"). Valore + 1 Avanti x
Jack the not so good excel man

Se è giusto, sentiti libero di votare, contrassegnare come risposta (segno di spunta verde) o entrambi @Jackthenotsogoodexcelman
Dave

Sarebbe meglio fare il ciclo di ogni riga fino all'ultima riga, piuttosto che ogni cella dell'intervallo. Se l'intervallo è costituito da due colonne (ad esempio, C1: D500), si otterrà il looping di ciascuna riga due volte.
Jonno
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.