gpt4 book ai didi

excel - 我应该如何在 VBA Excel 中为相同的对象使用 1 个代码

转载 作者:行者123 更新时间:2023-12-04 22:17:31 26 4
gpt4 key购买 nike

我正在使用一个包含许多工作表的工作簿,并且我正在使用一个具有 150 多个组合框和 200 个标签的用户窗体。
我想只在一个中设置组合框的特性和设计,并且我想在其中应用很多,所以我不想重复代码数百次。
我应该怎么做?我一直在阅读,但我无法将这些例子与我的相匹配。
这是错误的代码:

Private Sub ComboBox7_Change()
Dim ws2 As Worksheet: Set ws2 = Sheets("C. VfM Questionnaire ")
Dim i, p As Integer

For i = 7 To 31
If Controls("ComboBox" & i).Value = "Yes" Then
ws2.Range("G7") = 4
Me.Controls("Label" & i).BackColor = RGB(146, 208, 80)

ElseIf Controls("ComboBox" & i).Value = "No" Then
ws2.Range("G7") = 4
Me.Controls("Label" & i).BackColor = RGB(255, 33, 26)

ElseIf Controls("ComboBox" & i).Value = "Not Applicable" Then
ws2.Range("G7") = 4
Me.Controls("Label" & i).BackColor = RGB(255, 204, 0)
End If
Next i

End Sub
另外我不知道如何触发代码?它是在用户表单中初始化还是在模块中?如您所见,我很新手!
提前非常感谢。

最佳答案

如果我正确理解了您的问题,那么您有很多组合框,并且您想更改它们的样式。但是,您不是要更改所有这些,而是​​要更改其中一个,然后让表单将此样式应用于所有这些,对吗?
因此,我们选择一个框作为“样式指南”并将其分配给一个变量。
然后我们遍历表单中的所有组合框,并应用特征。
至于如何触发它,UserForm initalize 肯定会起作用。
这段代码例如:

Private Sub UserForm_Initialize()
Dim origin As ComboBox, c As Variant

Set origin = Me.ComboBox1 'Combobox to copy style from

For Each c In Me.Controls
If TypeName(c) = "ComboBox" Then
c.BackColor = origin.BackColor
c.BackStyle = origin.BackStyle
c.BorderColor = origin.BorderColor
c.BorderStyle = origin.BorderStyle
c.ForeColor = origin.ForeColor
End If
Next
End Sub
改变这个:
enter image description here
对此:
enter image description here
应用左上角第一个框的样式,称为 ComboBox1

关于excel - 我应该如何在 VBA Excel 中为相同的对象使用 1 个代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67652133/

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