【问题标题】:Excel datasheet entry inserting as single row, not multipleExcel 数据表条目作为单行插入,而不是多行
【发布时间】:2025-12-25 18:30:10
【问题描述】:

脚本正在做我需要做的事情,但它将输入范围 (A7:B30) 插入到单行中,而不是现有格式。

Sub UpdateLogWorksheet()
    'http://www.contextures.com/xlForm02.html

    Dim dataWks As Worksheet
    Dim inputWks As Worksheet

    Dim nextRow As Long
    Dim oCol As Long

    Dim myRng As Range
    Dim myCopy As String
    Dim myCell As Range

    'cells to copy from Input sheet - some contain formulas
    myCopy = "A7:B30"

    Set inputWks = Worksheets("Input")
    Set dataWks = Worksheets("Data")

    With dataWks
        nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
    End With

    With inputWks
        Set myRng = .Range(myCopy)

    End With

    With dataWks
    With .Cells(nextRow, "A")
        .Value = ""
        .NumberFormat = "dd/mm/yyyy"
    End With
    .Cells(nextRow, "D").Value = "HELLO"
    oCol = 3
    For Each myCell In myRng.Cells
        dataWks.Cells(nextRow, oCol).Value = myCell.Value
        oCol = oCol + 1
    Next myCell
    End With

    'clear input cells that contain constants
    With inputWks
    On Error Resume Next
     With .Range(myCopy).Cells.SpecialCells(xlCellTypeConstants)
          .ClearContents
          Application.GoTo .Cells(1) ', Scroll:=True
     End With
     On Error GoTo 0
    End With
End Sub

有什么想法吗?

【问题讨论】:

    标签: vba excel data-entry datasheet


    【解决方案1】:

    尝试改变:

    For Each myCell In myRng.Cells
        dataWks.Cells(nextRow, oCol).Value = myCell.Value
        oCol = oCol + 1
    Next myCell
    

    For Each myCell In myRng.Cells
        dataWks.Range(myCell.Address).Value = myCell.Value
    Next myCell
    

    这将保留布局,即数据将被粘贴到它复制的同一范围内。

    【讨论】: