2017-07-14 66 views
0

我正在創建一個工具來根據幾個輸入修改數據表的行和列:Min,Step-up和Max。最小值(I9)鏈接到K6。我希望K6以下的每個單元根據升壓值(I10)增加,直到K中的值達到最大值(I11)。我無法根據最大值終止循環。儘管循環...錯誤

任何幫助將不勝感激。

Sub Button3_Click() 

Dim x As Integer 

Dim z As Integer 

Do 
    Cells((8 + z), 11).Value = Cells(((7 + z)), 11).Value + Cells(10, 9).Value 
     z = z + 1 
     x = Cells((8 + z), 11).Value 
     Loop While x < Cells(11, 9).Value 


End Sub 

Link to Spreadsheet Image

+2

'最大值(I10)'...然後在代碼'x

+0

感謝您的接收!我編輯了原文:我的意思是I9(最小),I10(升壓),I11(最大) –

回答

1

你改變z值後成立的x值。這意味着你總是從空單元格中檢查一個值,最後一個單元格被修改。這應該是罰款:

Sub Button3_Click() 

Dim x As Integer 

Dim z As Integer 

Do 
    Cells((8 + z), 11).Value = Cells(((7 + z)), 11).Value + Cells(10, 9).Value 
     x = Cells((8 + z), 11).Value 
     z = z + 1 
     Loop While x < Cells(11, 9).Value 


End Sub 

作爲一個方面說明,我不知道你用百分比工作或者這只是一個形式,但可以考慮使用Double走好較低的數字的值大於1

還有一件事是我在測試時發現的。由於某種原因,VBA認爲100%是100%。

0

謝謝,修復工作。我注意到行和列中的值繼續超過最大值,因爲代碼讀取'停止一次超過最大值'而不是'在即將到達最大值之前停止「。

我按如下方式對其進行了修改 - 在表格頂部爲行尺寸添加了類似的代碼段。

Sub Button3_Click() 

Dim x As Double 

Dim z As Double 

Dim w As Double 

Dim y As Double 

Do 
    Cells((8 + z), 11).Value = Cells((7 + z), 11).Value + Cells(10, 9).Value 

     x = Cells((8 + z), 11).Value 

     z = z + 1 

     Loop While x <= Cells(11, 9).Value - Cells(10, 9).Value 

Do 
    Cells(6, (13 + y)).Value = Cells(6, (12 + y)).Value + Cells(10, 6).Value 

     w = Cells(6, (13 + y)).Value 

     y = y + 1 

     Loop While w <= Cells(11, 6).Value - Cells(10, 6).Value 


End Sub