|
本帖最后由 lingyuncelia1 于 2016-2-29 10:07 编辑
运行以下代码有右图效果:
Sub ba()
Dim reg, s As Range, m, n As Integer
Set reg = CreateObject("vbscript.regexp")
With reg
.Global = True
.Pattern = "[" & [k1] & "]"
For Each s In Range("a1:i1")
Set m = .Execute(s.Value)
If Len(s) = 3 And m.Count = 3 Then s.Font.Size = 36
If Len(s) = 2 And m.Count = 2 Then s.Font.Size = 36
If s.Font.Size = 36 Then n = n + 1
Next
End With
Set reg = Nothing
If n = 3 Then
a = Mid(Cells(1, 11).Text, 1, 1)
b = Mid(Cells(1, 11).Text, 2, 1)
c = Mid(Cells(1, 11).Text, 3, 1)
For Each s In Range("a1:i1")
If s.Font.Size = 11 Then s.Value = Replace(s.Text, a, ""): s.Value = Replace(s.Text, b, ""): s.Value = Replace(s.Text, c, "")
Next
Else
For Each s In Range("a1:i1")
If s.Font.Size = 36 Then s.Font.Size = 11
Next
End If
End Sub
为什么修改成这样就无效果了?我看来看去都看不出有什么区别。
Sub ba()
Dim reg, s As Range, m, n As Integer
a = 4
b = 5
c = 7
Set reg = CreateObject("vbscript.regexp")
With reg
.Global = True
.Pattern = "[a & b & c]"
For Each s In Range("a1:i1")
Set m = .Execute(s.Value)
If Len(s) = 3 And m.Count = 3 Then s.Font.Size = 36
If Len(s) = 2 And m.Count = 2 Then s.Font.Size = 36
If s.Font.Size = 36 Then n = n + 1
Next
End With
Set reg = Nothing
If n = 3 Then
For Each s In Range("a1:i1")
If s.Font.Size = 11 Then s.Value = Replace(s.Text, a, ""): s.Value = Replace(s.Text, b, ""): s.Value = Replace(s.Text, c, "")
Next
Else
For Each s In Range("a1:i1")
If s.Font.Size = 36 Then s.Font.Size = 11
Next
End If
End Sub
没有通篇看你的代码,但你的第二段代码中的.Pattern = "[a & b & c]"明显是与第一段代码所表达的不一样。
引号内的连接符将不能执行连接运算。
|
|