gpt4 book ai didi

VBA 重置所有复选框、组合框、文本框和数据验证下拉列表

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

我是 Visual Basics 的新手,我正在尝试将组合框重置为第一个索引,将下拉列表重置为第一个索引,并重置所有复选框和文本框。

但是我无法将数据验证下拉列表和组合框重置回它们的第一个索引/值。

工作表 3

enter image description here免打扰

enter image description here代码:

Private Sub CommandButton1_Click()

Sheets("Sheet5").Range("A2:DE2").Copy
Sheets("Final").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

Dim Sh As Worksheet
For Each Sh In Sheets
On Error Resume Next
Sh.CheckBoxes.Value = False
On Error GoTo 0
Next Sh
Dim tbx As OLEObject
For Each tbx In ActiveSheet.OLEObjects
If TypeName(tbx.Object) = "TextBox" Then
tbx.Object.Text = ""
End If
Next

Range("Sheet3!C2").Value = ""
Sheets("DND").Range("A17").Value = 0
Sheets("DND").Range("C17").Value = 0


End Sub

最佳答案

这会检查事件工作表的 L6 中的数据验证是硬编码列表还是范围引用。然后它将单元格重置为第一个列表项或范围引用中的第一个单元格:

Sub ResetCellValidation()
Dim cell As Excel.Range
Dim rngTest As Excel.Range
Dim ErrNumber As Long

Set cell = ActiveSheet.Range("L6")
With cell.Validation
If .Type = xlValidateList Then
On Error Resume Next
Set rngTest = Application.Range(.Formula1)
'I do this goofy thing with ErrNumber to keep my indenting and flow pretty
ErrNumber = Err.Number
On Error GoTo 0
'if the Validation is defined as a range
If ErrNumber = 0 Then
cell.Value = Application.WorksheetFunction.Index(rngTest, 1)
'if the validation is defined by comma-separated values
Else
cell.Value = Split(.Formula1, ",")(0)
End If
End If
End With
End Sub

没有错误检查来确认该单元格中有任何数据验证,但不确定这可能是您使用它的方式的问题。

编辑:将其从 Activecell.Parent.Range(.Formula1) 更改为 Application.Range(.Formula1)。有趣的是,例如,如果 Formula1 是 Sheet2!E6,则上面计算的是完整地址。不知道我是否知道。

编辑 2:我认为我真的想多了,或者没有适应事实,因为它们变得更加清晰。如果您只想将单元格值设置回空白,只需一行代码即可:

ActiveSheet.Range("L6").Value = ""

但这有什么乐趣呢?

关于VBA 重置所有复选框、组合框、文本框和数据验证下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705924/

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