下午好!
我提前道歉,因为我不熟悉宏和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
任何人都可以提供一些指导,提示和建议吗?
答案 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