如何优雅的保护公式 新旧知识搭配完成点击上方“Excel和VBA”,选择“置顶公众号” 致力于原创分享Excel的相关知识,源码,源文件打包提供 一起学习,一起进步~~ 其实在我们日常的工作中,Excel使用最多的就是各种函数以及函数公式,甚至有很多的小伙伴会单独花费一些时间来学习Excel的函数,其实我也是,有时候函数确实是比较好理解,相较于vba需要写那么多的代码,函数确实是简单很多,能用函数的情况下,可能会选择使用函数,除非纯粹练习VBA 但是函数公式也有一个标段,那就是他没有办法隐藏,我们在Excel单元格中写了公式之后,那么就是公开化的,其他人只需要双击单元格,就可以看到公式了,甚至可以在公式中进行改动,这样可能会给我们的数据带来不小的改动,甚至导致 错误的情况出现 一些比较关键性的数据,我们写在公式中,但是并不想让其他人看到公式,从而逆推出来我们一些关键的参数,比方说工资比例分成等。 那么这个时候我们要怎么办呢? 其实也不难,看看VBA如何来实现这样的结果 这是我们今天模拟的场景,其中B列和C列都是有公式的,我们只要将鼠标放在单元格中,选中就可以看到公式了。那么按照今天的场景,我们需要实现的是隐藏公式,就算是有公式,我们也公式隐藏起来,至少其他人是不知道的,那么这样的效果,如何用VBA实现呢? 代码区Sub hidden_furmula() Dim rng As Range With ActiveSheet.UsedRange Set rng = .SpecialCells(xlCellTypeFormulas) .FormulaHidden = False With rng .FormulaHidden = True End With End With ActiveSheet.Protect "111" End Sub 看看效果 从上面的动图可以看出来,我们通过VBA代码成功的实现了单元格公式的隐藏,原来选中就可以看到的单元格公式,现在已经看不到了,并且不影响单元格的计算数据,从这个结果来看,代码还是成功了。 代码解析那么VBA到底是如何来实现这个功能的呢? 来看代码 当然代码中并不是一上来就选择工作薄的保护的 首先我们需要得到当前工作薄的使用公式的区域,因为后面要隐藏公式,那么肯定要先找到这些区域了。 如何找到呢? With ActiveSheet.UsedRange Set rng = .SpecialCells(xlCellTypeFormulas) End With 我们将含有公式的单元格统一赋值给变量rng 这里不好理解的话,我们可以打开Excel,按下CTRL+G,打开定位窗体 会有一个按照公式来定位,这里我们代码实现的就是这样的效果,按照公式来定位,即获取有公式的单元格 这是一个固定的写法,大家直接记住就好。找到了这些单元格之后,然后我们要取消整个工作薄中的公式隐藏 With ActiveSheet.UsedRange Set rng = .SpecialCells(xlCellTypeFormulas) '获取有公式的单元格区域 .FormulaHidden = False '取消当前所有单元格的公式隐藏 With rng .FormulaHidden = True '针对rng变量所在的区域,执行单元格公式隐藏 End With End With 加上注释,大家一起看着来理解下 首先为了程序的顺利,我们直接取消当前区域可能存在的隐藏单元格公式的操作,将公式可见化 然后将上面得到的rng这个区域的单元格内的公式执行隐藏操作 rng.FormulaHidden = True 就这么简单。 到这里就算完了吗?不是的,之前我们不是说还需要执行工作薄的保护嘛? 没错,上面的操作完成了,还不算结束,还需要最后一步,保护工作薄 ActiveSheet.Protect "111" 这样才能够最终实现我们的效果。 111就是工作薄保护的密码。密码一定要牢记 总结起来就是:
|
|