Excel VBA:满足条件时嵌套For循环

问题描述 投票:0回答:0

我正在尝试在 VBA 中编写代码来根据两个条件复制单元格值。

我正在尝试编写一个 VBA 代码,如果案例文件编号(= 单元格值)不再存在于粘贴案例编号每日更新数据的工作表中,则将其复制到另一个工作表。我想过滤掉那些我过去查看过并已被删除的案例编号(导出的数据中不再存在)。

我搜索了论坛并尝试了一些方法,但我不断收到错误:下一步没有 For。 我还是个新手,找到了很多有关此错误的信息,但我似乎不明白如何解决我的代码。

在复制单元格值之前,我需要满足两个条件。

标准 1: 单元格值不再存在于每日更新数据范围内 => 这不是通过生成“1”或“0”的 Excel 公式实现的。如果它生成“1”,则意味着它丢失,这是要复制的第一个标准。

标准 2: 要复制的单元格值在要复制到的工作表中尚不存在。 我想每天运行代码,并且不想最终一次又一次地复制相同的值。

我现在的代码如下所示:

Dim shCD As Worksheet, shVD As Worksheet
Dim VDCell As Range
Dim lrwCD As Long, lrwI As Long
Dim foundTrue As Boolean
Dim i As Integer, j As Integer

Application.ScreenUpdating = False

    Set shCD = Sheets("Checked Dossiers")
    Set shVD = Sheets("Verdwenen Dossiers")
    Set VDCell = FreeCell(shVD.Range("A5"))

    lrwCD = shCD.Cells(shCD.Rows.Count, "B").End(xlUp).Row
    lrwVD = shVD.Cells(shVD.Rows.Count, "A").End(xlUp).Row

    foundTrue = False   'my on/off switch to copy or not copy the cell value
    
    For i = 2 To lrwCD  
       For j = 2 To lrwVD 

'checking criteria 1, if this is true set switch to true and check if cell value already exists on sheet shVD in the range (A2:lrwVD)
            If shCD.Cells(i, 1).Value = "1" Then   
            foundTrue = True  
                 If shCD.Cells(i, 2).Value = shVD.Cells(j, 1).Value Then
                    foundTrue = False    ' If the cell value already exist -> set switch to false
        Next j

'After comparing cell value to the range (A2:lrwCD) and the switch is still on True -> start the copy command
                If foundTrue = True Then
                    shCD.Cells(i, 2).Copy
                    VDCell.PasteSpecial Paste:=xlPasteValues
                    VDCell = VDCell.Offset(1, 0)
                foundTrue = False  'set switch back to off (false) to start loop for next i
    Next i
   
Application.ScreenUpdating = True

excel vba nested-loops copy-paste criteria
© www.soinside.com 2019 - 2024. All rights reserved.