excel vba如何设置一个按钮,点击之后A1:A10里的四则运算式中的括号数...

发布网友 发布时间:2024-10-23 04:20

我来回答

1个回答

热心网友 时间:2024-11-03 08:36

自己粗略的测试了一下,试试能用不

Sub 括号颜色()
co = Array(7, 3, 5, 4) '第1,2,3,4层的颜色序号紫红蓝绿。第1层没用黑色,字本来就黑色分不出来。
For i = 1 To [a65536].End(xlUp).Row 'A列循环
    tempstring = Cells(i, 1).Value '获取内容
    If Len(Replace(tempstring, "(", "")) <> Len(Replace(tempstring, ")", "")) Then GoTo l3 '括号数不匹配跳过
    l = Len(tempstring) '内容长度
    ReDim t(1 To l) As Integer '存放括号对层数的数组
l1::
    aa = InStr(1, tempstring, ")"): If aa = 0 Then GoTo l2 '查找)的位置,没找到表示已查找完
    bb = InStrRev(tempstring, "(", aa): If bb = 0 Then GoTo l3 '在)的位置往左找(,没找到表示不配对,跳过
    For j = bb + 1 To aa - 1 '计算找到的括号在哪一层
        If Max < t(j) Then Max = t(j)
    Next
    tempstring = Application.WorksheetFunction.Replace(tempstring, aa, 1, 0): t(aa) = Max + 1 '找到的替换掉方便下次查找并保存括号的层次
    tempstring = Application.WorksheetFunction.Replace(tempstring, bb, 1, 0): t(bb) = Max + 1
    Max = 0
    GoTo l1
l2::
    For j = 1 To l '标记颜色
        If t(j) > 0 Then
            Cells(i, 1).Characters(Start:=j, Length:=1).Font.ColorIndex = co((t(j) - 1) Mod 4)
        End If
    Next
l3:: Next
End Sub

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com