|
用宏也是作简单的文本处理,具体代码如下——
- Option Explicit
- Sub 替换星号()
- On Error Resume Next '遇到错误执行下一行代码
- Application.ScreenUpdating = False '关闭屏幕刷新
- Dim str$, rng As Range
- If Selection Is Nothing Then Exit Sub '如果没有选定单元格则退出程序
- '用输入框来获取操作指令代码
- str = InputBox("请选择替换类型:" & vbCrLf & "1:前5位用*代替;" & vbCrLf & "2:中间6位或8位用*代替;", "选择操作指令")
- If Len(str) > 0 And IsNumeric(str) Then '检测输入框中的指令,填写了数字的话则执行下面的代码
- For Each rng In Selection '在选定区域中循环
- If str = "1" Then '执行指令1,将选定区域中的内容前5位用*代替
- rng = "*****" & Right(rng.Value, Len(rng.Value) - 5)
- ElseIf str = "2" Then '执行指令2,将选定区域中的中间6位或8位用*代替
- If Len(rng.Value) = 15 Then '针对15位的身份证号码,只替换其中的6位生日数字
- rng = Left(rng.Value, 6) & "******" & Right(rng.Value, 3)
- Else '针对18位身份证号码,替换其中的8位生日数字
- rng = Left(rng.Value, 6) & "******" & Right(rng.Value, 4)
- End If
- End If
- Next
- End If
- Application.ScreenUpdating = True '打开屏幕刷新
- End Sub
复制代码 |
|