【VBA】合并单元格 + 撤销合并单元格

合并单元格

原始表
在这里插入图片描述
希望效果
在这里插入图片描述
需要达到以上效果我们可以先分析一下我们在表中会如何操作:

  • 1.对年级列进行排序
  • 2.合并相同的年级列
  • 3.合并总分列使其格式和年级列一致
  • 4.将各个年级对应的分数进行累加

那么现在写出对应的VBA代码

  • 1
整张表.sort 年级列,xlAscending , Header:=xlYes 
  • 2
if cells(某行,某列).values = cells(某行 - 1,某列) then
	range(cells(某行,某列),cells(某行-1,某列)).Merge
  • 3
range(cells(某行,某列),cells(某行-1,某列)).Merge
  • 4
Cells(总分列) = Cells(总分列) + Cells(分数列).Value
  • 完整代码
Sub 合并单元格()
Dim a, b As Integer, d As Range
Application.DisplayAl
VBA中,实现保护单元可以通过一系列步骤完成。以下结合参考内容详细介绍其实现方法。 ### 保护单元的基本思路 要保护单元,首先需要设置单元的锁定属性,然后对工作表进行保护。只有锁定的单元在工作表被保护时才会受到保护,未锁定的单元仍可编辑。 ### 具体实现步骤及代码示例 #### 1. 设置单元锁定属性 可以在代码中使用`Locked`属性来设置单元是否锁定。例如,将某个单元或单元区域设置为锁定状态: ```vba Sub LockCells() ' 假设要锁定A1:B10区域的单元 Range("A1:B10").Locked = True End Sub ``` #### 2. 保护工作表 使用`Protect`方法对工作表进行保护。可以设置密码,以防止他人随意取消保护。 ```vba Sub ProtectWorksheet() ' 保护当前工作表,并设置密码为123 ActiveSheet.Protect Password:="123" End Sub ``` #### 3. 结合设置锁定属性和保护工作表 将上述两个步骤结合起来,先设置单元锁定属性,再保护工作表: ```vba Sub ProtectCells() ' 假设要锁定A1:B10区域的单元 Range("A1:B10").Locked = True ' 保护当前工作表,并设置密码为123 ActiveSheet.Protect Password:="123" End Sub ``` #### 4. 解锁单元并重新保护 在某些情况下,可能需要解锁特定单元,进行编辑后再重新保护。参考内容中的代码展示了在右击单元时,若用户选择重置单元,则先撤销工作表保护,清除单元内容,解锁单元,最后重新保护工作表: ```vba Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim rCell As Range Dim ans As VbMsgBoxResult For Each rCell In Target.Cells With rCell If Len(.Value) > 0 Then ans = MsgBox("你想要重置这个单元吗?" & vbCrLf & vbCrLf & _ vbTab & .Value & " (" & .Address(False, False) & ")", vbYesNo, "单元锁定通知") If ans = vbYes Then If ActiveSheet.ProtectContents Then ActiveSheet.Unprotect Password:="123" ' 首先撤销保护 Application.EnableEvents = False .ClearContents .Locked = False Application.EnableEvents = True ActiveSheet.Protect Password:="123" End If End If End If End With Next Cancel = True End Sub ``` ### 总结 通过以上步骤和代码示例,可以在VBA中实现对单元的保护。关键是先设置单元的锁定属性,再对工作表进行保护,必要时可以撤销保护进行编辑,然后重新保护工作表。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值