【Office】【VBA宏】使用宏实现将指定列中含有批注的单元格中的批注内容放到该行的后面一单元格中

概要

Office表格(Excel表格)中实现将指定列中含有批注的单元格中的批注内容放到该行的后面一单元格中。

实现流程

  • 获取当前活动的sheet表。
  • 要求选择含有批注的单元格范围。
  • 要求选择一个单元格,这个单元格所在的列将被用来放置批注内容。
  • 宏获取用户选择的单元格的列号,并遍历含有批注的单元格范围。
  • 对于每个含有批注的单元格,宏将批注内容复制到同一行的目标列中的单元格。
  • 如果需要,可以删除原批注。
  • 显示一个消息框来通知用户操作已完成。

具体代码

Sub MoveCommentsToUserSelectedColumn()
    Dim ws As Worksheet
    Dim rngComments As Range
    Dim cell As Range
    Dim targetCell As Range
    Dim userSelectedCell As Range
    Dim targetColumn As Long
      
    Set ws = ActiveSheet
    On Error Resume Next 
    Set rngComments = Application.InputBox("请选择含有批注的单元格范围:", Type:=8)
    On Error GoTo 0 
    If rngComments Is Nothing Then
        MsgBox "未选择范围,操作取消。"
        Exit Sub
    End If
    Set userSelectedCell = Application.InputBox("请选择要将批注内容放置的列的任意一个单元格:", Type:=8)
      
    If userSelectedCell Is Nothing Then
        MsgBox "未选择单元格,操作取消。"
        Exit Sub
    End If
    targetColumn = userSelectedCell.Column
    For Each cell In rngComments
        If Not cell.Comment Is Nothing Then
            Set targetCell = ws.Cells(cell.Row, targetColumn)
            targetCell.Value = cell.Comment.Text
            ' 如果需要,删除原批注
            cell.Comment.Delete
        End If
    Next cell
      
    MsgBox "批注内容已复制到指定列的相同行号中。"
End Sub

使用方法

  • 微软Office(WPS Office中使用与MS一致)
    开发工具菜单显示出来
    插入新模块
    在这里插入图片描述
    执行
  • 永中 Office
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

小结

到此,所有分享结束了,希望代码可以帮助你们。还有更多功能和方法值得我和你们去研究,感谢浏览。有其他好的问题和经验可以在评论区留言或私信我。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下VBA代码来合并Sheet2A列中所有相同内容单元格: ```vba Sub MergeCells() Dim lastRow As Long Dim rng As Range Dim cell As Range ' 设置要操作的工作表 With ThisWorkbook.Worksheets("Sheet2") '将"Sheet2"替换为您要操作的工作表名称 ' 获取A列的最后一行 lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' 遍历A列中单元格 For Each cell In .Range("A1:A" & lastRow) ' 检查当前单元格与下一个单元格是否相同 If cell.Value = cell.Offset(1, 0).Value Then ' 如果相同,则合并当前单元格和下一个单元格 If rng Is Nothing Then Set rng = cell Else Set rng = Union(rng, cell) End If Else ' 如果不相同,则合并已找到的相同内容单元格,并清空rng变量 If Not rng Is Nothing Then rng.Merge Set rng = Nothing End If End If Next cell End With ' 合并最后一组相同内容单元格(如果有) If Not rng Is Nothing Then rng.Merge End If ' 清除格式设置,以便显示合并后的内容 With ThisWorkbook.Worksheets("Sheet2") .Range("A1:A" & lastRow).HorizontalAlignment = xlCenter .Range("A1:A" & lastRow).VerticalAlignment = xlCenter .Range("A1:A" & lastRow).WrapText = True .Range("A1:A" & lastRow).EntireColumn.AutoFit End With End Sub ``` 请将代码的"Sheet2"替换为您要操作的工作表名称。运行此后,代码将遍历Sheet2A列中单元格,找到相同内容单元格并进行合并。最后,代码会清除格式设置,使合并后的内容、自动换行并调整列宽以适应内容。 请注意,此代码仅合并相邻的相同内容单元格。如果要合并A列中非相邻的相同内容单元格,您可能需要进行额外的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值