最新WPS办公软件学习教程_免费企业办公软件下载_金山WPS Office官网论坛

 找回密码
 
查看: 58826|回复: 309

[VBA/VBS教程] 一次性锁定所有含公式的单元格,防止小白误操作

    [复制链接]

154

主题

27

听众

5095

积分

解答支持团员

Rank: 14Rank: 14Rank: 14Rank: 14

签到天数: 1 天

[LV.1]初来乍到

金币
2784
威望
11083
帖子
2618
精华
0

技术分享团 解答支持团 测试体验团 优秀会员奖 活跃会员奖 乐于助人奖 技巧教程分享达人

发表于 2013-2-18 21:09 |显示全部楼层
分享到: 新浪微博 腾讯微博
常碰到这种情况,精心设计好的表格,公式弄好,交给别人去填表。
) J0 P( C) L, v2 [1 s2 G8 m0 ]; m! p- L- O$ @- H9 S/ w" `# K( J
小白们不小心就把你写的公式改乱了。你要改回去还很麻烦。1 @4 Y& z! R( ~* t) a
& o1 n- y* K9 ^4 m, B; {% E
在wps中好像还没有很方便的方法一次性锁定所有的公式格。看来只能写程序解决。( e( e. D! Z6 T- t! U

' u5 J! n% f1 W  j; k! ]* h) J这里提供一个vbscript脚本写的程序。
" q. |/ t7 W# h- J+ B(使用方法:用wps et或Excel打开要处理的xls、et文件,双击vbs脚本运行)# @  [% a7 e4 [5 E% l; ~5 ~4 G7 `
, Z' o( r) h  @! N" V& j5 V& ]
具体思路是:
6 L0 B. V& X% N! ]: U- R" B取消对工作表的保护→解锁所有表格→在数据区一个一个看是否公式。如果格子是公式就锁定之→保护工作表。
8 b) {% t5 K: g8 u. ]9 d  G7 {( u7 [& U: Y
本程序中对工作表的保护未设置密码。各位可自行修改程序或重新保护时设置密码。
9 l: Y) R. o# D; ]+ ?+ g  e* w9 ]% ?) l: n
程序核心代码与注释如下:
    ForEach SheetIn Workbook.worksheets
9 \, G, {, i, x' V: x& p        If doAllOr Sheet.Name=ActiveSheet.NameThen
6 b9 u: D( {$ y% |$ D            WScript.Echo"处理" & sheet.Name & "..."7 J4 t- A9 D" t$ l
            ' 解保护
' j$ a; `, B% x7 I& n            Sheet.unprotect
, g* [, ?9 B/ f            ' 对所有单元格解除锁定5 L* x  Y( a6 f+ P4 W/ ?+ [
            Sheet.cells.locked = False5 [* z: g2 F1 {. q( k3 C9 P# F
            ' 获取有数据的范围
" u+ f/ X8 a8 \* ^. w3 p2 s            maxrow = Sheet.usedrange.row + Sheet.usedrange.rows.count-1
* }2 N5 {1 V6 N' u$ N& T            maxcol = Sheet.usedrange.column+Sheet.usedrange.columns.count-1
% `+ Y% U$ }& W. |( w: K            For i = 1To maxrow
& }9 U% ]% L. }8 \( ?& Q' e1 H9 `. S                For j = 1To maxcol
: I# i4 t* [3 |: o
                  '如果有公式就锁定,没有就就解锁 # e+ O/ u; j/ c% `5 b7 ]& z6 B+ L
                    If Sheet.cells(i,j).hasformulaThen0 n$ C2 m4 q  b! C; r: _( x
                        Sheet.cells(i,j).locked = True
! _5 D* {4 a6 v  ]- B) Z+ ^                    Else
5 j' g* s2 X7 \5 o% ?, s% ?                        Sheet.cells(i,j).locked = False
: E. a: z! `6 S: n' R4 P4 o; a                    EndIf
/ ~  v8 C, k- a; f                Next, g3 U7 e; R* v  \) X- \
            Next' p; y' Y# A$ s: A4 O% O
            ' 保护工作表9 k" ]# y1 Z1 Y7 r5 B
            Sheet.protect
" o% T2 |3 N/ \# T/ x5 A        EndIf        8 {- v; t& C+ A- j' R: L' V" ]. _
        ) Q+ Q" ~: J. X3 @5 y( m2 S
    Next' for each Sheet 循环
- A+ Q2 }( p9 R& C9 ]+ T5 w/ _
源代码全文见附件。# M! t+ R  q  x  H9 O' U) K2 t  B
. f. b8 x/ c' i* n3 e5 E
程序中会提问是只处理当前文件中的当前工作表还是处理当前文件中的全部工作表。- T- ~: p, w9 Y7 J! s
在WPS ET 2012 和 MS EXCEL 2010中均测试通过。/ @' C; J% v& C
(不得不注一下:复杂的表测试下来在WPS ET中处理速度比较慢,请耐心等待处理结束的提示。Excel中速度很快)
' d9 t2 G8 {  `
游客,如果您要查看本帖隐藏内容请回复

4 i8 s$ e, V& J  X6 j
/ W* ~7 u! F7 [2 y. o上面程序是为2012版设计的。请下载后自己修改一下程序支持新版:
  x' _' m# ^7 N. `找到:4 W/ F4 g& A3 i2 ~
Set ET = GetObject(, "ET.Application")
6 w) {2 f9 J% P4 R& C1 x2 i- B% x1 {) y/ b
改为 0 _) F( q( H2 j, g" ?1 m& Y7 N+ @2 _0 z
Set ET = GetObject(, "KET.Application")

本帖子中包含更多资源

您需要 登录 才可以下载或查看,

点评

赞同: 5.0
翘尾的k  赞同: 5
  发表于 2013-2-18 21:24
已有 2 人评分威望 收起 理由
松风水月 + 20 很给力!
zhouyiran1@126.com + 18 很给力!

总评分: 威望 + 38   查看全部评分

153

主题

109

听众

1万

积分

解答支持团长

老菜鸟

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

签到天数: 240 天

[LV.8]以坛为家I

金币
1254
威望
25965
帖子
10314
精华
1

活跃会员奖 解答支持团 测试体验团 乐于助人奖 优秀会员奖

发表于 2013-2-18 21:34 |显示全部楼层
又出新功能,学习了,送分+收藏!
回复

使用道具 举报

69

主题

4

听众

2095

积分

测试体验团员

Rank: 14Rank: 14Rank: 14Rank: 14

签到天数: 3 天

[LV.2]偶尔看看I

金币
232
威望
4111
帖子
1146
精华
0

WPS粉丝团 测试体验团

发表于 2013-2-18 22:30 |显示全部楼层
{:soso_e113:}收到 ,我更喜欢直接拖上去就搞定的。
欢迎访问 嘀噫空间-DESpace:www.xx10.cn
百度DE空间团队邀您一起帮助他人
回复

使用道具 举报

42

主题

10

听众

1968

积分

解答支持团员

Rank: 14Rank: 14Rank: 14Rank: 14

该用户从未签到

金币
446
威望
4606
帖子
900
精华
0

重阳节勋章 解答支持团 测试体验团

发表于 2013-2-19 09:24 |显示全部楼层
又出新功能,学习了,送分+收藏!
敬请关注我的新浪微博,在这里有问题请私信,一定帮助,有问必答!!!
回复

使用道具 举报

0

主题

0

听众

62

积分

LV.2

Rank: 2

该用户从未签到

金币
23
威望
146
帖子
28
精华
0
发表于 2013-2-19 15:43 |显示全部楼层
好好学习,认真研究一下。

点评

莽荒纪  莽荒纪无弹窗http://www.xiushu.com  发表于 2013-3-28 13:07
回复

使用道具 举报

0

主题

0

听众

4

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
4
帖子
2
精华
0
发表于 2013-2-21 21:02 |显示全部楼层
学习了。谢谢楼主分享!!!!!
回复

使用道具 举报

3

主题

1

听众

277

积分

LV.4

Rank: 4

该用户从未签到

金币
43
威望
739
帖子
94
精华
0
发表于 2013-2-22 08:23 |显示全部楼层
谢谢楼主分享
" P4 B5 q% Q* q* K
回复

使用道具 举报

1

主题

0

听众

17

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
17
帖子
6
精华
0
发表于 2013-2-23 15:39 |显示全部楼层
学习!!!
回复

使用道具 举报

53

主题

59

听众

6715

积分

版主

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

签到天数: 126 天

[LV.7]常住居民III

金币
634
威望
13773
帖子
3973
精华
2

WPS粉丝团 技术分享团 乐于助人奖 技巧教程分享达人 优秀会员奖 活跃会员奖 测试体验团 版主勋章 勤奋版主奖 最佳教程奖 测试体验官 优秀模板奖

发表于 2013-2-23 15:52 |显示全部楼层
好有用....
回复

使用道具 举报

0

主题

0

听众

35

积分

LV.1

Rank: 1

该用户从未签到

金币
18
威望
59
帖子
5
精华
0
发表于 2013-2-25 09:37 |显示全部楼层
看看怎么保护
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 更多账号登录:

快速回帖:

fastpost

WPS论坛更新日志|WPS Office官方论坛     

GMT+8, 2017-11-18 14:26

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部