That will definitely create an issue.
You could do the following when adding a checkbox: in a hidden column , say
column , when you add a checkbox, set the cell on the same row in that column
to the name of the checkbox.
''' Carefull, this will write in column A:
'------------------------------------------------------------
ActiveSheet.CheckBoxes.Add(40, 138 + (ActiveCell.Value * 12.75), 93,
17.25).Select
Selection.Characters.Text = "Add to Estimate"
selection.name = "CheckboxRow" & activecell.row ''' <<<<<<<<<
ActiveCell.EntireRow.Cells(1) = "CheckboxRow" & activecell.row ''' <<<<<<<
ActiveCell.Offset(0, 2).Select
'----------------------------------------------------------
Now when deleting the checkbox, use the name in column A of that row instead
of the activecell's row number:
'-----------------------------------------------------------
ActiveSheet.CheckBoxes("CheckboxRow" & activecell.EntireRow.cells(1)).Delete
'-----------------------------------------------------------
One thing you have to do also, is make sure the checkbox 'follows' the row
when resized or new rows are inserted. Set the Placement property of the
checkbox properly when creating it in the above code:
'-----------------------------------------------------------
''' not sure which one of xlMove, xlFreeFloating , xlMoveAndSize
''' try it out
selection.Placement = xlMoveAndSize
'-----------------------------------------------------------
However, there is no way to track a Delete row or an Insert row, so you may
end up with some orphan chekboxes at some point.
To have everything working perfectly, you will need more work. Something to
try is to Protect the sheet and add buttons linked to macros to Insert a row
and Delete a row. This way you know when it happens and you can re-arrange
your checkboxes.
Regards,
Sébastien
<
http://www.ondemandanalysis.com>
<
http://www.ready-reports.com>