热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

选择“保存”后如何运行宏?

我正在设置一个文档,以便在特定单元格包含值的情况下删除行。我希望在选择

我正在设置一个文档,以便在特定单元格包含值的情况下删除行。我希望在选择“保存”按钮时运行此代码。我需要在vba脚本中添加些什么才能实现此目的?

我已经搜索了多个站点并尝试了一些建议的解决方案,但没有找到一个可行的解决方案。

HideRows_BeforeSave()
Dim beginRow As Long
Dim endRow As Long
Dim chkCol As Long
Dim rowCnt As Long
Dim rngResult As Range
Dim ws As Worksheet
beginRow = 3
endRow = 38
chkCol = 14
Set ws = ThisWorkbook.Worksheets("Travel Expense Codes")
For rowCnt = beginRow To endRow
If Cells(rowCnt,chkCol).Value = "X" Then
Cells(rowCnt,chkCol).EntireRow.Hidden = True
Else
Cells(rowCnt,chkCol).EntireRow.Hidden = False
End If
Next rowCnt

将此代码插入“ ThisWorkbook”对象时,运行宏时没有任何响应。当插入“模块”时,我可以使宏运行,但不能通过“保存”选项使其运行。


您可以试试吗?正如@braX所建议的那样,您需要从最后一行开始,一直到第一行。该代码位于“ ThisWorkbook”中,见红色圆圈。

enter image description here

Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)
Dim beginRow As Long,endRow As Long,chkCol As Long,rowCnt As Long
Dim rngResult As Range
Dim ws As Worksheet
beginRow = 3
endRow = 38
chkCol = 14
Set ws = ThisWorkbook.Worksheets("Travel Expense Codes")
For rowCnt = endRow To beginRow Step -1
If Cells(rowCnt,chkCol).Value = "X" Then
ws.Cells(rowCnt,chkCol).EntireRow.Delete
End If
Next rowCnt
End Sub

推荐阅读
author-avatar
喵屎柔_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有