excel - 进行更改时自动更新工作表 - VBA Excel

标签 excel vba

我努力找出这个逻辑,所以任何帮助将不胜感激!

我有一张包含名称和日期的表格,在每一行(在示例列 D 到 F 中)它需要找到最大的日期,然后将日期添加到一列(列 C)。我可以让它在单个测试行上工作,但是当任何行发生变化时我需要它工作。

  B           C            D           E           F
Name       Due Date      Date 1      Date 2      Date 3

Dave       01-01-20     01-01-14    01-01-17   
Sarah      01-01-21     01-02-11    01-02-15    01-02-18 

我到目前为止的代码是:
LastRow = wsCB.Cells(Rows.Count, "C").End(xlUp).Row
rowcount = 12

Max_date = Application.WorksheetFunction.Max(wsCB.Range(wsCB.Cells(rowcount, 5), wsCB.Cells(rowcount, 10)))

Max_date = CDate(Max_date)

DueDate = DateAdd("yyyy", 3, Max_date)

wsCB.Cells(12, 4) = DueDate

我已将其设置为调用 Worksheet_Change。我尝试了各种尝试使用 xlup 的循环,但我不确定这是正确的方法,因为当用户为某人输入新日期时,我需要更新该值。我不太清楚如何将这个单行示例扩展到整个工作表。

数据不会很大,但是会有 5 张这样的表格,每张表格最多有 70 个名字。

我对 VBA 还是很陌生,所以任何建议都会很有帮助!

最佳答案

以下 VBA 代码应该可以达到您想要的结果:

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
    Case 4, 5, 6 'if user entered data in columns D to F
    Max_date = Application.WorksheetFunction.Max(Range(Cells(Target.Row, 4), Cells(Target.Row, 6)))
    'get the max value in row from column D to F (4 to 6)
    Max_date = CDate(Max_date)

    DueDate = DateAdd("yyyy", 3, Max_date)

    Cells(Target.Row, 3) = DueDate
End Select
End Sub

关于excel - 进行更改时自动更新工作表 - VBA Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169220/

相关文章:

php - 从页面源获取配置文件 ID

excel - 计算日期范围的总和

excel - 如何从经典 ASP 输出 Excel *.xls 文件

excel - 如何将工作表保存到新工作簿?

excel - 在电脑锁定时在预定时间运行宏

VBA : Delete rows using variables

vba - 是否可以在 Excel VBA 中允许整数溢出?

VBA 仅复制可见单元格问题

excel - 循环优化/定制

VBA嵌套错误处理