Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 正确索引新行时出现问题_Excel_Vba - Fatal编程技术网

Excel 正确索引新行时出现问题

Excel 正确索引新行时出现问题,excel,vba,Excel,Vba,我循环遍历列并将它们存储在值s和s1中。我需要为尽可能多的行添加计数顺序,因为我正在尝试使用j索引。一直都是这样的画面: 预期结果应如下所示: s=“” s1=“” j=1 做 s=j&“&s&工作簿(文件名).工作表(1).单元格(i,2).偏移量(1,0).值和vbCrLf s1=j&“&s1&工作簿(文件名).Sheets(1).Cells(i,3).Offset(1,0).Value&vbCrLf i=i+1 j=j+1 循环同时运行工作簿(文件名).Sheets(1).Cells(

我循环遍历列并将它们存储在值s和s1中。我需要为尽可能多的行添加计数顺序,因为我正在尝试使用j索引。一直都是这样的画面:

预期结果应如下所示:

s=“”
s1=“”
j=1
做
s=j&“&s&工作簿(文件名).工作表(1).单元格(i,2).偏移量(1,0).值和vbCrLf
s1=j&“&s1&工作簿(文件名).Sheets(1).Cells(i,3).Offset(1,0).Value&vbCrLf
i=i+1
j=j+1
循环同时运行工作簿(文件名).Sheets(1).Cells(i,3).Value“”

代码应按如下方式递增:

s = s & j & ". " & Cells(i, 2).Offset(1, 0) & vbCrLf
因此,
s
值在自身上递增

通常,每当出现此类问题并且很难理解为什么要格式化字符串时,请尝试一步一步地调试。例如,在代码上写入
Stop
,并打印字符串,该字符串到目前为止是可用的。像这样:

Do
    s = s & j & ". " & Cells(i, 2).Offset(1, 0) & vbCrLf
    s1 = j & ". " & s1 & Cells(i, 3).Offset(1, 0) & vbCrLf
    i = i + 1
    j = j + 1
    Debug.Print s
    Stop
Loop While Cells(i, 3) <> ""
Do
s=s&j&“&”和单元格(i,2)。偏移量(1,0)和vbCrLf
s1=j&“&s1&单元格(i,3).偏移量(1,0)&vbCrLf
i=i+1
j=j+1
调试。打印s
停止
循环而单元格(i,3)”
这样魔法就更容易理解了。按F8键并在VBE中将光标悬停在当前值上以检查当前值是逐步调试的另一个选项


谢谢,它很有效!你不会相信,F8是我尝试做的第一件事,我还通过alt键将s和s1值拖动到观察列表,并在即时窗口中检查它们的值,仍然不明白如何找到正确的解决方案,我猜这更像是“练习”的事情。最后一个问题:您知道为什么它将最后一个索引添加为空吗@MDoskarin-从这里读取-
单元格(i,2)。偏移量(1,0)
,条件是
单元格(i,3)“
。如果您像这样更改循环的条件-
Do While Cells(i,2).Offset(1,0)”“
,就可以了。天哪,简单就是天才。非常感谢。
Do
    s = s & j & ". " & Cells(i, 2).Offset(1, 0) & vbCrLf
    s1 = j & ". " & s1 & Cells(i, 3).Offset(1, 0) & vbCrLf
    i = i + 1
    j = j + 1
    Debug.Print s
    Stop
Loop While Cells(i, 3) <> ""