楼主 kevinchengcw |
Q: 如何用vba代码为选定区域添加干扰数据防止普通数值复制? A: 代码如下:- Sub test()
- Dim Rng As Range, R As Range, N%, I%, Arr, Str$, Str2$, Col&
- Arr = Split("a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z", ",") '设定干扰码数组
- On Error GoTo Skip '设定出错跳转
- Set Rng = Application.InputBox("请用鼠标选择要添加干扰数据的单元格范围:", "选择区域", , , , , , 8) '选择单元格范围
- For Each R In Rng '循环各个单元格
- If R <> "" Then '不处理空单元格
- N = (Int(Rnd * 10) Mod 5) + 1 '取得随机字符的个数(1-5个)
- Str2 = R.Value '提取原有数据
- Str = "" '初始化字符串为空
- For I = 1 To N * 2 '循环随机数2倍,一段加前面一段加后面
- If I = N + 1 Then Str = Str & Str2 '如果超过一段长度时添加原有数据
- Str = Str & Arr(Int(Rnd * 100) Mod 25) '串接干扰数据
- Next I
- With R
- .Value = Str '写入数据
- .HorizontalAlignment = xlCenter '设置水平居中
- If .Interior.ColorIndex = xlNone Then '设置干扰字体颜色与底色一致
- Col = 2
- Else
- Col = .Interior.ColorIndex
- End If
- With .Characters(1, N).Font '设定一段字体大小及颜色
- .Size = 1
- .ColorIndex = Col
- End With
- With .Characters(N + Len(Str2) + 1, N).Font '设定二段字体大小及颜色
- .Size = 1
- .ColorIndex = Col
- End With
- End With
- End If
- Next R
- Skip:
- End Sub
附示例文件
2.rar |