第一个问题:我想在特定的单元格值更改时自动运行宏,但是当单元格值更改时,它不运行。它运行的唯一方法是当我转到开发人员选项卡下的"宏"部分并手动运行宏。
第二个问题:我有一个格式为文本的单元格,并显示" 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
排序和图片是被调用的宏,上述代码必须放在宏应触发的实际表中(即不在模块中)
编辑:这回答了您的第一个问题。请标记为有用的话,然后将您的第二个问题完全发布在新的帖子中。