ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 221|回复: 12

[求助] 请教高人关于Excel表VBA代码合并组合为一个用实现运行一次一步到位操作的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-26 10:17 | 显示全部楼层 |阅读模式
本帖最后由 idiocy 于 2024-10-26 15:22 编辑

请教高人关于Excel表VBA代码合并组合为一个用实现运行一次一步到位操作的问题


这是“longwin”高人帮助写的跨表清空区域单元格内容,不清除单元格格式的VBA代码:
Sub lgxs效果2()
sheets("排班表").Range("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14").ClearContents
sheets("排班表").Range("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14").Interior.ColorIndex = xlNone
sheets("考勤表").Range("D9:AH68").ClearContents
sheets("考勤表").Range("D9:AH68").Interior.ColorIndex = xlNone
End Sub


在网上查的只清除单元格充填的背景颜色,其他的单元格内容和单元格格式都不变动的VBA代码:
Sub ClearFillColorsInRange()
    Dim rng As Range
    Set rng = Range("A1:B3") ' 修改为你需要清除的范围
    rng.Interior.ColorIndex = xlNone
    ' rng.Borders.ColorIndex = xlNone 如果需要清除边框颜色
End Sub


在网上查的对所有工作表的所有公式进行保护的VBA代码:
Sub 保护公式()   '对活动工作簿中所有未保护的工作表生效
    Dim Item As Integer                      '声明变量
    On Error Resume Next                     '有错误时继续执行下一步
    For i = 1 To Worksheets.Count            '遍历所有工作表(不能使用Sheets)
      If Not Worksheets(i).ProtectContents Then '如果工作表未保护
         Worksheets(i).UsedRange.Locked = False        '解除已用数据区域的锁定属性
         Worksheets(i).UsedRange.FormulaHidden = False '解除已用数据区域的隐藏公式属性
           With Worksheets(i).UsedRange.SpecialCells(xlCellTypeFormulas, 23)  '引用对公式区域
             .Locked = True                            '锁定单元格
             .FormulaHidden = True                     '隐藏公式
             '保护工作表,除密为空,而且允许一切操作,避免影响其它操作
             Worksheets(i).Protect Password:="", DrawingObjects:=False, _
             Contents:=True, Scenarios:=False, AllowFormattingCells:=True, _
             AllowFormattingColumns:=True, AllowFormattingRows:=True, _
             AllowInsertingColumns:=True, AllowInsertingRows:=True, _
             AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
             AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
             AllowUsingPivotTables:=True
          End With
       End If
    Next i
End Sub


小弟想要实现的效果是:
点击有宏的按钮后,
第一步:先只解除撤消掉“排班表”和“考勤表”这2个工作表的工作表保护,
第二步:再只清空“排班表”的("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14")区域单元格内的内容,单元格格式保持不变动,
第三步:再只清除掉“考勤表”的("D9:AH68")区域单元格充填的背景颜色,单元格的内容和单元格的格式都保持不变动,
第四步:最后再给“排班表”和“考勤表”都做“保护工作表”以免被改动里面的内容.主要是因为有公式在单元格里面,只要保护所有的工作表的所有的公式就可以了.


这些步骤只需要点一次即可全部完成.


小弟是个小白,
不会写VBA代码,
也不会组合这些VBA代码放在一个VBA代码里面,
只需要点一次运行一次就可以一步到位实现这些操作了,
想请高人帮帮忙写一写组合组合一下可以吗?
感激不尽啊.


2024年10月26日 星期六








请教高人关于Excel表VBA代码合并组合为一个用实现运行一次一步到位操作的问题 01.jpg
请教高人关于Excel表VBA代码合并组合为一个用实现运行一次一步到位操作的问题 02.jpg

请教高人关于Excel表VBA代码合并组合为一个用实现运行一次一步到位操作的问题 宏版 20.rar

1.64 MB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2024-10-26 14:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
没有附件,有什么用??

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-26 14:52 | 显示全部楼层
excel玉米 发表于 2024-10-26 14:42
没有附件,有什么用??





小弟以为不需要用附件就没上传,
只需要知道某区域就可以了.


因为小弟在网上找的VBA代码也没有上传附件的.


请问高人需要上传附件是吗?


小弟是在做排班表考勤表用到的VBA代码,
因为每月都要做一次排班表考勤表,
需要用到小弟需求的这些操作,
想用VBA代码点一下就做完了.


2024年10月26日 星期六


TA的精华主题

TA的得分主题

发表于 2024-10-26 15:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub ttt()
With Sheets("排班表")
     .Unprotect
     .Range("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14").Value = Empty
     .Protect
End With
With Sheets("考勤表")
     .Unprotect
     .Range("D9:AH68").Interior.ColorIndex = xlNone
     .Protect
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-26 15:53 | 显示全部楼层
准提部林 发表于 2024-10-26 15:09
Sub ttt()
With Sheets("排班表")
     .Unprotect



非常感谢高人的VBA代码指教啊,
真的是太神奇了,
点一下宏按钮,
排班表就清空单元格内容了,还保留了充填颜色,
考勤表就只清除了单元格充填颜色,保留了单元格内容和单元格格式,
而且还又启用了保护工作表公式,
好厉害啊.


请问一下高人,
想要删除“排班表”的("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14")区域内容,包括充填颜色,但是不要变动单元格格式,譬如文字居中,字体,字体大小等,
这一句
.Range("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14").Value = Empty
应该怎么改呢?


小弟不会改,
就照着高人写的在后面新增了两句,
     .Range("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14").Value = Empty
     .Range("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14").ClearContents
     .Range("I7:I347,N7:N38,O38,Q38,N44:N47,V7:AA18,V24:AA27,X28,AD14").Interior.ColorIndex = xlNone
请高人帮忙指点一下可以吗?
请问这样子新增句子可以吗?
还是说可以再优化一下只需要写一句就可以了呢?


2024年10月26日 星期六




TA的精华主题

TA的得分主题

发表于 2024-10-26 16:05 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-26 18:22 | 显示全部楼层



非常感谢高人的VBA代码啊.


弱弱地请问一下,
     .Range("D9:AH38").ClearContents
这一句应该怎么修改才可以又能删除排班表("D9:AH38")单元格里面的内容,包括清除单元格充填的颜色,
但是又不变动单元格格式,譬如文字居中,字体,字体大小等呢?




TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-26 18:35 | 显示全部楼层



小弟查了一下,
想要又要删除排班表("D9:AH38")区域内容,包括充填颜色,
但是又不要变动单元格格式,譬如文字居中,字体,字体大小等,
写成一句好像无法实现,
是不是应该要写2句分开实现呢?
     .Range("D9:AH38").ClearContents    '只清除单元格内容
     .Range("D9:AH38").Interior.ColorIndex = xlColorIndexNone    '只清除单元格充填颜色


请问高人小弟这样子写是否正确呢?
请高人指正.




TA的精华主题

TA的得分主题

发表于 2024-10-26 18:52 来自手机 | 显示全部楼层
本帖最后由 z865593849 于 2024-10-26 18:53 编辑
idiocy 发表于 2024-10-26 18:22
非常感谢高人的VBA代码啊.




下面再写一句
.Range("D9:AH38").interior.color=vbwhite

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-26 20:02 | 显示全部楼层
z865593849 发表于 2024-10-26 18:52
下面再写一句
.Range("D9:AH38").interior.color=vbwhite





非常感谢高人的VBA代码指教啊,



Sub a()
With Sheets("排班表")
     .Unprotect
     .Range("D9:AH38").ClearContents
     .Range("D9:AH38").Interior.Color = vbWhite
     .Protect
End With
With Sheets("考勤表")
     .Unprotect
     .Range("D9:AH68").Interior.Color = xlColorIndexNone
     .Protect
End With
End Sub



这样子一改就好了,
比小弟之前找的那些那么多的VBA代码好的太多了.
现在不用点那么多的宏按钮了.
非常的方便.

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-13 14:29 , Processed in 0.048006 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表