专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
Excel之家ExcelHome  ·  最简单的Excel动态图表,一看就会 ·  2 天前  
Excel之家ExcelHome  ·  这些公式很简单,脑子不必再冒烟 ·  昨天  
完美Excel  ·  阻止用户单击工作表中的控件 ·  昨天  
完美Excel  ·  完美Excel的2024 ·  5 天前  
Excel之家ExcelHome  ·  LOOKUP函数,这些用法会不会? ·  4 天前  
51好读  ›  专栏  ›  完美Excel

阻止用户单击工作表中的控件

完美Excel  · 公众号  · Excel  · 2025-01-22 06:00

正文

学习Excel技术,关注微信公众号:
excelperfect

标签:VBA

如果工作表中使用了窗体控件,例如复选框、单选按钮等,如果这个工作表受保护,你仍然可以单击这些控件,但如果该控件的链接单元格被锁定,则会弹出一条警告消息,如下图1所示。

1

本文使用了一个技巧,用于阻止用户单击这些控件。技巧是,在这些控件上面放置一个不可见的文本框。

首先,确保工作表撤销保护。然后切换到VBE,在一个标准模块中输入下面的代码:

'使用不可见文本框覆盖当前工作表中每个窗体控件'以避免在受保护工作表中单击这些控件时弹出消息Sub CoverControl() Dim shp As Shape For Each shp In ActiveSheet.Shapes   If shp.Type = msoFormControl Then     ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _      shp.Left, shp.Top, shp.Width, shp.Height).Select     Selection.ShapeRange.Fill.Visible = msoFalse     Selection.ShapeRange.Line.Visible = msoFalse   End If Next shp Set shp = NothingEnd Sub

运行代码,将在控件上面放置一个不可见的文本框。然后,再次设置工作表保护。此时,你再单击这些控件,不会有任何反映。

如果要移除这些不可见文本框,使用下面的代码:

'移除当前工作表中不可见文本框Sub RemoveCover() Dim shp As Shape For Each shp In ActiveSheet.Shapes   With shp     If .Type = msoTextBox Then       If .TextFrame2.TextRange.Characters.Text = "" Then .Delete     End If   End With Next shp Set shp = NothingEnd Sub

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

推荐文章
Excel之家ExcelHome  ·  最简单的Excel动态图表,一看就会
2 天前
Excel之家ExcelHome  ·  这些公式很简单,脑子不必再冒烟
昨天
完美Excel  ·  阻止用户单击工作表中的控件
昨天
完美Excel  ·  完美Excel的2024
5 天前
Excel之家ExcelHome  ·  LOOKUP函数,这些用法会不会?
4 天前
新青年麻醉论坛  ·  进修去哪里?西南医院麻醉科欢迎您!
7 年前