Excel宏 - 无法调用单元格值

时间:2011-03-15 16:10:35

标签: excel excel-vba for-loop vba

在我的工作表中,一些单元格值基于其他单元格

Info worksheet
A1: 5
B1: =A1
Design worksheet
A1:

有没有办法复制和读取B1中的值?我试图在for循环中使用该值,但没有运气。

Sheets("Info").Select
For i = 1 to 5
    If Range("B" & i).Value <> 0 Then
        Range("B" & i).Copy Destination:=Sheets("Design").Range("A" & x)
        'Sheets("Design").Range("A" & x).Value = Sheets("Offerte").Range("B" & i).Value
        x = x + 1
    End If
Next i

2 个答案:

答案 0 :(得分:0)

您的示例似乎与代码不匹配。这条线

If Range("B" & i).Value = 1 Then

表示在您的示例中不会复制任何内容。它正在寻找一个包含1的单元格。为什么你需要If声明?

编辑我猜你只是在检查单元格中有什么要复制的?我可能会这样做:

If Trim(Range("B" & i).Value) <> "" Then

另外 - 你错过了设置x=1吗?

答案 1 :(得分:0)

有多种方法可以做到这一点。其中一个是使用'offset',这是一个非常值得理解的功能。它基本上指向原始单元格中的行/列数量。

Sub test()

    Dim oCell As Excel.Range
    Dim i As Integer
    Dim x As Integer

    Set oCell = Sheets("Info").Range("B1")

    x = 1

    For i = 1 To 5
        If oCell.Offset(i, 0).Value = 1 Then
            oCell.Offset(i, 0).Copy Destination:=Sheets("Design").Range("A" & x)
            x = x + 1
        End If
    Next i

End Sub 

此外,您可以断言值而不是使用copy属性。注意它不起作用,除非x是一个整数&gt; 0

Sub test2()

Sheets(3).Select
x = 1
For i = 1 To 5
    If Range("B" & i).Value = 1 Then
        Sheets(4).Range("A" & x).Value = Range("B" & i).Value

        'Sheets("Design").Range("A" & x).Value = Sheets("Offerte").Range("B" & i).Value
        x = x + 1
    End If
Next i

End Sub