2013-03-22 32 views
3

我正在開發一個Excel 2010表格,其中有一些醫生姓名和地址,但通常有兩個名稱相同但有不同地址的名稱。在這種情況下,我希望將地址信息複製到與第一個名稱相同的行,但使用4個collumns的偏移量。繼承人的代碼,我想出了我怎樣才能複製一行數據,並將其粘貼到一個偏移量

Sub OraganizadorEndereços() 

    ActiveCell.Select 
    If ActiveCell.Value = ActiveCell.Offset(1, 0).Value _ 
    Then ActiveCell.Offset(1, 0).Activate: _ 
    Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 4)).Copy: _ 
    ActiveCell.Offset(-1, 0).Select: _ 
    ActiveCell.Offset(0, 5).Paste _ 
    Else ActiveCell.Offset(1, 0).Select 

End Sub 

,但我得到的

ActiveCell.Offset(0, 5).Paste _ 
Else ActiveCell.Offset(1, 0).Select 

部分代碼的錯誤,說obeject不接受此屬性/方法

記住,我今天開始在VBA編程,所以如果你可以回答一個解釋,我將不勝感激。

回答

6

儘量少依賴激活和選擇單元格 - 您可以將單元格指定給範圍變量以使事情變得更容易。此外,您不需要複製的單元格(除非你也想複製的格式如顏色),用自己的.value的,而不是:

Sub OraganizadorEndereços() 

Dim rngTest as Range 'Define rngTest variable as Range 
Set rngTest = Activecell 'Set rngTest to be the ActiveCell 
If rngTest.Value = rngTest.Offset(1, 0).Value Then 
    'Replace the .Value of the columns to right with the .Value of the row below 
    Range(rngTest.Offset(0,5), rngTest.Offset(0,8).value = Range(rngTest.Offset(1, 1), rngTest.Offset(1, 4)).Value 
Else 
    Set rngTest = rngTest.Offset(1,0) 'Set rngTest to be the next line down 
End If 

End Sub 
+0

感謝隊友,我會使用它。你給了我很大的幫助! – Pedro 2013-03-22 15:40:15

2

試試下面的代碼:

Sub OraganizadorEndereços() 

    Dim rng As Range 
    Dim offsetRng As Range 

    Set rng = ActiveCell 
    rng.Select 

    Set offsetRng = rng.Offset(1, 0) 

    If rng = offsetRng Then 
     offsetRng.Offset(0, 1).Resize(, 4).Copy offsetRng.Offset(0, 5) 
     rng.Offset(1, 0).Activate 
    Else 
     rng.Offset(1, 0).Select 
    End If 

End Sub 
相關問題