m0_60009171 2023-03-30 10:35 采纳率: 0%
浏览 83
已结题

我的功能是从实现一个单元格内容确定后,后面的单元格自动填充,但是我只能一个一个的去粘贴表格后面才会自动填充,我批量复制粘贴的时候无法自动填充,如何解决?

为什么在用VBA时,表格只能一个单元格识别运行,当我批量粘贴数据的时候无法运行,如何可以改进?


Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> [B:B].Column Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target = "" Then Target.Offset(0, 1).Resize(1, 6) = "": Exit Sub
    Set xrng = Sheets("无用列表").Range("B:B").Find(Target)
    If Not xrng Is Nothing Then
        Target.Offset(0, 1).Resize(1, 6) = xrng.Offset(0, 1).Resize(1, 6).Value
    End If
End Sub




我的功能是从实现一个单元格内容确定后,后面的单元格自动填充,但是我只能一个一个的去粘贴表格后面才会自动填充,我批量复制粘贴的时候无法自动填充

  • 写回答

3条回答 默认 最新

  • 瞬间的未来式 2023-03-30 10:46
    关注

    chatgpt:
    您的 VBA 代码使用了 Excel 的 Worksheet_Change 事件,当单元格的内容改变时会被触发。但是这个事件只会对单个单元格生效,如果您批量复制粘贴数据,只会触发一次事件,导致后面的单元格没有被自动填充。

    为了解决这个问题,您可以将 VBA 代码修改成一个宏,然后通过菜单或快捷键的方式运行它,而不是依赖于单元格的改变事件。具体步骤如下:

    1.在 Excel 中按下 Alt + F11,打开 VBA 编辑器。
    2.在左侧的“项目资源管理器”中找到您的 Excel 文件,并展开“Microsoft Excel 对象”节点。
    3.双击“本工作表”,打开它的代码编辑窗口。
    4.在编辑窗口中,输入以下代码:

    Sub FillCells()
        Dim cell As Range
        For Each cell In Selection.Cells
            If cell.Column = [B:B].Column And cell.Value <> "" Then
                Set xrng = Sheets("无用列表").Range("B:B").Find(cell)
                If Not xrng Is Nothing Then
                    cell.Offset(0, 1).Resize(1, 6) = xrng.Offset(0, 1).Resize(1, 6).Value
                End If
            End If
        Next cell
    End Sub
    
    
    

    5.关闭 VBA 编辑器,并回到您的 Excel 工作表。
    6.选择您要填充数据的单元格范围,然后按下 Alt + F8,打开宏窗口。
    7.在宏窗口中,选择“FillCells”宏,并点击“运行”按钮。
    这样,您就可以通过宏来自动填充单元格了。选择您要填充的单元格范围,运行宏后,它就会自动填充这些单元格

    评论

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 赞助了问题酬金15元 3月30日
  • 创建了问题 3月30日

悬赏问题

  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!