首页   

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

完美Excel  · Excel  · 1 周前

主要观点总结

本文主要介绍了一种避免在Excel工作表中点击受保护的窗体控件时弹出警告消息的技巧,即在控件上面放置一个不可见的文本框。同时提供了放置和移除不可见文本框的VBA代码。

关键观点总结

关键观点1: 介绍Excel工作表中窗体控件的问题

当工作表受保护且使用了窗体控件时,点击这些控件可能会弹出警告消息。

关键观点2: 提供一种解决方案

使用不可见文本框覆盖窗体控件,以避免弹出警告消息。包括放置不可见文本框的VBA代码。

关键观点3: 介绍移除不可见文本框的方法

提供了移除当前工作表中不可见文本框的VBA代码。

关键观点4: 社交互动与资源获取

鼓励读者在文章下面留言,完善内容,并介绍如何获取更多电子资料和进行技术交流,包括加入微信讨论群的途径。


正文

学习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社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

© 2024 精读
删除内容请联系邮箱 2879853325@qq.com