【发布时间】:2013-12-30 20:33:12
【问题描述】:
我正在尝试使用For 和if 语句的嵌套填充一系列text 框(一直命名为b0 到b41)。我在格式化时遇到了麻烦。这是我得到的:
'Fill in Names under dates
For x = 1 To intSize 'open loop to go through array that holds days off
For y = 0 To 41 'open loop to cycle through the text boxes
'check if date in array matches text box date
If Me("id" & y) = arrVacay(x).DayOff Then
If Me("b" & y).Value = "" Then
Me("b" & y) = arrVacay(x).PersonOff
Else
Me("b" & y) = Me("b" & y) & vbCrLf & arrVacay(x).PersonOff
End If
End If
Next y
Next x
arrVacay 是一个包含日期和名称的变体数组。该代码基本上读取我的数组以查找名称需要去的日期。每个日期可以有多个名称。然后将该名称放入相应的框中。多个名称可以并且将进入任何给定的框。
我的问题是,当我运行程序时,我的文本在第一个名称之前显示一个换行符。有什么想法吗?
编辑:在 T McKeon 发表评论后,我将发布我目前的结果 --
以上代码产生:
12/31/13
---> space here
John
Mary
我不希望日期和名字之间有空格。从我的附加行中删除 VbCrLf 会在一行中生成两个名称。
编辑:
使用下面的 cmets,我稍微修改了代码。我切换了我的 For 巢,看看是否有什么不同。没有
For y = 0 To 41
For x = 1 To intSize
If Me("id" & y) = arrVacay(x).DayOff Then
If Me("b" & y) Is Nothing Then
Me("b" & y) = Me("b" & y) & arrVacay(x).PersonOff
End If
End If
Next x
Next
使用此代码,我什么也没有填写。
如果我注释掉最内层的If 语句但留在最内层的行,我的名字会出现在正确的位置,但行距仍然没有。
【问题讨论】:
-
您确定数组第一次在 arrVacay(x).DayOff 上找到匹配项时会返回 ""?
-
好吧,它不应该在第一场比赛中返回 ""。它应该是我在 Access 中的表中的日期。基本上,如果文本框为空,我希望它把名字放在第一行。如果它不为空,我希望它获取其中的内容并移动到下一行以获取下一个名称......依此类推。我会发布我所得到的
-
我的意思是它应该返回一个名称,而不是一个日期
-
您确定代码不总是输入
else吗?这可以解释日期和第一个名字之间的“空格”。 -
@ssarabando -- 我现在正在测试它,这正是正在发生的事情。你知道为什么会这样吗?