0
\$\begingroup\$

im new in VBA making, so all code below is still working tho but it takes a lot of line of codes. Even it is easier to maintain but if someone can simplify my noob-code to cut some lines and more eye-pleasing?

there are more than 20 toggle buttons in my userform

this is the example of my code, need help for make it simpler

Private Sub tgglC_Result1_Click()
If tgglC_Result1.Value = True Then
    tgglC_Result1.BackColor = &HFF00&
    tgglNC_Result1.Enabled = False
    lblResult1.Caption = Now
    lblResult1.Visible = True
Else
    tgglC_Result1.BackColor = &H8000000F
    tgglNC_Result1.Enabled = True
    lblResult1.Visible = False
End If
End Sub
Private Sub tgglC_Result2_Click()
If tgglC_Result2.Value = True Then
    tgglC_Result2.BackColor = &HFF00&
    tgglNC_Result2.Enabled = False
    lblResult2.Caption = Now
    lblResult2.Visible = True
Else
    tgglC_Result2.BackColor = &H8000000F
    tgglNC_Result2.Enabled = True
    lblResult2.Visible = False
End If
End Sub
Private Sub tgglC_Result3_Click()
If tgglC_Result3.Value = True Then
    tgglC_Result3.BackColor = &HFF00&
    tgglNC_Result3.Enabled = False
    lblResult3.Caption = Now
    lblResult3.Visible = True
Else
    tgglC_Result3.BackColor = &H8000000F
    tgglNC_Result3.Enabled = True
    lblResult3.Visible = False
End If
End Sub
Private Sub tgglC_Result4_Click()
If tgglC_Result4.Value = True Then
    tgglC_Result4.BackColor = &HFF00&
    tgglNC_Result4.Enabled = False
    lblResult4.Caption = Now
    lblResult4.Visible = True
Else
    tgglC_Result4.BackColor = &H8000000F
    tgglNC_Result4.Enabled = True
    lblResult4.Visible = False
End If
End Sub
\$\endgroup\$
1
  • \$\begingroup\$ Welcome to Code Review! This question is incomplete. To help reviewers give you better answers, please add sufficient context to your question. The more you tell us about what your code does and what the purpose of doing that is, the easier it will be for reviewers to help you. Questions should include a description of what the code does \$\endgroup\$ Commented Dec 5, 2016 at 9:17

1 Answer 1

3
\$\begingroup\$

You should extract the changing of the button and label properties into a separate method like so

Private Sub ChangeButtonAndLabel(button As ToggleButton, label As label)
    Dim result As Boolean
    result = button.Value

    If result then
        button.BackColor = &HFF00&
        label.Caption = Now
    Else
        button.BackColor = &H8000000F
    End If

    button.Enabled = NOT result
    label.Visible = result
End Sub  

In this way the former code would look like so

Private Sub tgglC_Result1_Click()
    ChangeButtonAndLabel tgglC_Result1, lblResult1
End Sub  

You should name your controls better. If you look at this code in a few weeks/months you won't know what tgglC_Result1 should represent.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.