1

1 つのセルで 1 日を加算し、同時に別のセルで 1 日を減算するマクロを作成するにはどうすればよいですか? これが私がこれまでに持っているものです。

Sub ChangeDates()

Dim cell As Range

For Each cell In Range("B:B")
    cell.Value = cell.Value + 1
Next cell

For Each cell In Range("C:C")

    cell.Value = cell.Value - 1

End Sub
4

2 に答える 2

3

あなたが答えを受け入れたことは知っていますが、これらすべてのセルをループするよりもさらに高速で効率的なこのアプローチを提供したいと思います。

日付が列Aにある場合、列Bが保持さdate +1れ、列Cが保持されますdate -1

Option Explicit
Sub ChangeDates()

Dim myRange As range
Dim mySheet As Worksheet

Set mySheet = Sheets("Sheet7") 'change to your sheet

With mySheet

    Set myRange = .range("A1:A" & .range("A" & .Rows.Count).End(xlUp).Row)

    myRange.Offset(, 1).FormulaR1C1 = "=RC[-1]+1"
    myRange.Offset(, 2).FormulaR1C1 = "=RC[-2]-1"

End With


End Sub
于 2012-10-18T16:36:13.530 に答える
0

救助へのオフセット!!

Sub ChangeDates()  
Dim cell As Range  
   For Each cell In Range("B:B")     
      cell.Value = cell.Value + 1
      cell.offset(0,1).value = cell.offset(0,1).value - 1
   Next cell  
End Sub 

もう 1 つの考慮事項は、列 B のすべてを反復する必要がないように usedrange を調べるか、セルが空白でないことを確認するためにチェックを入れることです。セルはもともと空白でした...

Sub ChangeDates()
Dim cell As Range
   For Each cell In Intersect(Range("B:B"), ActiveSheet.UsedRange)
      cell.Value = cell.Value + 1
      cell.Offset(0, 1).Value = cell.Offset(0, 1).Value - 1
   Next cell
End Sub
于 2012-10-18T16:09:59.983 に答える