【发布时间】:2016-05-25 13:05:47
【问题描述】:
我需要两个 VBA 语言的数组,它们将创建以下值
1 2
1 3
1 4
2 3
2 4
3 4
所以当在第二个数组中达到 4 时,数组 1 的下一个元素就是它的值加 1,数组 2 的下一个元素是数组 1 + 1 的下一个元素。我尝试过直到循环,但我进行无限计算。
我尝试了以下但我得到了无限的计算
将 ENumber 调暗为变体 ENumber = Worksheets("Inter").Range("B1")
Dim FirstLoop As Boolean
Dim m As Variant
ReDim IndexofE1(ENumber * (ENumber - 1) / 2) As Variant
ReDim IndexofE2(ENumber * (ENumber - 1) / 2) As Variant
IndexofE1(0) = 1
FirstLoop = True
Do Until IndexofE1(ENumber * (ENumber - 1) / 2) = Enumber - 1
If IndexofEl2(m) <> ENumber Then
If FirstLoop = False Then
IndexofE1(m + 1) = IndexofE1(m)
IndexofE2(m + 1) = IndexofE1(m) + 1
End If
If FirstLoop = True Then IndexofE2(m + 1) = IndexofE1(m) + 1
Else
IndexofE1(m + 1) = IndexofE1(m) + 1
IndexofE2(m + 1) = IndexofE1(m + 1) + 1
End If
FirstLoop = False
Loop
【问题讨论】:
-
向我们展示您的尝试,以便我们提供帮助。
-
当然可以。他们应该什么时候结束?
-
你永远不会改变“ENumber”,所以如果表达式计算为假,换句话说,你进入循环,它总是会计算假==永恒循环。我想这就是@GuyLowe 的意思:)
-
我是 VBA 新手,很抱歉。这是我写的第一个循环。我声明当元素等于 Enumber - 1 时第一个数组停止。你能明确地编写代码吗?我是新来的,我在这里卡了很长时间
-
@Lvassilopoulos 在“Do...Loop”循环中,您设置一个布尔表达式。这意味着如果您添加“Do Until False”,它将成为一个永恒的循环,而“Do Until True”将永远不会进入循环。因此,只要“直到 IndexofE1(ENumber * (ENumber - 1) / 2) = Enumber - 1”的计算结果为假,循环就不会结束,并且由于您没有在循环中更改“ENumber”,它就会结束。您还有一个错字(“ENumber”与“Enumber”),因此将“Option Explicit”添加为代码的第一行,然后修复所有错误
标签: vba