2016-08-02 65 views
0

https://drive.google.com/open?id=0B-Cnpvgoos3ceGRRZ00yYzVyUVE让一个按钮宏,粘贴一列数据我的最后一列

这里后是一本书,有问题的文档。

本质上,我需要帮助编写代码将“Sheet2”中的数据值粘贴到“Sheet1”上的数据末尾。值得注意的是,每当我点击按钮时,它都会将数据粘贴到先前粘贴数据的右侧。每当我做报告时,我只需点击按钮,它就会将数据添加到以前的数据中。

这是我到目前为止的代码。

Dim wb As Workbook 
    Set wb = Workbooks("VBA TEST BOOK.xlsm") 

Dim lColumn As Long 
    lColumn = wb.Worksheets("Sheet1").UsedRange.Columns.Count + wb.Worksheets("Sheet1").UsedRange.Columns.Count - 1 

lColumn应该表示其中包含数据的最后一列,我认为这将是Sparklines的左列。

我的想法是,通过在我的Sparklines左侧插入一列并粘贴数据来完成我想要做的事情是最容易的。我不确定如何使用位置发生变化的列。

任何人都可以帮忙吗?

+0

如果你想在最后一个月后,将其粘贴,你的意思是最后一列的权利,对不对? –

+0

在迷你图和前几个月数据之间 – Keizzerweiss

+0

它必须是在迷你图和上个月数据之间插入的列。 – Keizzerweiss

回答

0

我想出了一个解决方案。我在我的数据末尾放置了一个占位符。在我的例子中,我的占位符是“X”。每行的末尾是一个占位符。现在我可以使用定义为带“X”的单元格的区域。然后,我可以使用该范围将列插入到其左侧。这里是我的代码,以防有人看到这个参考。我认为我的代码比实际需要的要多。

Sub Button_Click() 

Dim wb As Workbook 
Dim newdata As Range 
Dim StartCell As Range 
Dim LastRow As Long 
Dim LastColumn As Long 
Dim n As Range 

    Set wb = Workbooks("VBA TEST BOOK.xlsm") 

    Set newdata = wb.Worksheets("Sheet2").Range("B2:B8") 

    Set StartCell = Cells.Find("X") 

wb.Worksheets("Sheet1").UsedRange 

LastRow = StartCell.SpecialCells(xlCellTypeLastCell).Row 

LastColumn = StartCell.SpecialCells(xlCellTypeLastCell).Column 

    Set n = wb.Worksheets("Sheet1").Range(StartCell, wb.Worksheets("Sheet1").Cells(LastRow, LastColumn)) 

n.Activate 

ActiveCell.EntireColumn.Insert Shift:=xlToLeft, CopyOrigin:=xlFormatFromRightOrAbove 

Dim PasteDestination As Range 

    Set PasteDestination = Cells.Find("X").Offset(0, -1) 

newdata.Copy 

PasteDestination.PasteSpecial xlPasteValues 

End Sub 

干杯