2013-02-11 4 views
1

Я использую код, приведенный ниже, чтобы изменить свойство поля со списком и метки. У меня есть еще 40 комбинированных ящиков и ярлыков (combo2, combo3, combo4 ..........). Есть ли способ, который я мог бы повторно использовать код вместо копирования кода и изменить имя для каждого поля со списком и меткой вручную.применить код к нескольким полям управления

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 

ответ

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 

End Sub

Затем вызовите процедуру внутри цикла следующим образом:

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 
Смежные вопросы