2014-03-28 38 views
0

我需要一些幫助,因爲我正在體驗一個對VBA來說很新的問題。我想從L5-L18複製這些數據,排除一些單元格並將其粘貼到工作表(In)的B列,並創建一個按鈕,每當我將它從B列,工作表(Data)複製到工作表(in)並將columnto移到右側。像第一次列b,下一次c列...我每次按下按鈕..大加讚賞複製另一張表中的特定列,當您運行宏時,它將列移動到右側

Sub Macro2() 
Sheets("Data").Select 

Range("L5,L6,L7,L8,L9,L10,L13,L14,L15,L16,L17,L18").Select 

Range("L18").Activate 

Selection.Copy 

Sheets("In").Select 

Range("B5").Select 

ActiveSheet.Paste 

Range("B5").Offset(0, 1).Select 

End Sub 

回答

0

方法A

要插入列B和轉移一切向右試試這個:

Sub offsetCol() 
    Dim wksData As Worksheet 
    Set wksData = Sheets("Data") 

    Dim wksIn As Worksheet 
    Set wksIn = Sheets("In") 

    Application.CutCopyMode = False 
    Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 

    wksIn.Range("B5:B10").Value = wksData.Range("L5:L10").Value 
    wksIn.Range("B11:B16").Value = wksData.Range("L13:L18").Value 
End Sub 

方法B

的信息表最後一欄和粘性查找下一個可用:

Sub offsetCol() 
    Dim wksData As Worksheet 
    Set wksData = Sheets("Data") 

    Dim wksIn As Worksheet 
    Set wksIn = Sheets("In") 

    Set rLastCell = wksIn.Cells.Find(What:="*", After:=wksIn.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ 
     xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) 

    wksIn.Range(Cells(5, rLastCell.Column + 1), Cells(10, rLastCell.Column + 1)).Value = wksData.Range("L5:L10").Value 
    wksIn.Range(Cells(11, rLastCell.Column + 1), Cells(16, rLastCell.Column + 1)).Value = wksData.Range("L13:L18").Value 
End Sub 

方法C

的下一個可用列資料找尋第5行和粘性最後一欄:

Sub offsetCol() 
    Dim wksData As Worksheet 
    Set wksData = Sheets("Data") 

    Dim wksIn As Worksheet 
    Set wksIn = Sheets("In") 

    Dim rLastCol As Integer 
    rLastCol = wksIn.Cells(5, wksIn.Columns.Count).End(xlToLeft).Column + 1 

    wksIn.Range(Cells(5, rLastCol), Cells(10, rLastCol)).Value = wksData.Range("L5:L10").Value 
    wksIn.Range(Cells(11, rLastCol), Cells(16, rLastCol)).Value = wksData.Range("L13:L18").Value 
End Sub 

Starting Data:

enter image description here


結果(方法C):問題的

enter image description here

+0

非常感謝你爲你解答...完美的作品,但我想原始列將保持穩定和新列將右移..基本上它將作爲每個月的數據工作..所以原來的第一列是Jan ....非常感謝......你知道我應該修改什麼嗎? – EyeShield21

+0

請參閱編輯,我在底部添加了一個方法來使用最後一個可用列。這是你想要的嗎? –

+0

我看起來確定,但由於某種原因沒有運行..當我嘗試運行它時,它什麼也不做。在你的運行中? – EyeShield21

0

部分 - 複製從位置B位置,不是很清楚,但我猜測這是你需要的。將這個按鈕的宏觀調控下:

Sub Macro2() 
Dim rng As Range 
Sheets("IN").Range("B:B").Insert Shift:=xlToRight 
Sheets("Data").Select 
Set rng = Range("L5,L6,L7,L8,L9,L10,L13,L14,L15,L16,L17,L18") 
rng.Copy Sheets("IN").Range("B:B") 

End Sub 
+0

哎呀沒有看到@portland runner已經有一個答案,如果它對你工作正常,請與他聯繫 – Alex

+0

感謝你的回答,但我希望我第一次按下按鈕,在b列中複製數據,下一次要在c中打印的新數據..所以B保持不變,就像出口不同月份的數據一樣,所以我想要Jan-> Feb-> Mar ..不要Jan要移動..你怎麼看待我的朋友。 – EyeShield21

+0

Think Portland have the回答你已經,我不會更新我的。順便說一句,眼罩21是一個很好的胺=) – Alex

相關問題