1

我正在使用下面的代码来更改组合框和标签的属性。我还有另外 40 个组合框和标签(组合 2、组合 3、组合 4 ......)。有没有办法我可以重用代码而不是复制代码并且必须手动更改每个组合框和标签的名称。

If (Combo1 = 1) Then
    DoCmd.SetProperty "Combo1", acPropertyBackColor, "255"
    DoCmd.SetProperty "Label1", acPropertyCaption, "POOR"
ElseIf (Combo1 = 2) Then
    DoCmd.SetProperty "Combo1", acPropertyBackColor, "2895086"
    DoCmd.SetProperty "Label1", acPropertyCaption, "FAIR"
ElseIf (Combo1 = 3) Then
    DoCmd.SetProperty "Combo1", acPropertyBackColor, "35584"
    DoCmd.SetProperty "Label1", acPropertyCaption, "GOOD"
ElseIf (Combo1 = 4) Then
    DoCmd.SetProperty "Combo1", acPropertyBackColor, "52480"
    DoCmd.SetProperty "Label1", acPropertyCaption, "VERY GOOD"
ElseIf (Combo1 = 5) Then
    DoCmd.SetProperty "Combo1", acPropertyBackColor, "64636"
    DoCmd.SetProperty "Label1", acPropertyCaption, "EXCELLENT"
Else
    DoCmd.SetProperty "Combo1", acPropertyBackColor, "16579836"
    DoCmd.SetProperty "Label1", acPropertyCaption, ","
End If
4

1 回答 1

0

您可以创建一个接收combo1 整数值以及ComboBox 和Listbox 控件作为参数的子过程。该过程如下所示:

Public Sub SetupProperties(combo1 As Integer, ChangeComboBox As Access.ComboBox, ChangeLabel As Access.Label)

Dim longBackColour As Long
Dim stringCaption As String
' set up  background colour and caption
If (combo1 = 1) Then
    longBackColour = 255
    stringCaption = "POOR"
ElseIf (combo1 = 2) Then
    longBackColour = 2895086
    stringCaption = "FAIR"
ElseIf (combo1 = 3) Then ' and so on...

End If
' Change properties of the controls
ChangeComboBox.BackColor = longBackColour
ChangeLabel.Caption = stringCaption

结束子

然后从循环中调用该过程,如下所示:

Dim combo1 As Integer
combo1 = 1
Dim integerCounter As Integer
For integerCounter = 1 To 40
    SetupProperties combo1, Me.Controls("Combo" & Trim(CStr(integerCounter))), Me.Controls("Label" & Trim(CStr(integerCounter)))
Next
于 2014-04-02T14:06:02.140 回答