2012-11-20 57 views
0

我還在學習VB。我試圖在excel 2010中記錄一個VB腳本,在主表上選擇一個名稱,然後轉到另一個表並找到所有具有該名稱的行,複製所有行並返回主表並將複製的單元格插入選定的名稱。細胞被推下來。代碼應該複製下面複製的單元格粘貼的名稱。VB Excel 2010代碼選擇和複製工作表

我的錄音未能完成上述所有操作。你有什麼建議嗎?

Sub Macro5() 
' 
' Macro5 Macro 
' 
' Keyboard Shortcut: Ctrl+l 
' 
    Selection.Copy 
    Sheets("Sheet1").Select 
    ActiveCell.Offset(2, 3).Range("A1").Select 
    Cells.Find(What:="Leeanne Hickmott", After:=ActiveCell, LookIn:= _ 
     xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
     xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    Cells.FindNext(After:=ActiveCell).Activate 
    ActiveCell.Rows("1:3").EntireRow.Select 
    ActiveCell.Offset(0, -7).Range("A1").Activate 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Sheet4").Select 
    ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select 
    Selection.Insert Shift:=xlDown 
    ActiveCell.Offset(3, 6).Range("A1").Select 
End Sub 
+0

執行此操作的方法是使用自動篩選或高級篩選:http://www.contextures.com/xlautofilter03.html#Copy,http://www.rondebruin.nl/copy5_1.htm –

+1

哪些部分您的代碼是否無法實現? –

回答

0

Excel的記錄宏過程無法記錄您需要使這種宏工作的條件或循環。它也不能記錄你將一個值粘貼到查找對話框中,它只是記錄你想要搜索「Leeanne Hickmott」

我的第一個建議是使用範圍變量指向每個重要的單元格工作表。例如...

Dim rngPasteHere as Range, rngCopyFrom as Range 
set rngPasteHere = Selection 
set rngCopyFrom = Sheets("Sheet1").Range("D1") 
' find first row 
set rngCopyFrom = rngCopyFrom.Cells.Find(What:=rngPasteHere.Value _ 
          , After:=rngCopyFrom, LookIn:=xlFormulas _ 
          , LookAt:=xlPart, SearchOrder:=xlByRows _ 
          , SearchDirection:=xlNext, MatchCase:=False _ 
          , SearchFormat:=False) 

您還需要兩個循環,外循環,重複整個過程的下一個名字和一個內循環,找出所有與當前名稱的行。如果不知道你的數據是什麼樣子的話,我無法得到更具體的結果。

  1. 名稱是否按字母順序排序?
  2. 所有具有相同名稱的行彼此相鄰,還是與其他名稱混合?
  3. 每個名稱或數千行只有幾行嗎?
+0

1.名稱按字母順序排序。是的。相似的行正好在彼此之下。只有幾個......三到四個 – linkgtaylor

相關問題