2014-02-26 65 views
0

這是我在這個網站上的第一個查詢,我只是偶爾的VBA用戶。下面的代碼可能不是很優雅,但它的工作。這個VBA代碼爲什麼會導致重複條目

我有一個Excel工作簿,這是我自己的設計,實質上是一個會計工具。工作簿有一個「日記」表,我發佈每筆交易。在運行VBA代碼時,每個事務都會發布到指定的帳戶(或工作表)。一個子例行公佈我所稱的一般交易,而另一個公佈我所謂的跨賬戶轉賬,即將在一個賬戶中開始的交易轉移到另一個賬戶 - 因此存在借記到第一個賬戶和貸記到第二個賬戶。 Inter Account Transfer例程在General Transaction例程之後運行,因此在所有常規事務之後立即顯示帖子。我還有一個例程,在其他例程運行之前清除所有Account工作表的內容。

我遇到的問題是'借記'Inter Account Transfers。當我第一次運行完整的代碼時,一切正常,並且Inter賬戶轉賬扣賬出現在它應該在的地方 - 低於最後一個一般交易。如果我再次運行它,儘管運行清除了賬戶表中的所有內容,但是Inter賬戶轉移出現了兩次,如果我再次運行它,它會出現三次,等等。只有當這些交易帳戶的借方。在信貸方面它也不會發生。 A ='日期(Cr)',B ='描述/子類別(Cr)',C ='數量(Cr)',以及其他數據。 D ='日期(Dr)',E = '描述/子類別(Dr)',F ='數量(Dr)'。

我使用的代碼如下所示 - 而不是全部顯示,我剛剛顯示了每個Credit和Debit端的一個項目的例程。

'DESCRIPTION/SUB-CATEGORY (Cr) 
With Sheets(strWSJournal) 
    I = 1 
    LASTROW = .Range("A" & Rows.Count).End(xlUp).Row 
    Set MyRG = .Range("B2:B" & LASTROW) 
     For Each F In MyRG 
      strWSGoToSheet = F.Offset(0, 1) 

      With Sheets(strWSGoToSheet) 
       LASTROW2 = .Range("B" & Rows.Count).End(xlUp).Row 
      End With 


       If (F.Value = strInterAcTran) Then 
        Sheets(strWSGoToSheet).Cells(LASTROW2 + I, "B") = F.Offset(0, 2) 
       End If 
     Next F 
End With 



'DESCRIPTION/SUB-CATEGORY (Dr) 
With Sheets(strWSJournal) 
    I = 1 
    LASTROW = .Range("K" & Rows.Count).End(xlUp).Row 
    Set MyRG = .Range("L2:L" & LASTROW) 
     For Each F In MyRG 
      strWSGoToSheet = F.Offset(0, 1) 

      With Sheets(strWSGoToSheet) 
       LASTROW2 = .Range("E" & Rows.Count).End(xlUp).Row 
      End With 


       If (F.Value = strInterAcTran) Then 
        Sheets(strWSGoToSheet).Cells(LASTROW2 + I, "E") = F.Offset(0, 2) 
        'I = I + 1 
       End If 
     Next F 
End With 

可以看出,代碼與單元格引用完全相同,所以我不明白髮生了什麼問題。如果需要更多信息來幫助我解決此問題,請讓我知道。

回答

0

你忘了指定該板在至極,你在每個.Range(... & rows.count)

改變它.range(... & .rows.count)計數行

基本上,在每個rows.count之前加一個點。

+0

謝謝帕特里克,但不知道你的意思。我沒有通過聲明「使用表單(strWSGoToSheet)」指定表單嗎? – user3355073

+0

只有在寫「.rows.count」而不是「rows.count」時,「with」才適用 –

+0

再次感謝Patrick。對不起,在您的第一次回覆後如此模糊 - 沒有意識到您對''的評論。之前的「行」。不過,我已經嘗試過,但我仍然得到相同的結果。 – user3355073

相關問題