嘿伙计们我是VBA的新手,因为我很难解决问题。
我正在尝试对数据输入进行一些计算,我必须让我的程序在" Discrepancy"之前停止在工作表上显示值。达到任何少于5.这应该使两个列" Money"和"差异"停在一起。之后,程序将在另一列(#34; I1"" Money2"和J1"" Discrepancy2")中输入t = 10时开始在公式中,值显示在第I2列和第J2列中,直到结束。
我不确定如何在它到达之前停止它以及如何同时停止其他列。我也不确定它是否会继续另一个t = 10。
任何建议
Sub solver2()
Dim t As Double, v As Double, i As Integer
Dim rowG As Integer, rowH As Integer
i = 0: v = 0 'related to formuala
'Range("A3").Select
'Range("D3").Select
Range("G1").Value = "Money"
Range("H1").Value = "Discrepancy"
Range("G2").Select
For t = 0 To tf Step delta
ActiveCell.Offset(i, 0) = t
ActiveCell.Offset(i, 1) = v
v = v + delta * accel(t, v)
i = i + 1
Next t
rowG = ActiveSheet.Range("G2").End(xlDown).row
rowH = ActiveSheet.Range("H2").End(xlDown).row
For i = rowG To 1 Step -1
Dim val1 As Long
val1 = ActiveSheet.Range("G" & i).Value
If (val1 > 5) Then
ActiveSheet.Range("G" & i).EntireRow.Delete
End If
Next i
For i = rowH To 1 Step -1
Dim val2 As Long
val2 = ActiveSheet.Range("G" & i).Value
If (val2 > 5) Then
ActiveSheet.Range("G" & i).EntireRow.Delete
End If
Next i
For t = 0 To 10 Step delta 'This steps it per delta input
Range("I1").Value = "Money2"
Range("J1").Value = "Discrepancy2"
Range("I2").Select
ActiveCell.Offset(i, 0) = t
ActiveCell.Offset(i, 1) = v
v = v + delta * accel(t, v)
i = i + 1
Next t
End Sub
答案 0 :(得分:0)
如果您只需要将单元格显示为空,则可以使用conditional formatting将文本和背景颜色设置为相同。
您可以尝试使用do while循环而不是for循环来设置第一组中的值:
Do While t <= tf And v < 5
ActiveCell.Offset(i, 0) = t
ActiveCell.Offset(i, 1) = v
v = v + Delta * accel(t, v)
i = i + 1
t = t + Delta
Loop
我不确定您对其他列的意图是什么,但如果您想继续第一列停止的位置,此循环会将t
保留为您将使用的值