Thanks Andy and mikerickson.

I changed the buttons to forms buttons (The commented out portion is what I had previously to create the ActiveX buttons):

i = 1

    For row = 6 To 200
        If Not IsEmpty(WS1.Cells(row, 2)) Then
            WS2.Cells(row + 3, 2) = WS1.Cells(row, 2)
            
            'Create ... command button for ...
                
                'With WS2.OLEObjects.Add(ClassType:="Forms.Commandbutton.1", Top:=WS2.Cells(row + 3, 1).Top, _
                'Left:=WS2.Cells(row + 3, 1).Left, height:=WS2.Cells(row + 3, 1).height, width:=WS2.Cells(row + 3, 1).width)
                    
                '.Object.Caption = "Select"
                'End With
                
                With ActiveSheet.Buttons.Add(WS2.Cells(row + 3, 1).Top, WS2.Cells(row + 3, 1).Left, WS2.Cells(row + 3, 1).height, _
                    WS2.Cells(row + 3, 1).width)
                    .Name = "Button" & i
                    .OnAction = "SGUserForm"
                    .Caption = "Select"
                End With
                i = i + 1
        End If
    Next row
and then a Macro ShowSGUserForm:

Option Explicit
Sub SGUserForm()

    SGMeasuresForm.Show

End Sub
which should activate the SGMeasuresForm UserForm I have. However, I get "Run Time Error 438 - Object Doesn't Support this Property or Method". The only thing I can think of is that the issue is that I'm calling (indirectly) a userform from a form button, rather than an ActiveX button. Any truth to this? I feel like it shouldn't matter because I'm doing it indirectly and calling the macro from the button and the userform from the macro.

Also, I used the same parameters (left,top,height,width) for my Form button that I did for my OLEObjects buttons and the formatting is all screwed up now. My parameters worked well in the OLEObjects.Add.

Lastly, Andy - I'm still trying to integrate your original code into mine to see if I can get it to fit my needs. I'll let you know if I make progress and go that route instead of the forms buttons.