首页 > 解决方案 > 重新分配时范围被删除

问题描述

嗨,我是 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

标签: vbarangedeclaration

解决方案


这个

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以下2行是相同的!

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

推荐阅读