Solved

Make command button work as a toggle button vba

Posted on 2009-04-06
3
475 Views
Last Modified: 2013-11-25
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

Open in new window

0
Comment
Question by:RRUTLAND5
  • 2
3 Comments
 
LVL 5

Expert Comment

by:Steve Dubyo
Comment Utility
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

Open in new window

0
 

Author Comment

by:RRUTLAND5
Comment Utility
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

by:
Steve Dubyo earned 250 total points
Comment Utility
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

Open in new window

0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

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…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now