将数据从一个工作表复制到另一个工作表的VBA代码

时间:2018-04-13 20:32:59

标签: excel vba excel-vba

下午好!

我提前道歉,因为我不熟悉宏和VBA,因为我是新手。我试图在一个工作表上添加一个命令按钮来从多个单元格范围中获取数据,并将数据复制到一个水平行中的另一个工作表。必须将数据复制到下一个空行并执行相同的表格格式,因为每次添加新行。每次我单击命令按钮并重复同一行上的某些数据时,我当前使用的代码会复制新行中的一些数据。

Sub Submit()

Range("E6:E27").Copy

Sheets("JANUARY").Range("F" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

Range("D3").Copy

Sheets("JANUARY").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)PasteSpecial xlPasteValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
End Sub

任何人都可以提供一些指导,提示和建议吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望在D3 + E6:E27.Transposed的第一个空行中Sheets("JANUARY")作为新行。如果是这种情况,Sheets("JANUARY").Column B中的第一个空单元格可能与.Column F不对齐

下面的代码仅基于Sheets("JANUARY")找到.Column F中的第一个空行,并将其用于两个粘贴操作

Option Explicit

Public Sub SubmitData()

    Const FORMAT_ROW = 2

    Dim wsFrom As Worksheet, wsTo As Worksheet, lrTo As Long
    Dim eRng As Range, fRng As Range, fCols As Long

    Set wsFrom = ThisWorkbook.ActiveSheet
    Set wsTo = ThisWorkbook.Worksheets("JANUARY")

    lrTo = wsTo.Range("F" & wsTo.Rows.Count).End(xlUp).Row + 1

    Set eRng = wsFrom.Range("E6:E7")
    fCols = eRng.Rows.Count

    Application.ScreenUpdating = False
    eRng.Copy
    wsTo.Cells(lrTo, 6).PasteSpecial Paste:=xlPasteValues, Transpose:=True

    'Copy format for destination row (from the 2nd row on destination sheet)
    Set fRng = wsTo.Range(wsTo.Cells(FORMAT_ROW, 6), wsTo.Cells(FORMAT_ROW, 6))
    Set eRng = wsTo.Range(wsTo.Cells(lrTo, 6), wsTo.Cells(lrTo, 6 + fCols - 1))
    fRng.Copy
    eRng.PasteSpecial xlPasteFormats

    wsFrom.Range("D3").Copy
    wsTo.Cells(lrTo, 2).PasteSpecial Paste:=xlPasteValues

    'Copy format for destination cell (from the 2nd row on destination sheet)
    wsTo.Cells(FORMAT_ROW, 2).Copy
    wsTo.Cells(lrTo, 2).PasteSpecial xlPasteFormats
    Application.ScreenUpdating = True
End Sub
相关问题