VBA除以一个值,然后显示相对于divison的值

我试图找出最清晰的显示方式,作为一个例子,初始值为300x为关键path, 1.5y 。 这两个值都可以通过表单上的input进行更改。

与这些价值一起,我们有ab的资源。 在这种情况下,一行将填充200行, b将填充100

正如我之前提到的, xy可以改变,比方说,如果y2 ,则填充150b填充150 。 如果y1那么只有300

目前我使用的是If语句,但是我觉得这很麻烦,可能会导致无尽的代码,以覆盖每一个可能的结果,我需要一个更好的解决scheme。

这是我目前正在实现的一个简单的例子:

 Private Sub Example() Dim ActiveWB As Worksheet Set ActiveWB = ActiveWorkbook.Sheets("Sheet1") Dim cell As Range Dim a, b, x, y As Double x = ActiveWB.Range("A1").Value y = ActiveWB.Range("A2").Value a = x / y b = x - a For Each cell In ActiveWB.Range(Cells(3, 1), Cells(3, a)) If (cell.Column >= 0) And (cell.Column <> x) Then If (y = 1) And (a > 0) Then cell.Value = "a" a = a - 1 ElseIf (y > 1) And (y < 2) And (a > 0) Then cell.Value = "a" a = a - 1 If (b > 0) Then cell.Offset(1, 0).Value = "b" b = b - 1 End If ElseIf (y >= 2) And (y < 2.5) And (a > 0) Then cell.Value = "a" a = a - 1 If (b > 0) Then cell.Offset(1, 0).Value = "b" b = b - 1 End If '..... and so on...... End If End If Next cell End Sub 

任何build议将不胜感激。 感谢您的时间。 Y.

首先声明types应该分别为每个variables完成:

 Dim a, b, x, y As Double 

变为:

 Dim a As Double, b As Double, x As Double, y As Double 

或者(这是我喜欢的):

 Dim a As Double Dim b As Double Dim x As Double Dim y As Double 

其次 ,如果你的a和b只用于确定范围宽度,那么它们最好不是浮点types。 而不是使用Integer(2 ^ 15以下)或Long:

 Dim a As Integer Dim b As Integer Dim x As Double Dim y As Double 

那么你对a和b的赋值就不能保持现在的样子了,而应该是这样的:

 a = Int(x / y) b = Int(x - a) 

那么我希望你的x和y值限制在你的表中> 0和x> y的值。 如果不是,那么先在脚本中testing一下…

现在最后和你原来的问题 ),如果你喜欢,你可以给一个完整的单元格范围赋值:

 If a > 0 Then Range(Cells(3, 1), Cells(3, a)).Value = "a" If b > 0 Then Range(Cells(4, 1), Cells(4, b)).Value = "b" 

我不明白你为什么从a和b中得到1,所以如果真的增加了一些东西,请详细说明一般逻辑…

我可能不完全理解这个复杂性,但是基于你分享的内容,你可以用下面的代码replace你的for循环来达到同样的效果:

 ActiveWB.Range(Cells(3, 1), Cells(3, a)).Value = "a" If b > 0 then ActiveWB.Range(Cells(4, 1), Cells(4, b)).Value = "b" End If