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