<h2>前景提要</h2><p><span>说到Excel,那么不可避免得要说到Excel的公式了,在日常的Excel操作中,借助各种现成的Excel函数所形成的的公式,能够让我们轻松的获得很多我们想要的数据计算结果,但是方便的同时,也带来了一些弊端。</span></p><p><span>比方说公式没有办法隐藏,一些比较关键性的数据,我们写在公式中,但是并不想让其他人看到公式,从而逆推出来我们一些关键的参数,比方说工资比例分成等。</span></p><p><span>这里你可能会说直接复制数据到另外一个表就可以了,这样虽然可以避免公式被看到,但是如果数据量过大的话,复制粘贴也是一件很耗时的事情,有没有可能在工作表中隐藏这些公式,仅仅是展示公式的结果呢?</span></p><h2>场景说明</h2><p><span>其实也不难,看看VBA如何来实现这样的结果</span></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/16158327-7bb8f21ee8edf056.png" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p/><p><span>这是我们今天模拟的场景,其中B列和C列都是有公式的,我们只要将鼠标放在单元格中,选中就可以看到公式了。那么我们如何隐藏这些公式呢?</span></p><h2>代码区</h2><p>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</p><p>看看效果</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/16158327-98655ac6bd97a5e4.gif" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>从上面的动图可以看出来,我们通过VBA代码成功的实现了单元格公式的隐藏,原来选中就可以看到的单元格公式,现在已经看不到了,并且不影响单元格的计算数据,从这个结果来看,代码还是成功了。
</p><h2>代码解析</h2><p><span>那么VBA到底是如何来实现这个功能的呢?</span></p><p><span>之前就有关注过我的文章的小伙伴应该有印象,在之前分享VBA第三系列的时候,我们学习了如何实现工作薄的保护功能,而今天我们恰恰是用到了这个功能,这也是为什么我一直强调的事情,学好一些基础知识,能够有很大的用处</span></p><p><span>来看代码</span></p><p><span>当然代码中并不是一上来就选择工作薄的保护的</span></p><p><span>首先我们需要得到当前工作薄的使用公式的区域,因为后面要隐藏公式,那么肯定要先找到这些区域了。如何找到呢?</span></p><p><span>With ActiveSheet.UsedRange</span></p><p> Set rng = .SpecialCells(xlCellTypeFormulas)</p><p>End With</p><p><span>我们将含有公式的单元格统一赋值给变量rng</span></p><p><span>这里不好理解的话,我们可以打开Excel,按下CTRL+G,打开定位窗体</span></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/16158327-944fa8e8d08332e1.png" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>会有一个按照公式来定位,这里我们代码实现的就是这样的效果,按照公式来定位,即获取有公式的单元格<p/><p><span>这是一个固定的写法,大家直接记住就好。</span></p><p><span>找到了这些单元格之后,然后我们要取消整个工作薄中的公式隐藏,即</span></p><p><span>1.将整个工作薄的单元格公式隐藏先去掉</span></p><p><span>2.然后针对有公式的单元格执行隐藏的操作</span></p><p>With ActiveSheet.UsedRange
Set rng = .SpecialCells(xlCellTypeFormulas) '获取有公式的单元格区域
.FormulaHidden = False '取消当前所有单元格的公式隐藏
With rng
.FormulaHidden = True '针对rng变量所在的区域,执行单元格公式隐藏
End With
End With</p><p><span>加上注释,大家一起看着来理解下</span></p><p><span>首先为了程序的顺利,我们直接取消当前区域可能存在的隐藏单元格公式的操作,将公式可见化</span></p><p><span>然后将上面得到的rng这个区域的单元格内的公式执行隐藏操作</span></p><p><span>rng.FormulaHidden = True</span></p><p><span>就这么简单。
到这里就算完了吗?</span></p><p><span>不是的,之前我们不是说还需要执行工作薄的保护嘛?</span></p><p><span>没错,上面的操作完成了,还不算结束,还需要最后一步,保护工作薄</span></p><p><span>ActiveSheet.Protect "111"这样才能够最终实现我们的效果。</span></p><p><span>111就是工作薄保护的密码。密码一定要牢记</span></p>
Excel VBA 8.37高手保护公式的方法-隐藏公式
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 简单复制-去重-做透视表 Sub 宏3()Application.ScreenUpdating = False '...
- 在面对大量数据时,我们可以使用Excel的筛选功能,滤出我们需要的信息。在本文中,我们先从Excel中的“筛选”命...