Solved

# Make command button work as a toggle button vba

Posted on 2009-04-06
475 Views
I currently have a command button set with the code below.  I would like to make this command button more like a toggle button so that when you click it the first time it will produce the totals as it does now, but if you click it again it will remove the totals (or undo the command)..
``````Private Sub CommandButton1_Click()

Dim lrow As Long

lrow = Cells(65536, "D").End(xlUp).Row

Cells(lrow + 2, "I").Formula = "=sum(I16:I" & lrow & ")"

Cells(lrow + 2, "J").Formula = "=sum(J16:J" & lrow & ")"

Cells(lrow + 2, "K").Formula = "=sum(K16:K" & lrow & ")"

Cells(lrow + 2, "L").Formula = "=sum(L16:L" & lrow & ")"

Cells(lrow + 2, "M").Formula = "=sum(M16:M" & lrow & ")"

Cells(lrow + 2, "N").Formula = "=sum(N16:N" & lrow & ")"

Cells(lrow + 2, "O").Formula = "=sum(O16:O" & lrow & ")"

Cells(lrow + 2, "F") = "Total Hours"

Range("I" & lrow + 2 & ":O" & lrow + 2).Font.Bold = True

Cells(lrow + 2, "F").Font.Bold = True

End Sub
``````
0
Question by:RRUTLAND5
• 2

LVL 5

Expert Comment

There is a toggle button that you can insert instead of a command button.  When you use the toggle button you can check the true/false value property of the button in the click event, so your code would look something like this..
``````Private Sub ToggleButton1_Click()

If ToggleButton1.Value Then

'Toggle on code

Dim lrow As Long

lrow = Cells(65536, "D").End(xlUp).Row

Cells(lrow + 2, "I").Formula = "=sum(I16:I" & lrow & ")"

Cells(lrow + 2, "J").Formula = "=sum(J16:J" & lrow & ")"

Cells(lrow + 2, "K").Formula = "=sum(K16:K" & lrow & ")"

Cells(lrow + 2, "L").Formula = "=sum(L16:L" & lrow & ")"

Cells(lrow + 2, "M").Formula = "=sum(M16:M" & lrow & ")"

Cells(lrow + 2, "N").Formula = "=sum(N16:N" & lrow & ")"

Cells(lrow + 2, "O").Formula = "=sum(O16:O" & lrow & ")"

Cells(lrow + 2, "F") = "Total Hours"

Range("I" & lrow + 2 & ":O" & lrow + 2).Font.Bold = True

Cells(lrow + 2, "F").Font.Bold = True

Else

'Toggle Off code

Dim lrow As Long

lrow = Cells(65536, "D").End(xlUp).Row

Cells(lrow + 2, "I").Formula = ""

Cells(lrow + 2, "J").Formula = ""

Cells(lrow + 2, "K").Formula = ""

Cells(lrow + 2, "L").Formula = ""

Cells(lrow + 2, "M").Formula = ""

Cells(lrow + 2, "N").Formula = ""

Cells(lrow + 2, "O").Formula = ""

Cells(lrow + 2, "F") = ""

Range("I" & lrow + 2 & ":O" & lrow + 2).Font.Bold = False

Cells(lrow + 2, "F").Font.Bold = False

End If

End Sub
``````
0

Author Comment

Thanks....I'm getting a "compile error: Duplicate declaration in current scope" at: lrow As Long in the Toggle Off Code
0

LVL 5

Accepted Solution

Steve Dubyo earned 250 total points
Ah, yes I missed that as I copy/pasted your code.  Need to declare lrow just once, I've ammended the code below.
``````Private Sub ToggleButton1_Click()

Dim lrow As Long

If ToggleButton1.Value Then

'Toggle on code

lrow = Cells(65536, "D").End(xlUp).Row

Cells(lrow + 2, "I").Formula = "=sum(I16:I" & lrow & ")"

Cells(lrow + 2, "J").Formula = "=sum(J16:J" & lrow & ")"

Cells(lrow + 2, "K").Formula = "=sum(K16:K" & lrow & ")"

Cells(lrow + 2, "L").Formula = "=sum(L16:L" & lrow & ")"

Cells(lrow + 2, "M").Formula = "=sum(M16:M" & lrow & ")"

Cells(lrow + 2, "N").Formula = "=sum(N16:N" & lrow & ")"

Cells(lrow + 2, "O").Formula = "=sum(O16:O" & lrow & ")"

Cells(lrow + 2, "F") = "Total Hours"

Range("I" & lrow + 2 & ":O" & lrow + 2).Font.Bold = True

Cells(lrow + 2, "F").Font.Bold = True

Else

'Toggle Off code

lrow = Cells(65536, "D").End(xlUp).Row

Cells(lrow + 2, "I").Formula = ""

Cells(lrow + 2, "J").Formula = ""

Cells(lrow + 2, "K").Formula = ""

Cells(lrow + 2, "L").Formula = ""

Cells(lrow + 2, "M").Formula = ""

Cells(lrow + 2, "N").Formula = ""

Cells(lrow + 2, "O").Formula = ""

Cells(lrow + 2, "F") = ""

Range("I" & lrow + 2 & ":O" & lrow + 2).Font.Bold = False

Cells(lrow + 2, "F").Font.Bold = False

End If

End Sub
``````
0

## Featured Post

Introduction This Article briefly covers methods of calculating the NPV and IRR variants in Excel as well as the limitations in calculating and interpreting IRR results. Paraphrasing Richard Shockley, author of my favourite finance reference tex…
This article describes some techniques which will make your VBA or Visual Basic Classic code easier to understand and maintain, whether by you, your replacement, or another Experts-Exchange expert.
This Micro Tutorial will demonstrate how to use a scrolling table in Microsoft Excel using the INDEX function.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…