I have a workbook with multiple worksheets each with a series of buttons. I want to pin the buttons to specific locations for each worksheet so that every time a user opens the workbook the buttons locate to the correct spot. Problem is the code being used only works when placed in 'ThisWorkbook' and I want to be able to code the buttons by sheet. I've tried to drop the code into the worksheet area but it just doesn't work and I can't figure out what I'm missing here to get it working.
EDIT - each worksheet in the workbook is unique to itself with different macros assigned to each button and each button being located in a different position for each worksheet. The sheets themselves share button names ("button 1", "button 2", etc.) so I think the buttons need to be 'pinned' to each individual worksheet to allow for this variation in location and use since button 1 on sheet 1 is totally unique from button 1 on sheet 2.
My code below operates the workbook and not the worksheet which has already been identified as screw up #1 on my part.

Private Sub Workbook_Open()
Dim rng As Range
Set rng = ActiveSheet.Range("D5")
With ActiveSheet.Shapes("Button 1")
.Top = rng.Top
.Left = rng.Left
.Width = rng.Width
.Height = rng.RowHeight
End With
End Sub
EDIT#2 Using Mat's suggestion I am trying to identify each button within the sheet but I do not know how to use the public property get and identify bot the "Button Name" and the "Range" of each button so that I can locate more than one button per sheet
Option Explicit
Public Property Get ButtonName() As String
ButtonName = "Button 1"
End Property
Public Property Get ButtonAnchor() As Range
Set ButtonAnchor = Me.Range("B2")
End Property
Property Getprocedures, and return a different value depending on what the parameter is. - Mathieu Guindon