Warm tip: This article is reproduced from serverfault.com, please click

Altering togglebutton state based on other togglebutton state

发布于 2020-12-30 15:02:04

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

Questioner
Munkeyfingers
Viewed
0
Brian M Stafford 2020-12-31 03:34:47

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.