【问题标题】:Excel Macro date prompt for current date and changes the next cell 1 day aheadExcel 宏日期提示当前日期并提前 1 天更改下一个单元格
【发布时间】:2012-10-20 01:52:42
【问题描述】:

如何创建一个宏来提示当前日期并提前 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

【问题讨论】:

    标签: excel vba


    【解决方案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 放在所选范围右侧一列的行中。

    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。

    【讨论】:

    • 如何为一个单元格中的多行执行此操作?
    • 如果您只是选择一个范围并希望遍历该范围,请将两条 ActiveCell 行替换为以下内容: Set SelRange = Selection For Each b In SelRange.Rows b.Offset(0, 1 ).Value = dtDate + 1 下一次编辑:抱歉,换行符被破坏了,我是新手。
    • 我...请您再写一遍示例。
    • Set SelRange = Selection <line break> For Each b in SelRange.Rows <line break> <tab> b.Offset(0, 1).Value = dtDate + 1 <line break> Next 这将遍历范围并在提示符 + 1 输入的原始日期上生成下一行。
    • 它仅更改当前日期下一个单元格日期...它没有更改然后范围例如(“B25:B50”)然后将日期添加到以下行?我是不是错过了什么。如果要编辑答案,请单击答案下方的编辑按钮。谢谢
    【解决方案2】:

    这应该完全符合您的要求:

    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
    

    【讨论】:

    • 我收到运行时错误 '1004'" 应用程序定义或对象定义错误。
    • 嗯...它可以在我的电脑上运行...我的猜测是因为我没有引用工作表...试试这个更新的代码并确保从你的工作表中运行它希望在...中进行这些更改
    猜你喜欢
    • 2016-11-25
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多