В прикрепленном коде все работает, кроме присвоения значения shpOval3.
Я пытаюсь взять текст из ячейки и присвоить его переменной, объявленной как MsoShapeType.
1) Код пропускается с несоответствием типов, когда он пытается присвоить значение ячейки msoShapeOval для shpOval3 (объявлен как MsoShapeType).
2) Если я пытаюсь вместо strOval4 (строка) вместо .Shapes.AddShape(strOval4, Left, Top, Width, Height)
, он также пропускает и говорит тип mismatch.
Я пытаюсь избежать преобразования в ячейку константы msoShapeType, поскольку значение ячейки загружается в комбинированный список в форме, а значение 9 не имеет смысла для пользователей. Я могу конвертировать в случае необходимости, но ищу решение без конвертации.
Sub ShpType()
Dim shpOval1 As Long
Dim shpOval2 As MsoShapeType
Dim shpOval3 As MsoShapeType
Dim strOval4 As String
Sheets("Data").Range("Company1Shape") = "msoShapeOval"
shpOval1 = msoShapeOval
shpOval2 = msoShapeOval
shpOval3 = Sheets("Data").Range("Company1Shape")
strOval4 = Sheets("Data").Range("Company1Shape")
Debug.Print "shpOval1 = "; shpOval1
Debug.Print "shpOval2 = "; shpOval2
Debug.Print Sheets("Data").Range("Company1Shape")
Debug.Print "shpOval3 = "; shpOval3
Debug.Print "strOval4 = "; strOval4
End Sub
Debugger results with shpOval3 commented out
shpOval1 = 9
shpOval2 = 9
msoShapeOval
shpOval3 = 0
strOval4 = msoShapeOval