ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How do I toggle a button across a range of columns (https://www.excelbanter.com/excel-programming/340806-how-do-i-toggle-button-across-range-columns.html)

sodaboy

How do I toggle a button across a range of columns
 

I have twelve worksheets within a workbook, one for each month of the
year. The dates are listed down column A. I have ten adjacent columns
with data which I need to show / hide on a toggle button; then I have
to duplicate this ten times across the sheet and again duplicate the
entire thing for each sheet. I have the following code which works but
wondered if anyone can suggest a better way.

If cmdShowHide.Caption = "Hide" Then
Worksheets("January").Columns(14).Hidden = True
Worksheets("January").Columns(15).Hidden = True
Worksheets("January").Columns(16).Hidden = True
Worksheets("January").Columns(17).Hidden = True
Worksheets("January").Columns(18).Hidden = True
Worksheets("January").Columns(19).Hidden = True
Worksheets("January").Columns(20).Hidden = True
Worksheets("January").Columns(21).Hidden = True
Worksheets("January").Columns(22).Hidden = True
cmdShowHide.Caption = "Show"
ElseIf cmdShowHide.Caption = "Show" Then
Worksheets("January").Columns(14).Hidden = False
Worksheets("January").Columns(15).Hidden = False
Worksheets("January").Columns(16).Hidden = False
Worksheets("January").Columns(17).Hidden = False
Worksheets("January").Columns(18).Hidden = False
Worksheets("January").Columns(19).Hidden = False
Worksheets("January").Columns(20).Hidden = False
Worksheets("January").Columns(21).Hidden = False
Worksheets("January").Columns(22).Hidden = False
cmdShowHide.Caption = "Hide"
End If

I am a beginner at this so apologies if this is a bit simplistic.

Many thanks.


--
sodaboy
------------------------------------------------------------------------
sodaboy's Profile: http://www.excelforum.com/member.php...o&userid=27467
View this thread: http://www.excelforum.com/showthread...hreadid=469807


Norman Jones

How do I toggle a button across a range of columns
 
Hi Sodaboy,

Try:

'================
Private Sub cmdShowHide_Click()
Me.Columns("N:V").Hidden = _
Not (Me.Columns("N:V").Hidden = True)
With cmdShowHide
If .Caption = "Show" Then
.Caption = "Hide"
Else
.Caption = "Show"
End If
End With

End Sub
'================

---
Regards,
Norman



"sodaboy" wrote in
message ...

I have twelve worksheets within a workbook, one for each month of the
year. The dates are listed down column A. I have ten adjacent columns
with data which I need to show / hide on a toggle button; then I have
to duplicate this ten times across the sheet and again duplicate the
entire thing for each sheet. I have the following code which works but
wondered if anyone can suggest a better way.

If cmdShowHide.Caption = "Hide" Then
Worksheets("January").Columns(14).Hidden = True
Worksheets("January").Columns(15).Hidden = True
Worksheets("January").Columns(16).Hidden = True
Worksheets("January").Columns(17).Hidden = True
Worksheets("January").Columns(18).Hidden = True
Worksheets("January").Columns(19).Hidden = True
Worksheets("January").Columns(20).Hidden = True
Worksheets("January").Columns(21).Hidden = True
Worksheets("January").Columns(22).Hidden = True
cmdShowHide.Caption = "Show"
ElseIf cmdShowHide.Caption = "Show" Then
Worksheets("January").Columns(14).Hidden = False
Worksheets("January").Columns(15).Hidden = False
Worksheets("January").Columns(16).Hidden = False
Worksheets("January").Columns(17).Hidden = False
Worksheets("January").Columns(18).Hidden = False
Worksheets("January").Columns(19).Hidden = False
Worksheets("January").Columns(20).Hidden = False
Worksheets("January").Columns(21).Hidden = False
Worksheets("January").Columns(22).Hidden = False
cmdShowHide.Caption = "Hide"
End If

I am a beginner at this so apologies if this is a bit simplistic.

Many thanks.


--
sodaboy
------------------------------------------------------------------------
sodaboy's Profile:
http://www.excelforum.com/member.php...o&userid=27467
View this thread: http://www.excelforum.com/showthread...hreadid=469807




sodaboy[_2_]

How do I toggle a button across a range of columns
 

Thanks Norman,

It works a treat. Just so I know whats going on here, please could you
briefly explain how the 'NOT' function is evaluated.

Thanks again


--
sodaboy
------------------------------------------------------------------------
sodaboy's Profile: http://www.excelforum.com/member.php...o&userid=27467
View this thread: http://www.excelforum.com/showthread...hreadid=469807


Norman Jones

How do I toggle a button across a range of columns
 
Hi Sodaboy,

It works a treat. Just so I know whats going on here, please could you
briefly explain how the 'NOT' function is evaluated.



Me.Columns("N:V").Hidden = _
Not (Me.Columns("N:V").Hidden = True)


In the right-hand side of this equation, the expression:
Me.Columns("N:V").Hidden = True
returns a Boolean True or False value according to the visible state of
columns N:V.

The Not operator serves to reverse (or negate) the returned Boolean value.
So the not operator is here used to toggle the visibility of the column
range by setting its hidden property to the reverse of the returned value.

The Not equality expression is a shorter, more elegant way of expressing the
following, equivalent If,,,Then,,,Else construct:

If Me.Columns("N:V").Hidden = True Then
Me.Columns("N:V").Hidden = False
ElseIf Me.Columns("N:V").Hidden = False Then
Me.Columns("N:V").Hidden = True
End If

See also the examples in VBA help under 'Not Operator'

---
Regards,
Norman


"sodaboy" wrote in
message ...

Thanks Norman,

It works a treat. Just so I know whats going on here, please could you
briefly explain how the 'NOT' function is evaluated.

Thanks again


--
sodaboy
------------------------------------------------------------------------
sodaboy's Profile:
http://www.excelforum.com/member.php...o&userid=27467
View this thread: http://www.excelforum.com/showthread...hreadid=469807





All times are GMT +1. The time now is 02:32 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com