旋转形状时出现冲突错误

时间:2018-01-19 06:48:43

标签: excel vba excel-vba

我有一个我创建的仪表板,它有一个速度表(如下图所示)。我直接在工作表上使用以下代码(不是模块 - 我有一个模拟模块(没有代码,但是sub和end sub)

我不时会收到对象类型错误和其他类型的冲突错误。我希望以一种不会出现任何错误的方式改进代码。

下面代码中的244基本上是将“箭头”形状指向100%的角度,与其相乘的单元格范围是适当调整旋转的%值。

请指教。谢谢

'Aligns the dials on the speedometer'


 Private Sub Worksheet_Change(ByVal Target As Range)

 ThisWorkbook.Worksheets("TL Dash").Shapes.Range(Array("Group 8")).Select
  Selection.ShapeRange.Rotation = Range("B14").Value * 244
  'ActiveCell.Select'

    ThisWorkbook.Worksheets("TL Dash").Shapes.Range(Array("Group 223")).Select
    Selection.ShapeRange.Rotation = Range("F15").Value * 244
    'ActiveCell.Select'

     ThisWorkbook.Worksheets("TL Dash").Shapes.Range(Array("Group 216")).Select
     Selection.ShapeRange.Rotation = Range("J15").Value * 244
    'ActiveCell.Select'

    End Sub

enter image description here

1 个答案:

答案 0 :(得分:0)

剪切Select并直接处理形状:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Me.Range("B14,F15,J15")) Is Nothing Then
        With ThisWorkbook.Worksheets("TL Dash")
            .Shapes("Group 8").Rotation = Me.Range("B14").Value * 244
            .Shapes("Group 223").Rotation = Me.Range("F15").Value * 244
            .Shapes("Group 216").Rotation = Me.Range("J15").Value * 244
        End With
    End If
End Sub

...并添加一些错误检查以确保所有值都是数字。