【发布时间】:2017-02-10 18:46:19
【问题描述】:
我已经盯着这段代码看了好几个小时,想知道它为什么不正常。我需要一个理智的人来看看这个并告诉我哪里出错了,拜托。
我正在寻找一个包含模式元素的数组。我开始为一行中的每个元素添加一个“x”。除了第一个和最后一个
据我所知,我正在处理的行已经省略了遍历数组行的循环,并且只处理遍历列的循环。
我想暂时将元素 (0,0) 留空,因为我将在其中输入一个名称,因此我从 1 开始循环到上限。
我想将模式作为字符串添加到行中的最后一个元素。
所以这应该生成 7 个元素: "",x,x,x,x,x,xxxxx
我将数组的维度设置为 0 到 3 和 0 到 6,这给了我 4 行和每行 7 个元素
我从 1 开始循环以将 (0,0) 留空,这意味着它应该循环 6 次,因为我要求它在 ubound (1-5) 以下 1 处添加一个“x”到元素 (0, 1) 到 (0,5)
当每个循环运行时,我应该将“x”连接在一起以创建长字符串。
一切似乎都是合乎逻辑的。不适用于以下输出的代码: "",x,x,x,x,x,""
NumberOfPatterns = 3
PatternLoc = 6
ReDim PatternArray(0 To NumberOfPatterns, 0 To PatternLoc)
For j = 1 To UBound(PatternArray, 2) - 1
PatternArray(0, j) = "x" ' xxxxxx
PatternArray(0, PatternLoc) = PatternArray(0, PatternLoc) & PatternArray(0, j)
Next
请告诉我我错过了什么?
编辑:
作为对它有效的评论的回应,当我使用调试器观看循环时,它似乎可以,但是当我将数组粘贴到工作表时它没有
Sheets("Test1").Select
Set pasteDestination = Range("AX2")
pasteDestination.Resize(UBound(PatternArray, 1), UBound(PatternArray, 2)).Value = PatternArray
编辑 2:
所以我找到了解决方法。但我还是不知道为什么!当我将 + 1 添加到第二维时,当我粘贴回工作表时,它会正确粘贴...这是一个错误吗?
Sheets("Test1").Select
Set pasteDestination = Range("AX2")
pasteDestination.Resize(UBound(PatternArray, 1), UBound(PatternArray, 2) + 1).Value = PatternArray
【问题讨论】:
-
您的代码适用于我:
PatternArray第 0 行是:Void,"x","x","x","x","x","xxxxx" -
您的模块中是否有
Option Base 0或Option Base 1? stackoverflow.com/questions/31606203/… -
我没有在任何地方更改选项库
-
" 这意味着它应该循环 6 次" 你从
1 to UBound(PatternArray, 2) - 1循环,这是1 To (6-1)这是1 to 5那么为什么你期望它看起来 6 次? -
嗨乔,这只是一个错误的输入。你是对的,它应该是“循环 5 次”