2016-08-02 66 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 

乾杯