我是VBA的新手,并且在另一个嵌套的FOR循环中苦苦挣扎,以在移动到下一行之前水平检查表的每一行。
目标: 我需要我的代码忽略所有值为0的单元格,并对非零单元格进行一些基本的(无关的)操作。
问题: 我的代码适用于该行的第一个非零单元格,但是会忽略同一行以及随后的行中的所有其他非零单元格。
代码基本结构: FOR循环1:从一行转到下一行; FOR循环2 :(位于循环1中)从行中的一个单元格移至下一个单元格; 如果::(位于循环2中)检查非零单元格并进行操作
我可能忘记了这可能是一个愚蠢的细节,但是我找不到它,也没有通过搜索类似的主题...
对于缺少代码优化的问题,我们深表歉意。
我试图重新组织循环,以反转IF Then结构,以便首先忽略零单元格,但随后我找不到找到下一个循环2的方法。
Dim RNB As Long, ROutput As Integer, VBAR As Integer, VBAC As Integer, i As Long, j As Long
'RNB = amounts of rows to check in input table;
'ROutput = the row number of the output table where to paste the desired values;
'VBAR = row number of the first cell to check in the Input table;
'VBAC = column number of the first cell to check in the Input table;
'i = the counting variable for the vertical FOR loop; and
'j = the counting variable for the horizontal FOR loop.
'Vertical parent FOR loop
For i = 1 To RNB
'Horizontal nested FOR loop: cells with a null value are ignored and the remaining ones are copied in the Output worksheet, in the first empty row available
For j = 1 To 11
If Cells(i + [2] - 1, [2] + 2 + j).Value <> 0 Then
'Copy/paste of the value of the identified cell and save the row number for the remaining information to add in next steps
[Input1].Select
Cells(i + [VBA_Row].Value - 1, [Segment].Value + 2 + j).Copy
'[Irrelevant code that actually works perfectly for the first iteration (I will display it if necessary)]
Else: End If
Next j
Next i
没有显示错误消息。
代码执行第一次迭代的工作,但通常如果行1的前两个单元不等于零:代码执行单元1的工作,忽略单元2并转到下一行以忽略所有其他细胞。
非常感谢您的帮助。