【问题标题】:Range gets deleted when reassigned重新分配时范围被删除
【发布时间】:2021-11-05 20:27:28
【问题描述】:

您好,我是 VBA 新手,想知道为什么当我重置范围时,范围内的所有内容都会删除。我们不应该在 VBA 中重新分配范围吗?有问题的行是supervisor_range = .Range(Cells(2, 1), .Range("A" & .Rows.Count).End(xlUp)) 下图中的所有名称都将被删除。

Sub remove()
    Dim supervisorsheet As Worksheet
    Set supervisorsheet = Worksheets("supervisor")
    
    Dim supervisor_range As Range
    Dim cell As Range
    
    last_row = supervisorsheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    
    Set supervisor_range = supervisorsheet.Range(Cells(2, 1), Cells(last_row, 1))
    supervisor_range.RemoveDuplicates Columns:=1, Header:=xlNo
    
    With supervisorsheet        
        supervisor_range = .Range(Cells(2, 1), .Range("A" & .Rows.Count).End(xlUp))
    End With
End Sub

【问题讨论】:

    标签: vba range declaration


    【解决方案1】:

    这个

    supervisor_range = .Range(Cells(2, 1), .Range("A" & .Rows.Count).End(xlUp))
    

    不将变量supervisor_range 设置为给定范围。相反,您将范围的值复制到 supervisor_range 引用的范围中。

    如果要将变量设置为范围,则需要使用关键字Set

    Set supervisor_range = .Range(Cells(2, 1), .Range("A" & .Rows.Count).End(xlUp))
    

    没有Set以下两行是一样的!

    supervisor_range = .Range(Cells(2, 1), .Range("A" & .Rows.Count).End(xlUp))
    supervisor_range.Value = .Range(Cells(2, 1), .Range("A" & .Rows.Count).End(xlUp)).Value
    

    【讨论】:

      【解决方案2】:

      除了现有的答案,我不完全清楚你为什么要做你所做的 - 定义 cels 的范围,操作它,再次定义它......

      这是您的代码的简化版本,它完全可以做到 - 从给定范围内删除重复项:

      Sub remove()
      
          Dim supervisorsheet As Worksheet
          Set supervisorsheet = Worksheets("supervisor")
          
          Dim supervisor_range As Range
          
          With supervisorsheet
              last_row = .Cells(.Rows.Count, 1).End(xlUp).Row
          
              Set supervisor_range = .Range(Cells(2, 1), Cells(last_row, 1))
              supervisor_range.RemoveDuplicates Columns:=1, Header:=xlNo
          End With
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        相关资源
        最近更新 更多