VBA Syntax Issues with Placing Checkboxes

phelbin

New Member
Joined
Mar 6, 2015
Messages
28
I found some nifty code that 90% solves my problem, but I need to tweak it a bit. This code brings up message boxes to define the range and linked column and then places checkboxes. In my situation I want to set the range and linked column and not use the message boxes, but I just can't get the syntax to work.


Any ideas?




Code:
Option Explicit
Sub insertCheckboxes()
 
  Dim myBox As CheckBox
  Dim myCell As Range
 
  Dim cellRange As String
  Dim cboxLabel As String
  Dim linkedColumn As String
 
  cellRange = InputBox(Prompt:="Cell Range", _
    Title:="Cell Range")
 
  linkedColumn = InputBox(Prompt:="Linked Column", _
    Title:="Linked Column")
 
  cboxLabel = InputBox(Prompt:="Checkbox Label", _
    Title:="Checkbox Label")
 
  With ActiveSheet
    For Each myCell In .Range(cellRange).Cells
      With myCell
        Set myBox = .Parent.CheckBoxes.Add(Top:=.Top, _ 
          Width:=.Width, Left:=.Left, Height:=.Height)
 
        With myBox
          .LinkedCell = linkedColumn & myCell.Row
          .Caption = cboxLabel
          .Name = "checkbox_" & myCell.Address(0, 0)
        End With
 
        .NumberFormat = ";;;"
      End With
 
    Next myCell
  End With
End Sub






Thanks!!








BTW, I found it here:
Excel: Adding Checkboxes the Easy Way | Terminally Incoherent
 

Excel Facts

Test for Multiple Conditions in IF?
Use AND(test, test, test, test) or OR(test, test, test, ...) as the logical_test argument of IF.
Nevermind...it works now:


Code:
<code style="margin: 0px; padding: 0px; font-style: inherit; font-weight: inherit;">Sub AddCheckboxes()

Dim myBox As CheckBox
Dim myCell As Range

Dim cellRange As Range
Dim cboxLabel As String
Dim linkedColumn As String

    Set cellRange = Range("A1:A10")

    linkedColumn = "D"

    cboxLabel = "MyCheckbox"

    With ActiveSheet
        For Each myCell In cellRange
            With myCell
                Set myBox = .Parent.CheckBoxes.Add(Top:=.Top, _
                                                   Width:=.Width, Left:=.Left, Height:=.Height)

                With myBox
                    .LinkedCell = linkedColumn & myCell.Row
                    .Caption = cboxLabel
                    .Name = "checkbox_" & myCell.Address(0, 0)
                End With

                .NumberFormat = ";;;"
            End With

        Next myCell
    End With
    
End Sub
</code>
 
Upvote 0
If you should need to have unique label names, try something like this.

Howard


Code:
Sub AddCheckboxes()

Dim myBox As CheckBox
Dim myCell As Range

Dim cellRange As Range
Dim cboxLabel As String
Dim linkedColumn As String
Dim bxNo As Long

    Set cellRange = Range("A1:A10")

    linkedColumn = "D"

    cboxLabel = "MyCheckbox"
    
bxNo = 0

    With ActiveSheet
        For Each myCell In cellRange
            With myCell
                Set myBox = .Parent.CheckBoxes.Add(Top:=.Top, _
                                                   Width:=.Width, Left:=.Left, Height:=.Height)

                With myBox
                    .LinkedCell = linkedColumn & myCell.Row
                    .Caption = cboxLabel & bxNo + 1
                    .Name = "checkbox_" & myCell.Address(0, 0)
                   
                End With

                .NumberFormat = ";;;"
            End With
            
bxNo = bxNo + 1

        Next myCell
    End With
    
End Sub
 
Upvote 0

Forum statistics

Threads
1,216,119
Messages
6,128,946
Members
449,480
Latest member
yesitisasport

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top