I like Debra's approach, but I think you could steal more info from the dropdown
before you delete it.
Option Explicit
Sub ReplaceDropDownsWithComboboxes()
Dim oleObj As OLEObject
Dim myDD As DropDown
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
For Each myDD In wks.DropDowns
With myDD
Set oleObj = _
.Parent.OLEObjects.Add(ClassType:="Forms.comboBox.1", _
Left:=.Left, Top:=.Top, Width:=.Width, _
Height:=.Height)
oleObj.ListFillRange = .ListFillRange
oleObj.LinkedCell = .LinkedCell
If .ListIndex = 0 Then
'do nothing
Else
oleObj.Object.Value = .List(.ListIndex)
End If
.Name = "tmp_" & .Name
oleObj.Name = Mid(.Name, 5)
.Delete 'get rid of the old dropdown
End With
Next myDD
End With
End Sub
I stopped stealing with the listfillrange, the linked cell and the name. (and
the location, too!)