首页 > 解决方案 > 代码没有按预期工作。如果条件满足,VBA代码将值从一张表复制到另一张表

问题描述

如果源表的 B 列中的值大于或等于 10,我正在编写 VBA 代码以将值从一张表复制到另一张表。我可以将源表中的值复制到目标表。但是,复制的值是错误的。

我尝试更改条件(值大于 10)以查看输出是什么。值与预期不符。

Sub findValues()

Dim c As Range
Dim b As Integer
Dim Source As Worksheet
Dim Target


Set Source = ActiveWorkbook.Worksheets("Source2")
Set Target = ActiveWorkbook.Worksheets("Code Trial2")

b = 2
For Each c In Source.Range("B2:B:20")

If c.Value >= 10 Then

Source.Cells(b, "A").Copy
Target.Cells(b, "A").PasteSpecial xlPasteValues
Source.Cells(b, "B").Copy
Target.Cells(b, "B").PasteSpecial xlPasteValues

b = b + 1
End If

Next c

End Sub

源表包含以下内容: Val Number A 1 B 2 C 3 D 10
E 12 F 13

我希望输出为:10、12、13

但是,在目标表中我得到: 1, 2, 3 实际输出

标签: excelvbacopy

解决方案


这应该这样做:

Option Explicit
Sub findValues()

    Dim c As Range
    Dim b As Integer
    Dim Source As Worksheet
    Dim Target As Worksheet


    Set Source = ActiveWorkbook.Worksheets("Source2")
    Set Target = ActiveWorkbook.Worksheets("Code Trial2")

    b = 2
    For Each c In Source.Range("B2:B20")
        If c.Value >= 10 Then
            Target.Cells(b, "A").Value = c.Offset(0, -1).Value
            Target.Cells(b, "B").Value = c.Value
            b = b + 1
        End If
    Next c

End Sub

推荐阅读