VBA - 通过循环和ifs填充带换行符的文本框

时间:2013-12-30 20:33:12

标签: arrays vba loops text

我正在尝试使用text和{{1}的嵌套填写一系列b0框(名称b41一直到For) }语句。我的格式化遇到了麻烦。这就是我所拥有的:

if

'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 是一个包含日期和名称的变体数组。代码基本上读取我的数组以找到Name需要去的日期。每个日期可以有多个名称。然后将名称放入相应的框中。多个名称可以并将进入任何给定的框。

我的问题是,当我运行程序时,我的文本在第一个名称之前显示换行符。有什么想法吗?

编辑:在T McKeon的评论之后,我发布了我目前的结果 -

以上代码产生:

arrVacay

我不希望日期和名字之间有空格。从我的追加行中删除 12/31/13 ---> space here John Mary 会在一行中生成两个名称。

编辑:

通过以下评论,我稍微改了一下代码。我转换了我的For Nest,看看是否有所作为。它没有

VbCrLf

使用此代码,我什么都没有填写。

如果我注释掉最内部的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 语句,但留在最里面的行,我会在正确的位置得到我的名字,但行间距仍然是关闭的。

2 个答案:

答案 0 :(得分:0)

删除下面的vbCrlf:

            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

答案 1 :(得分:0)

终于找到了一个解决方案......我刚刚初始化了我所有的b-box并且它有效。

For z = 0 To 41
    Me("b" & z).Value = ""
Next z

For y = 0 To 41
    For x = 1 To intSize
        If Me("id" & y) = arrVacay(x).DayOff Then
            If Me("b" & y).Value = "" Then
                Me("b" & y) = Me("b" & y) & arrVacay(x).PersonOff
            Else
                Me("b" & y) = Me("b" & y) & vbCrLf & arrVacay(x).PersonOff
            End If
        End If
    Next x
Next y

感谢您帮助我解决暴风雨问题。