首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在比较Rng1与Rng2时没有发现差异时显示Rng2?

如何避免在比较Rng1与Rng2时没有发现差异时显示Rng2?
EN

Stack Overflow用户
提问于 2021-12-25 12:29:18
回答 1查看 75关注 0票数 0

我使用下面的代码来比较rng1和rng2,并显示MsgBox中的所有差异。代码可以工作,但是如果没有发现差异,我需要避免显示消息框。一如既往,我们非常感谢你的帮助。

代码语言:javascript
复制
Option Explicit

Sub Test_Copied_Data2()

   Dim Sh1 As Worksheet: Set Sh1 = Sheets("Auto")
   Dim Sh2 As Worksheet: Set Sh2 = Sheets("Closed_Items")
   
   Dim rng1 As Range, rng2 As Range, A As Range, LastRow As Long

    Set rng1 = Sh1.Range("A2:A22")
    
    Dim Count_rng1 As Long
     Count_rng1 = WorksheetFunction.CountA(rng1)
    
    If Count_rng1 = 0 Then Exit Sub
    
    LastRow = Sh2.Cells(Rows.Count, "B").End(xlUp).Row
     Set rng2 = Sh2.Range("B" & Count_rng1 & ":" & "B" & LastRow)
  
  Dim Msg As String
   Msg = "These Item not found in sheet 'Closed_Items' : " & vbNewLine
      
  For Each A In rng1
    If Len(A.value) > 0 And Application.CountIf(rng2, A.value) = 0 Then
        Msg = Msg & A.value & vbNewLine
     End If
    Next
  Msg = Left(Msg, Len(Msg) - 2)
 MsgBox Msg
                                                                        
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-25 12:42:21

代码语言:javascript
复制
    Dim msg As String
    For Each A In rng1
        If Len(A.Value) > 0 And Application.CountIf(rng2, A.Value) = 0 Then
            msg = msg & vbLf & A.Value
        End If
    Next
    
    If Len(msg) > 0 Then
        MsgBox "These Item not found in sheet 'Closed_Items' : " & msg, vbExclamation
    Else
        'MsgBox "OK", vbInformation
    End If
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70480023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档