When searching for a solution to Autofill properties info Active X control spin buttons? , the root cause of the error lies in how Excel handles different control types. In your original code, Form Controls were addressed as Shapes . While an ActiveX control does have a shape container, selecting it via ActiveSheet.Shapes.Range(Array("SpinButton1")).Select only gives you access to the container's formatting, not the control's
Understanding the Object Hierarchy Error
When searching for a solution to Autofill properties info Active X control spin buttons? , the root cause of the error lies in how Excel handles different control types. In your original code, Form Controls were addressed as Shapes . While an ActiveX control does have a shape container, selecting it via ActiveSheet.Shapes.Range(Array("SpinButton1")).Select only gives you access to the container's formatting, not the control's internal properties (Value, Min, Max, LinkedCell)
In Microsoft 365 and Office | Excel | For business | Windows, ActiveX controls are OLEObjects . Attempting to use a With Selection block after selecting a shape will trigger an "Object doesn't support this property or method" error when the compiler hits .Value = 1 . To fix this, you must bypass the Select method entirely and directly address the Object property of the OLEObject class
The Primary Solution - Correcting the VBA Syntax
The steps below target Link ActiveX Spin Buttons to Excel Cells and use Code window as the visible reference point.

- Open your Excel workbook and press Alt + F11 to launch the Visual Basic for Applications (VBA) Editor
- Navigate to the module containing your CreatespinnerAuto subroutine
- Locate the failing section of code starting with ActiveSheet.Shapes.Range(Array("SpinButton" & SpinnerNUM)).Select
- Delete the .Select line and the With Selection line
- Replace them with the correct OLEObject reference by typing: With ActiveSheet.OLEObjects("SpinButton" & SpinnerNUM).Object
- Remove the line .Display3DShading = False , as this is an exclusive property of Form Controls and will cause a new error if applied to an ActiveX Spin Button
- Close the With block and run the macro. Your new code block should look exactly like this: SpinnerNUM = 1 For K = 1 To 5 For j = 1 To 18 With ActiveSheet.OLEObjects("SpinButton" & SpinnerNUM).Object .Value = 1 .Min = 0 .Max = 32 .SmallChange = 1 .LinkedCell = Cells(j + 2, 2 K).Address End With SpinnerNUM = SpinnerNUM + 1 Next j Next K
How to Verify the Excel Result
Run the final check exactly as described: Close the With block and run the macro. Your new code block should look exactly like this: SpinnerNUM = 1 For K = 1 To 5 For j = 1 To 18 With ActiveSheet.OLEObjects("SpinButton" & SpinnerNUM).Object .Value = 1 .Min = 0 .Max = 32 .SmallChange = 1 .LinkedCell = Cells(j + 2, 2 K).Address End With SpinnerNUM = SpinnerNUM + 1 Next j Next K If it fails, return to Code window and confirm that OLEObjects reference was applied to the intended item.
WPS Office: A Free Microsoft Office Alternative for Link ActiveX Spin Buttons to Excel Cells
For local work related to Link ActiveX Spin Buttons to Excel Cells, WPS Office is a free Microsoft Office-compatible alternative. It does not reproduce every proprietary Excel service or administrator control, so use the Microsoft steps above when the task depends on that specific platform.
If you need to keep working with local files related to “Link ActiveX Spin Buttons to Excel Cells,” WPS Spreadsheets supports XLSX and CSV files, formulas, charts, filters, and pivot-table work, and WPS AI can explain formulas, organize data, and summarize worksheet content. Its free tier and familiar ribbon-style controls make it practical for opening, editing, and saving common Office-format files while the original Microsoft task is handled separately.

Excel FAQs About Link ActiveX Spin Buttons to Excel Cells
Why does my VBA code work for Form Controls but fail on ActiveX controls?
Form Controls are treated as native Excel shapes, allowing the Selection object to expose their properties. ActiveX controls are external COM objects embedded inside an OLEObject container. You must reference the .Object property of the OLEObject to access ActiveX-specific settings like Min, Max, and Value.
Is it necessary to Select an ActiveX control to change its properties?
No, and it is actually considered poor practice in VBA. Using .Select slows down macro execution and causes screen flickering. It is always better to manipulate the object directly using its precise hierarchy path (e.g., ActiveSheet.OLEObjects("Name").Object.Value = 1 ).
Why do I get an error when applying Display3DShading to an ActiveX Spin Button?
The Display3DShading property is exclusive to Excel Form Controls. ActiveX controls have a different set of visual properties (such as SpecialEffect or BackColor ). You must remove the Display3DShading line from your code when transitioning your macro to ActiveX.
How do I dynamically assign a LinkedCell to an ActiveX control in a VBA loop?
You can use the Cells(Row, Column).Address method. Inside your With block targeting the ActiveX object, simply set .LinkedCell = Cells(rowVariable, columnVariable).Address . This will automatically calculate the A1-style reference needed for the ActiveX LinkedCell property during each iteration of the loop.




