简单的VBA循环会覆盖单元格值

时间:2018-02-10 02:42:34

标签: excel vba excel-vba for-loop

我试过谷歌搜索它,我试图自己解决它,但没有运气。

我有一张需要填写其他工作表特定结果的工作表。我在调试窗口和msgbox中获得了准确的结果,但是当我将它应用到工作表时,它会一直覆盖,直到最后一个结果符合标准。

我也尝试将结果放在数组中,但只有数组中的第一行填充了所有数据。

编辑:我很抱歉没有正确解释。 GlobalniIndentifikator是ID。我有两张床单。一个每行只有一个id,另一个对多行具有相同的ID。我知道问题是ID是一个常数,但我不知道如何解决而不会得到错误的数据。

  Dim x As Integer
  Dim y As Integer
  Ukupnoredova = Sheet2.Cells(Rows.Count, 8).End(xlUp).Row

  For x = 2 To Ukupnoredova

     If Sheet2.Cells(x, 8) = GlobalniIndentifikator Then

            Sheet7.Cells(8, 1) = Sheet2.Cells(x, 1)
            Sheet7.Cells(12, 1) = Sheet2.Cells(x, 1)
            Sheet7.Cells(16, 1) = Sheet2.Cells(x, 1)
            Sheet7.Cells(20, 1) = Sheet2.Cells(x, 1)
            Sheet7.Cells(24, 1) = Sheet2.Cells(x, 1)
            Sheet7.Cells(28, 1) = Sheet2.Cells(x, 1)
            Sheet7.Cells(32, 1) = Sheet2.Cells(x, 1)

    End If

  Next x

1 个答案:

答案 0 :(得分:1)

@Jeeped的建议......

Dim x As Integer
Dim y As Integer
Dim lngCnt As Long
Ukupnoredova = Sheet2.Cells(Rows.Count, 8).End(xlUp).Row

lngCnt = 1
For x = 2 To Ukupnoredova

    If Sheet2.Cells(x, 8) = GlobalniIndentifikator Then

        Sheet7.Cells(8, lngCnt) = Sheet2.Cells(x, 1)
        Sheet7.Cells(12, lngCnt) = Sheet2.Cells(x, 1)
        Sheet7.Cells(16, lngCnt) = Sheet2.Cells(x, 1)
        Sheet7.Cells(20, lngCnt) = Sheet2.Cells(x, 1)
        Sheet7.Cells(24, lngCnt) = Sheet2.Cells(x, 1)
        Sheet7.Cells(28, lngCnt) = Sheet2.Cells(x, 1)
        Sheet7.Cells(32, lngCnt) = Sheet2.Cells(x, 1)
        lngCnt = lngCnt + 1

    End If

Next x