繁体   English   中英

在 excel 的单独工作表中自动填充多列

[英]Auto populate multiple columns in separate sheet in excel

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

自动工作表值备份

  • 此示例将在源工作表中更改的每个单元格的(不是公式、格式...)复制到目标工作表。 支持多区域范围。
  • 将以下代码复制到工作表模块中,例如源工作表的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM