更改形状中的字体颜色

时间:2019-02-12 12:03:16

标签: excel vba

我正在尝试根据不同工作表上单元格的值来更改形状的字体颜色,并不断获得

  

运行时错误“ 1004”:

Private Sub Colours()
    Dim firstSheet As Worksheet, secondSheet As Worksheet

    Set firstSheet = Sheets("Stats - Overall")
    Set secondSheet = Sheets("Dashboard")

    If firstSheet.Range("I41") > 0 Then
     secondSheet.Shapes("Freeform: Shape 19").TextFrame.Characters.Font.Color = RGB(69, 255, 69)
    ElseIf firstSheet.Range("I41") < 0 Then
     secondSheet.Shapes("Freeform: Shape 19").TextFrame.Characters.Font.Color = RGB(255, 0, 0)
    Else
     secondSheet.Shapes("Freeform: Shape 19").TextFrame.Characters.Font.Color = RGB(250, 200, 15)
    End If
End Sub

我不知道我们出了什么问题。

1 个答案:

答案 0 :(得分:1)

第一件事-在:之后删除Else。这不是Python,而是: probably will fail your code somewhere some day。例如。在这里:

Sub TestMe()
    If False Then:
       Debug.Print "OK"
End Sub

然后,可能有很多原因导致1004错误。通常,它是具有锁定形状的锁定工作表。或类似的东西。通常,构建类似这样的东西,它正在工作表中工作并尝试从那里开始工作:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub

    With Shapes(1).TextFrame.Characters.Font
        If Range("A1") > 0 Then
            .Color = RGB(0, 0, 0)
        Else
            .Color = RGB(200, 200, 200)
        End If
    End With
End Sub