Search code examples
vb6togglebutton

Altering togglebutton state based on other togglebutton state


I have tried to no avail to get a toggle button to return to its FALSE state when an adjacent toggle button is clicked and made TRUE. When one toggle is made true several text boxes will be made visible which allows a user to enter data. Once that is completed the user uses a command button to send the data to a worksheet. What I want is when one toggle is in the TRUE state the other toggle must remain FALSE until clicked which will make the former button FALSE. Here are the code and an image of the user form

Private Sub Tractor_Click()
   If Me.Tractor.Value = False Then Exit Sub

   Me.Trailer.Value = False

   If Tractor.Value = True Then
      Unitnumber.Visible = True
      AengineSN.Visible = True
      tractorunit.Visible = True
      Tbaengine.Visible = True
      Submittractor.Visible = True
   End If
End Sub

Private Sub Trailer_Click()
   If Trailer.Value = True Then
      If Me.Trailer.Value = False Then Exit Sub

      Me.Tractor.Value = False

      Unitnumber2.Visible = True
      BengineSN.Visible = True
      CengineSN.Visible = True
      PowerendSN.Visible = True
      TransmissionSN.Visible = True
      TorqueconverterSN.Visible = True
      RadiatorSN.Visible = True
      trailerunit.Visible = True
      Tbbengine.Visible = True
      Tbcengine.Visible = True
      Tbpowerend.Visible = True
      Tbtransmission.Visible = True
      Tbtorqueconverter.Visible = True
      Tbradiator.Visible = True
      Submittrailer.Visible = True
   End If
End Sub

img_togglebutton


Solution

  • You are making the code a little more complex than it needs to be:

    Option Explicit
    
    Private Sub Tractor_Click()
       Unitnumber.Visible = Tractor.Value
       tractorunit.Visible = Tractor.Value
    
       Unitnumber2.Visible = Not Tractor.Value
       trailerunit.Visible = Not Tractor.Value
    End Sub
    
    Private Sub Trailer_Click()
       Unitnumber.Visible = Not Trailer.Value
       tractorunit.Visible = Not Trailer.Value
    
       Unitnumber2.Visible = Trailer.Value
       trailerunit.Visible = Trailer.Value
    End Sub
    

    A couple of notes:

    1. The buttons are mutually exclusive. There is no need to set the state of the other button.
    2. Setting the state doesn't fire the Click event so you need to handle all controls in each Click event.