2012-07-06 49 views
0

這是我的代碼它有點關閉,雖然它工作,只是不是我想要的方式。Lastrow向上而不是向下在Excel VBA

Option Explicit 

Sub ONJL() 
    Dim lastrow As Long 
    Dim wsPAR As Worksheet 'PAERTO 
    Dim wsRD As Worksheet 'Raw Data 
    Dim wsTEM As Worksheet 'Archive 

    Set wsPAR = Sheets("PAERTO") 
    Set wsRD = Sheets("Raw Data") 
    Set wsTEM = Sheets("Template") 

    With wsPAR 
      Application.ScreenUpdating = False 
      wsPAR.Range("B23:I300").Clear 
      lastrow = wsRD.Range("B3").Row + 23 
      wsTEM.Range("A23:H23").Copy wsPAR.Range("B23:I" & lastrow) 
      .Range("F4").Formula = "=SUMPRODUCT(--(I23:I" & lastrow & ">='Raw Data'!K2),--(I23:I" & lastrow & "<='Raw Data'!K3))" 
      .Range("F5").Formula = "=SUMPRODUCT(--(I23:I" & lastrow & ">='Raw Data'!K3),--(I23:I" & lastrow & "<='Raw Data'!K4))" 
      .Range("F6").Formula = "=SUMPRODUCT(--(I23:I" & lastrow & ">='Raw Data'!K4),--(I23:I" & lastrow & "<='Raw Data'!K5))" 

      lastrow = wsRD.Range("E3").Row + 23 
      wsTEM.Range("I23:U23").Copy wsPAR.Range("M23:Y" & lastrow) 


      Application.ScreenUpdating = True 

    End With 

End Sub 

現在B3是7,和E3是25

我想,如果我輸入了,因爲我做了+23,因爲數據在23開始,並應結束在LASTROW等於所以應該是技術上的I30和Y48,但事實並非如此。

有人可以給我一個想法,爲什麼?

+0

感謝您的幫助:) – 2012-07-06 19:50:18

回答

3

更換.Row在下面.value的

lastrow = wsRD.Range("B3").Row + 23 
lastrow = wsRD.Range("E3").Row + 23 

什麼你基本上是問VBA做的就是範圍,3的行數兩行,在這兩種情況下,並將其添加到23.如果要獲取每個範圍內的值並將其添加到23,則需要使用.Value屬性。