vba - 重新分配时范围被删除
问题描述
嗨,我是 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
解决方案
这个
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
推荐阅读
- tensorflow - TensorFlow 对象检测 API 增强
- python - pandas groupby,如果组键在它们之间发生更改,则组键将被单独处理
- c# - Unity - InControl 我如何检测一个动作推送?
- python - 我收到 ModuleNotFoundError: No module named 'pyforms.gui' 尽管安装了 pyforms-gui
- excel - 如果公式及其范围求和的Excel问题
- python - 如何在函数之间实时共享变量
- c - 是否可以将给定的 C 代码转换为 Assembly x86?
- spring-boot - GCP 和 Spring 回退。严重性始终是信息
- ef-code-first - EF Core 模型快照在添加迁移和更新之间不同步
- mapbox-gl-js - 如何从 geojson 文件中获取多边形的坐标并从中挤出 3D 多边形?