gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:35:25 24 4
gpt4 key购买 nike

我需要帮助编写一个代码,该代码仅在选中同一列中的复选框(表单控件)时,将在C列中添加1年(从C2开始),然后清除所有复选框,所有这些通过单击按钮(表单控件)。

这是我当前的按钮代码,它只为 C2 添加了 1 年:

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

最佳答案

演示:

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
^ 如果选中复选框,此示例只会在范围中添加一年。

关于vba - 如果选中行中的复选框,则 Excel VBA 代码更改为一列添加 1 年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43235544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com