我试图创建一个我可以填写的工作表,当我单击该按钮时,它会将信息从框中复制并粘贴(和转置)到Rawdata选项卡,然后从仪表板中删除信息并保存文件。
我已经记录了一个简单的宏来为我执行此操作,但问题是我不知道如何获取它以将数据添加到下一个空闲行,它只是替换了已有的信息,这是代码i正在尝试使其实现
Sub Macro5()
'
' Macro5 Macro
'
'
Range("C3:C8").Select
Selection.Copy
Sheets("RawData").Select
Cells(Range("C1000000").End(xlUp).Row + 1, 3).PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Dasboard").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
Range("C3:C8").Select
Selection.ClearContents
End Sub
这里的任何帮助将不胜感激。
我需要它在A:F列中转置粘贴
谢谢
答案 0 :(得分:2)
我建议阅读How to avoid using Select in Excel VBA。使用.Select
是非常糟糕的做法,迟早会导致许多错误:
更好的技术是定义工作表和范围,以便您可以直接通过变量访问它们:
Option Explicit
Public Sub CopyData()
'define source range
Dim SourceRange As Range
Set SourceRange = ThisWorkbook.Worksheets("Dashboard").Range("C3:C8")
'find next free cell in destination sheet
Dim NextFreeCell As Range
Set NextFreeCell = ThisWorkbook.Worksheets("RawData").Cells(Rows.Count, "A").End(xlUp).Offset(RowOffset:=1)
'copy & paste
SourceRange.Copy
NextFreeCell.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
ThisWorkbook.Save
SourceRange.ClearContents
End Sub
答案 1 :(得分:1)
尝试不使用Select进行直接值转移。
Sub Macro5()
dim ws as worksheet
set ws = workSheets("RawData")
with worksheets("Dasboard").Range("C3:C8")
ws.cells(rows.count, "A").end(xlup).offset(1, 0).resize(.columns.count, .rows.count) = _
application.transpose(.value)
.clearcontents
.parent.parent.save
end with
End Sub