0

現在の日付でプロンプトを表示し、1日前に次のセルを変更するマクロを作成するにはどうすればよいですか?私はこれまでに持っているもののサンプルを持っています。私が近くにいるかどうか教えてください。

Sub Change_dates()
    Dim dtDate As Date
    dtDate = InputBox("Date", , Date)
    For Each cell In Intersect(Range("B " & dblRow).Value = dtDate, ActiveSheet.UsedRange)
        cell.Offset(0, 1).Select = cell.Offset(0, 1).Select + 1
    Next cell
End Sub
4

2 に答える 2

1

このコードは、現在の日付でプロンプトを表示し、アクティブセルに書き込み、次の列のセルに日付+1を書き込みます。

Sub Change_dates()
Dim dtDate As Date
dtDate = InputBox("Date", , Date)

ActiveCell.Value = dtDate
ActiveCell.Offset(0, 1).Value = dtDate + 1

End Sub

これにより、プロンプトから日付が取得され、範囲内の選択された行に日付が書き込まれ、選択された範囲の1列右の行に日付+1が配置されます。

Sub Change_dates_range()
Dim dtDate As Date
dtDate = InputBox("Date", , Date)

Set SelRange = Selection

For Each b In SelRange.Rows
    b.Value = dtDate
    b.Offset(0, 1).Value = dtDate + 1
Next

End Sub

代わりに、範囲内の各行を前の行の+ 1日にしたい場合は、ループの最後でNextステートメントの前にdtDateをインクリメントします。

于 2012-10-19T14:54:40.227 に答える
0

これはあなたが探していることを正確に行うはずです:

Sub Change_dates()
Dim dtDate As Date
Dim rng As Range
Dim FirstRow As Integer
   dtDate = InputBox("Date", , Date)
   Set rng = ActiveSheet.Columns("B:B").Find(What:=dtDate, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext)
   FirstRow = rng.Row
Do
   rng.Offset(0, 1).Value = rng.Offset(0, 1).Value + 1
   Set rng = ActiveSheet.Columns("B:B").FindNext(After:=rng)
Loop Until rng.Row = FirstRow

End Sub
于 2012-10-19T15:14:10.970 に答える