分享

Excel VBA 8.37如何优雅的保护公式 新旧知识搭配完成

 Excel和VBA 2021-10-06

如何优雅的保护公式 新旧知识搭配完成


点击上方“Excel和VBA”,选择“置顶公众号”

致力于原创分享Excel的相关知识,源码,源文件打包提供

一起学习,一起进步~~


其实在我们日常的工作中,Excel使用最多的就是各种函数以及函数公式,甚至有很多的小伙伴会单独花费一些时间来学习Excel的函数,其实我也是,有时候函数确实是比较好理解,相较于vba需要写那么多的代码,函数确实是简单很多,能用函数的情况下,可能会选择使用函数,除非纯粹练习VBA

但是函数公式也有一个标段,那就是他没有办法隐藏,我们在Excel单元格中写了公式之后,那么就是公开化的,其他人只需要双击单元格,就可以看到公式了,甚至可以在公式中进行改动,这样可能会给我们的数据带来不小的改动,甚至导致 错误的情况出现

一些比较关键性的数据,我们写在公式中,但是并不想让其他人看到公式,从而逆推出来我们一些关键的参数,比方说工资比例分成等。

那么这个时候我们要怎么办呢?

其实也不难,看看VBA如何来实现这样的结果

这是我们今天模拟的场景,其中B列和C列都是有公式的,我们只要将鼠标放在单元格中,选中就可以看到公式了。那么按照今天的场景,我们需要实现的是隐藏公式,就算是有公式,我们也公式隐藏起来,至少其他人是不知道的,那么这样的效果,如何用VBA实现呢?

代码区

Sub hidden_furmula()Dim rng As RangeWith ActiveSheet.UsedRange    Set rng = .SpecialCells(xlCellTypeFormulas)    .FormulaHidden = False    With rng        .FormulaHidden = True    End WithEnd WithActiveSheet.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 WithEnd With

加上注释,大家一起看着来理解下

首先为了程序的顺利,我们直接取消当前区域可能存在的隐藏单元格公式的操作,将公式可见化

然后将上面得到的rng这个区域的单元格内的公式执行隐藏操作

rng.FormulaHidden = True

就这么简单。

到这里就算完了吗?不是的,之前我们不是说还需要执行工作薄的保护嘛?

没错,上面的操作完成了,还不算结束,还需要最后一步,保护工作薄

ActiveSheet.Protect "111"

这样才能够最终实现我们的效果。

111就是工作薄保护的密码。密码一定要牢记

总结起来就是:

  1. 先获取含有公式的单元格区域

  2. 然后针对这些单元格取消隐藏

  3. 然后就可以专门针对含有公式的单元格进行设置公式的隐藏

  4. 然后给工作簿加密

  5. 完成!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多