Я хочу теоретически добавить количество часов работы и увеличивать дату для нескольких машин каждый день, нажимая кнопку. То, что я получил, слабое, выглядит так и только добавляет ценность для одной единицы;

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

Где столбец C - это часы работы, а столбец E - дата, когда он был измерен.

Поэтому, если я нажимаю кнопку, это добавляет 24 часа работы и 1 день к одному из блоков, но я хочу добавить это для всего столбца C и E для ячеек, имеющих значение в них, на случай, если я добавлю другую машину к список. Есть ли способ зациклить эту команду?

2 ответа2

0

Вы можете попробовать это

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

Помните, что нет функции отмены, поэтому я советую сначала сделать резервную копию файла!

Перед выполнением VBa:

После того, как VBa выполняет:

0

Рассматривать:

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

Он автоматически определяет пределы операции.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .