首页 > 解决方案 > 使用 VBA 我的代码第一次没有执行并且条件为“真”

问题描述

当 2 个工作表上的 ID 匹配时,从第二个电子表格(GL 接口)复制 2 列数据。我单步执行了代码并执行了捕获值并打印到目的地的代码,除了 G2 a& H2 中没有打印任何内容。有些值应该打印但不打印。每隔一行打印一次。

为什么第一次执行不打印值?实际上,这些值确实在第二次执行后出现了一次。

但是,当我将目标列重置为空白并再次尝试时,第一次评估 true 的值不会显示在它们的目标列中。

为什么?

Sub Import_Data()

    Dim lastRw1, lastRw2, nxtRw, m, lastColumn, rowCol

    'Determine last row with data, Sheet1
    lastRw1 = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
    'Determine last row with data, Import
      lastRw2 = Sheets("GL Interfaces").Range("A" & Rows.Count).End(xlUp).Row

    'Last Column
     With ActiveSheet
        lastColumn = .Range("A1").SpecialCells(xlCellTypeLastCell).Column
     End With
     MsgBox lastColumn '=> returns 36

    'Heading
     Range("A1:H1").HorizontalAlignment = xlCenter
     Range("A1:H1").HorizontalAlignment = xlCenter
     Range("A1:H1").Interior.Color = RGB(169, 208, 142)
     Range("A1:H7172").Font.Color = RGB(0, 0, 0)

    'Body
     Range("A1:H7172").HorizontalAlignment = xlCenter
     Range("A1:H7172").Font.Color = RGB(0, 0, 0)

    'Loop through Sheet1, Column A
     For nxtRw = 2 To lastRw2
    'Search Sheet1 Column A for value from GL Interfaces
        With Sheets("Sheet1").Range("A2:A" & lastRw1)
            Set m = .Find(Sheets("GL Interfaces").Range("A" & nxtRw), LookIn:=xlValues, lookat:=xlWhole)
            'Copy GL Interfaces row if match is found
            If Not m Is Nothing Then
                Sheets("GL Interfaces").Range("E" & nxtRw & ":F" & nxtRw).Copy _
                Destination:=Sheets("Sheet1").Range("G" & m.Row)
            End If
        End With
     Next

End Sub

标签: excelvba

解决方案


推荐阅读