2012-10-15 83 views
-1

我是一般的編程新手。使用VBA我試圖循環遍歷範圍(「b6:b18」)。通過每次通過,我將該值減去b3,並將一個日期放入一個單元格中,然後抵消一列,直到該值小於b3。基本上我試圖設置汽車支付。例如:我有5個賬戶。 250.36,17.23,96.12,600.00,5.46。我的付款是每月36.12。所以,1/1/13 = 36.12直到第一個賬戶是< 36.12。但每個月都必須等於付款。一個月內可能會從每個帳戶中扣除資金。如何遍歷指定列中的行?

我想不通的代碼是:

pmt = b3 
for each cell in range("b6:b18") 
    if cell.value > pmt then 
     activecell.value= cell.value -pmt 
     activecell =activecell.offset(0,1) 

但是,代碼不執行任何操作時,旁邊ENDIF關閉,我不知道如何來顯示順序的日期。

回答

1

我可以告訴你如何修復上面的代碼,以便它'有效',但是你的整體描述很混亂。

話雖這麼說,希望它讓你在正確的軌道

dim pmt as double 
dim i as long 

pmt = Range("B3").value 

for i = 6 to 16 
    if Range("B" & i).value > pmt then 
     range("B" & i).value = range("B" & i).value - pmt 
    end if 
next i 
1

及其對我也不清楚到底是什麼,你正在嘗試做的,也沒怎麼你的數據奠定了,所以我不能給你需要一些代碼來解決你的問題,但這裏有一些提示可能會讓你走上正確的道路。

  1. 使用Option Explicit作爲您的Module中的第一行。這將迫使你解除你所有的變量。
  2. 請勿使用ActiveCellSelect,除非絕對必要。有關如何避免這些問題的一些提示,請參閱this answer
  3. 分配對象時,如設置Range變量,請使用Set

    Dim rng as Range 
    Set rng = Range("B3") 
    

    不這樣做意味着使用默認屬性,即

    Dim rng as Range 
    rng = Range("B3") 
    

    rng.Value = Range("B3").Value 
    

    是等效

  4. 使用Range參考而不指定Worksheet意味着活性片。

    Set rng = Range("B3") 
    

    Set rng = ActiveSheet.Range("B3") 
    

    是等價

  5. 診斷代碼:使用Step IntoF8)來運行你的代碼在一次一行,並
  6. 使用監視窗口看到變量的值(和類型)

如果您提供有關您的數據佈局和預期結果的更多信息,可以提供更多幫助