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
asked Dec 5, 2016 at 8:32
\$\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.

answered Dec 5, 2016 at 8:50
\$\endgroup\$

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.