如果选中该行中的checkbox,Excel VBA代码将更改添加到列1年

我需要帮助编写一个代码,只要在同一列中的一个checkbox(表格控件)被选中,就会在列C中(从C2开始)添加1年的date,然后清除所有的checkbox,点击button(表单控件)。

这是我现在的button的代码,它只增加了1年的C2:

Sub Button211_Click() Range("$C2").Value = DateAdd("yyyy", 1, CDate(Range("$C2"))) End Sub 

演示:

演示

将一年添加到一个范围的代码非常简单

你可以使用这个子,只是传递一个范围

 Sub AddYearToRange(TheRange As Range) Dim c For Each c In TheRange If IsDate(c.Value) Then c.Value = DateAdd("yyyy", 1, c.Value) Next c End Sub 

用法示例:

AddYearToRange [C2:C5]

AddYearToRange Range("C2:C5")

AddYearToRange Selection

AddYearToRange Sheets("Sheet1").Range("C2:C5")

如果你想做一些改变的时候在单元格旁边放置一个X,你可以添加如下代码:

 Sub AddYearToRange(TheRange As Range) Dim c For Each c In TheRange If IsDate(c.Value) Then c.Value = DateAdd("yyyy", 1, c.Value) c.offset(0,1).Value = "X" End If Next c End Sub 

如果您只想在checkbox被选中时执行此操作,则可以添加以下内容:

 Sub AddYearToRange(TheRange As Range, CheckboxValue As Integer) 'Unchecked = xlOff = -4146 'Checked = 1 'Multi-check checkbox = 2 If CheckboxValue <> 1 Then Exit Sub Dim c For Each c In TheRange If IsDate(c.Value) Then c.Value = DateAdd("yyyy", 1, c.Value) c.Offset(0, 1).Value = "X" 'This line places an X one column to the right End If Next c End Sub 

然后,只需将checkbox的值传递给它

用法示例:

AddYearToRange [C2:C5], CheckBoxes("Check Box 1").Value

^如果checkbox被选中,这个例子将只添加一年到范围。