Reducing Code

basilyos

Registered User.
Local time
Yesterday, 16:44
Joined
Jan 13, 2014
Messages
256
hello Guys

I made a form to choose movies genres everything is ok but is there any way to reduce the code

N.B: am new to access

Code:
Private Sub cmd_send_data_Click()
Dim vg As String

If Me.Toggle0.Value = False Then
ElseIf Me.Toggle0.Value = True Then
    If vg = "" Then
    vg = Me.Toggle0.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle0.Caption
    End If
End If

If Me.Toggle1.Value = False Then
ElseIf Me.Toggle1.Value = True Then
    If vg = "" Then
    vg = Me.Toggle1.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle1.Caption
    End If
End If

If Me.Toggle2.Value = False Then
ElseIf Me.Toggle2.Value = True Then
    If vg = "" Then
    vg = Me.Toggle2.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle2.Caption
    End If
End If

If Me.Toggle3.Value = False Then
ElseIf Me.Toggle3.Value = True Then
    If vg = "" Then
    vg = Me.Toggle3.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle3.Caption
    End If
End If

If Me.Toggle4.Value = False Then
ElseIf Me.Toggle4.Value = True Then
    If vg = "" Then
    vg = Me.Toggle4.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle4.Caption
    End If
End If

If Me.Toggle5.Value = False Then
ElseIf Me.Toggle5.Value = True Then
    If vg = "" Then
    vg = Me.Toggle5.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle5.Caption
    End If
End If

If Me.Toggle6.Value = False Then
ElseIf Me.Toggle6.Value = True Then
    If vg = "" Then
    vg = Me.Toggle6.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle6.Caption
    End If
End If

If Me.Toggle7.Value = False Then
ElseIf Me.Toggle7.Value = True Then
    If vg = "" Then
    vg = Me.Toggle7.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle7.Caption
    End If
End If

If Me.Toggle8.Value = False Then
ElseIf Me.Toggle8.Value = True Then
    If vg = "" Then
    vg = Me.Toggle8.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle8.Caption
    End If
End If

If Me.Toggle9.Value = False Then
ElseIf Me.Toggle9.Value = True Then
    If vg = "" Then
    vg = Me.Toggle9.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle9.Caption
    End If
End If

If Me.Toggle10.Value = False Then
ElseIf Me.Toggle10.Value = True Then
    If vg = "" Then
    vg = Me.Toggle10.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle10.Caption
    End If
End If

If Me.Toggle11.Value = False Then
ElseIf Me.Toggle11.Value = True Then
    If vg = "" Then
    vg = Me.Toggle11.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle11.Caption
    End If
End If

If Me.Toggle12.Value = False Then
ElseIf Me.Toggle12.Value = True Then
    If vg = "" Then
    vg = Me.Toggle12.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle12.Caption
    End If
End If

If Me.Toggle13.Value = False Then
ElseIf Me.Toggle13.Value = True Then
    If vg = "" Then
    vg = Me.Toggle13.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle13.Caption
    End If
End If

If Me.Toggle14.Value = False Then
ElseIf Me.Toggle14.Value = True Then
    If vg = "" Then
    vg = Me.Toggle14.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle14.Caption
    End If
End If

If Me.Toggle15.Value = False Then
ElseIf Me.Toggle15.Value = True Then
    If vg = "" Then
    vg = Me.Toggle15.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle15.Caption
    End If
End If

If Me.Toggle16.Value = False Then
ElseIf Me.Toggle16.Value = True Then
    If vg = "" Then
    vg = Me.Toggle16.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle16.Caption
    End If
End If

If Me.Toggle17.Value = False Then
ElseIf Me.Toggle17.Value = True Then
    If vg = "" Then
    vg = Me.Toggle17.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle17.Caption
    End If
End If

If Me.Toggle18.Value = False Then
ElseIf Me.Toggle18.Value = True Then
    If vg = "" Then
    vg = Me.Toggle18.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle18.Caption
    End If
End If

If Me.Toggle19.Value = False Then
ElseIf Me.Toggle19.Value = True Then
    If vg = "" Then
    vg = Me.Toggle19.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle19.Caption
    End If
End If

Me.video_genre.SetFocus
Me.video_genre.Text = vg
End Sub
 
you can reduce this

Code:
 If Me.Toggle1.Value = False Then
ElseIf Me.Toggle1.Value = True Then
    If vg = "" Then
    vg = Me.Toggle1.Caption
    ElseIf vg <> "" Then
    vg = vg + " - " + Me.Toggle1.Caption
    End If
End If

to this
Code:
 If Toggle1 Then
    vg = vg & if(vg="",""," - ") & Toggle1.Caption
End If
 
and you can reduce the whole code to

function SetVg(Ctrl as control) as string
If ctrl Then
vg = vg & if(vg="",""," - ") & ctrl.Caption
End If
End function

and to call it

vg=setvg(Toggle1)



not sure what you code is intended to do - if only one toggle control can be true you would be better putting these is an option group. And if more that one can be true, it is only the last true control which will have an effect
 
And you can reference the controls by name in a loop . . .
Code:
dim i as integer
dim tog as togglebutton

for i - 0 to 19
   set tog = me.controls("toggle" & i)
   If tog Then debug.print "do something with " & tog.name
next
 
This could be off because I don't know how you're trying to append the same variable. Let me know if you need changes.

COMPACT
Code:
    Dim i As Integer
    
    For i = 0 To 19
        vg = IIf(Me.Controls("Toggle" & i).Value, IIf(vg = vbNullString, Me.Controls("Toggle" & i).Caption, vg & " - " & Me.Controls("Toggle" & i).Caption), vg)
    Next

READABILITY
Code:
    Dim i As Integer
    
    For i = 0 To 19
        vg = IIf( _
                    Me.Controls("Toggle" & i).Value, _
                    IIf( _
                            vg = vbNullString, _
                            Me.Controls("Toggle" & i).Caption, _
                            vg & " - " & Me.Controls("Toggle" & i).Caption _
                        ), _
                    vg _
                )
    Next

CJ's Edition looks way cleaner:
Code:
    Dim i As Integer
    
    For i = 0 To 19
        If Me.Controls("Toggle" & i) Then: vg = vg & IIf(vg = "", "", " - ") & Me.Controls("Toggle" & i).Caption
    Next
 
Last edited:
And you can reference the controls by name in a loop . . .
Code:
dim i as integer
dim tog as togglebutton

for i - 0 to 19
   set tog = me.controls("toggle" & i)
   If tog Then debug.print "do something with " & tog.name
next

Really.... at the same time hahaha
 
thank you all it works fine

i used the solution of BlueIshDan
thank you a lot
 

Users who are viewing this thread

Back
Top Bottom