【问题标题】:Auto populate multiple columns in separate sheet in excel在excel的单独工作表中自动填充多列
【发布时间】:2021-04-13 17:13:57
【问题描述】:

我想自动将多个列从一个 Excel 工作表填充到同一个工作表中的另一个工作表。我使用过 ='Sheet1'!A1 ,但这让我每次在 Sheet1 中输入新内容时都会将其向下拖动。是否可以使用 VBA 自动填充从 Sheet1 到 Sheet2 的单元格?

【问题讨论】:

  • Is it possible to do auto populate cells from Sheet1 to Sheet2 using VBA? 是。在工作表更改事件中使用代码。
  • 请注意,SO 旨在提供帮助,但一般原则是让成员协助您解决编码问题。这意味着您至少应该尝试过一些事情,然后发布您的代码以及您在哪里遇到问题?还有几个类似的问题有答案吗? stackoverflow.com/questions/15931688/…

标签: excel vba


【解决方案1】:

自动工作表值备份

  • 此示例会将源工作表中每个正在更改的单元格的(不是公式、格式...)复制到目标工作表。支持多区域范围。
  • 将以下代码复制到工作表模块中,例如Sheet1 源工作表。
  • 适当调整dstName(目标工作表名称)和ColsAddress(源工作表列地址)的值。

守则

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Const ProcName As String = "Worksheet_Change"
    On Error GoTo clearError

    Const dstName As String = "Sheet2"
    Const ColsAddress As String = "A:H"
    
    Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets(dstName)
    Dim rng As Range: Set rng = Intersect(Target, Columns(ColsAddress))
    
    If rng Is Nothing Then Exit Sub

    'Application.EnableEvents = False
    assignSameRangeValues rng, ws
    'Application.EnableEvents = True

ProcExit:
    Exit Sub

clearError:
    Debug.Print "'" & ProcName & "': Unexpected Error!" & vbLf _
              & "    " & "Run-time error '" & Err.Number & "':" & vbLf _
              & "        " & Err.Description
    Resume ProcExit

End Sub

Sub assignSameRangeValues( _
        rng As Range, _
        dst As Worksheet)

    Const ProcName As String = "assignSameRangeValues"
    On Error GoTo clearError
    
    If rng Is Nothing Then Exit Sub
    If dst Is Nothing Then Exit Sub
    
    Dim aRng As Range
    Application.ScreenUpdating = False
    For Each aRng In rng.Areas
        dst.Range(aRng.Address).Value = aRng.Value
    Next aRng
    Application.ScreenUpdating = True

ProcExit:
    Exit Sub

clearError:
    Debug.Print "'" & ProcName & "': Unexpected Error!" & vbLf _
              & "    " & "Run-time error '" & Err.Number & "':" & vbLf _
              & "        " & Err.Description
    Resume ProcExit

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    相关资源
    最近更新 更多