关于Excel宏的两个问题



第一个问题:我想在特定的单元格值更改时自动运行宏,但是当单元格值更改时,它不运行。它运行的唯一方法是当我转到开发人员选项卡下的"宏"部分并手动运行宏。

第二个问题:我有一个格式为文本的单元格,并显示" somenumber%/somethothernumber%",我希望负值为红色和彩色绿色的正值。问题在于它仅注册第一个值,因此,如果它是正值,那么所有单元格值都是绿色的,反之亦然。这是特定的文本格式:= TEXT(AS4,"[>0]+#,###0.000%;[<0]-#,###0.000%")&" "&"/"&" "&TEXT(AS6,"[>0]+#,###0.000%;[<0]-#,###0.000%")

这是我在这两个解决方案中的尝试:

Sub TextColorChange()
Dim xWs As Worksheet
Set xWs = Sheets("Trading Statistics")
For Row = 10 To 13
    vall = xWs.Cells(Row, 51).Value
        CheckPlus = InStr(1, vall, "+")
        CheckMinus = InStr(1, vall, "-")
        CheckDash = InStr(1, vall, "/")
        part = Len(vall) - CheckDash + 1
        If CheckMinus <> 0 Then
            xWs.Cells(Row, 51).Characters(Start:=CheckMinus, Length:=part).Font.ColorIndex = 3
        End If
        If CheckPlus <> 0 Then
            xWs.Cells(Row, 51).Characters(Start:=CheckPlus, Length:=part).Font.ColorIndex = 10
        End If
Next Row
End Sub
--------------------------------    
Private Sub Worksheet_Calculate()
    Dim Xrg As Range
    Set Xrg = Me.Range("AY6")
    If Not Intersect(Xrg, Me.Range("AY6")) Is Nothing Then
       Call TextColorChange
    End If
End Sub

我有一个执行此操作的Excel文件,当用户粘贴数据在表中是:

时,我用来活跃宏的代码。
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Set KeyCells = Range("A2")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
                Call Sorting
                Call Pic
    End If

MsgBox "Data updated"
End Sub

排序和图片是被调用的宏,上述代码必须放在宏应触发的实际表中(即不在模块中)

编辑:这回答了您的第一个问题。请标记为有用的话,然后将您的第二个问题完全发布在新的帖子中。

相关内容

  • 没有找到相关文章

最新更新