0

我试图创建一个 Excel VBA 函数,它将复制工作表 1 中的单元格中的数据并将它们粘贴到工作表 2 中。理想情况下,我一直检查单元格AF6, AF7...,直到“行”的值是什么。如果单元格内的值等于 1,代码将从“C”行(第一个实例中的第 6 行)复制所有列出的列,并将它们粘贴到第 2 行 (6-4)。一些单元格包含数字,其他单元格包含字符串。我被困住了——如果有人能解决我的问题,我将不胜感激。

Public Sub copy_cells(rows As Integer)

Dim C As Integer

For C = 6 To C = rows   
    If Worksheets("sheet1").Range("AF" & C).Value = 1 Then
        Sheet2.Range("B" & C).Value = Sheet1.Range("B" & C - 4).Value
        Sheet2.Range("E" & C).Value = Sheet1.Range("C" & C - 4).Value
        Sheet2.Range("I" & C).Value = Sheet1.Range("D" & C - 4).Value
        Sheet2.Range("J" & C).Value = Sheet1.Range("E" & C - 4).Value
        Sheet2.Range("R" & C).Value = Sheet1.Range("F" & C - 4).Value
        Sheet2.Range("V" & C).Value = Sheet1.Range("G" & C - 4).Value
        Sheet2.Range("C" & C).Value = Sheet1.Range("H" & C - 4).Value
        Sheet2.Range("F" & C).Value = Sheet1.Range("J" & C - 4).Value
        Sheet2.Range("G" & C).Value = Sheet1.Range("K" & C - 4).Value
        Sheet2.Range("D" & C).Value = Sheet1.Range("N" & C - 4).Value            
    End If
    C = C + 1
Next C

End Sub
4

2 回答 2

2

将您的 For 行更改为:

For C = 6 To rows

C = rows计算结果为false (0),并且您永远不会到达 for 循环 ( For 6 to 0)内的代码

于 2013-05-10T20:47:26.017 回答
1

您的代码非常接近运行。两个变化: 更正循环的迭代部分FOR;并删除循环底部不必要的 C 显式迭代。

  Option Explicit

  Public Sub copy_cells(rows As Integer)

     Dim C As Integer
     For C = 6 To rows
        If Worksheets("Sheet1").Range("AF" & C).Value = 1 Then
           Sheet2.Range("B" & C).Value = Sheet1.Range("B" & (C - 4)).Value
           Sheet2.Range("E" & C).Value = Sheet1.Range("C" & (C - 4)).Value
           Sheet2.Range("I" & C).Value = Sheet1.Range("D" & (C - 4)).Value
           Sheet2.Range("J" & C).Value = Sheet1.Range("E" & (C - 4)).Value
           Sheet2.Range("R" & C).Value = Sheet1.Range("F" & (C - 4)).Value
           Sheet2.Range("V" & C).Value = Sheet1.Range("G" & (C - 4)).Value
           Sheet2.Range("C" & C).Value = Sheet1.Range("H" & (C - 4)).Value
           Sheet2.Range("F" & C).Value = Sheet1.Range("J" & (C - 4)).Value
           Sheet2.Range("G" & C).Value = Sheet1.Range("K" & C - 4).Value
           Sheet2.Range("D" & C).Value = Sheet1.Range("N" & C - 4).Value
        End If
     Next C

  End Sub
于 2013-05-11T00:02:29.427 回答