如果选中行中的复选框,则Excel VBA代码将更改为列添加1年

时间:2017-04-05 15:26:54

标签: excel vba excel-vba

我需要帮助编写一个代码,只有在选中同一列中的复选框(Form Control)时才会在C列中添加1年(从C2开始),然后清除所有复选框,所有这些都完成了单击按钮(表单控件)。

这是我目前的按钮代码,它只增加1年C2:

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

1 个答案:

答案 0 :(得分:1)

演示:

Demo

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

你可以使用这个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

如果您只想选中复选框,则可以添加以下内容:

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

然后,只需将复选框值传递给它

示例用法:

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

^如果选中该复选框,此示例将仅向该范围添加一年。