![Excel VBA,如何向多个单元格添加值?](https://linux22.com/image/1486246/Excel%20VBA%EF%BC%8C%E5%A6%82%E4%BD%95%E5%90%91%E5%A4%9A%E4%B8%AA%E5%8D%95%E5%85%83%E6%A0%BC%E6%B7%BB%E5%8A%A0%E5%80%BC%EF%BC%9F.png)
我想通过点击按钮来理论上增加每天运行时间并增加多台机器的日期。我得到的结果是无效的,看起来像这样,并且只增加了一台机器的值;
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 列,以防我将另一台机器添加到列表中。有没有办法循环此命令?
答案1
考虑:
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
它会自动检测操作的极限。
答案2
你可以试试这个
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 执行后: