在Excel VBA中,.Delete和.Clear有什么区别?

5
什么是“Worksheets(1).Cells.Delete”和“Worksheets(1).Cells.Clear”的区别?
我之前一直使用“.Clear”来清空我的工作表内容,但在以前的帖子中,我发现“Worksheets(1).Cells.Delete”不仅可以删除工作表内容,还可以设置列的默认宽度。
有人能解释一下两者的区别吗?此外,我可以给.Delete一个范围吗?

1
.clear 相当于点击单元格并按下退格键直到内容消失。这将清除文本和格式,但不会影响单元格设置。.delete 比这更彻底,它完全删除整个单元格,并用全新的单元格替换它。所有格式、设置和内容都被删除,您可以从一个全新的单元格开始。 - Plutian
所以.Delete基本上是删除整个单元格并用新的替换它?但是这个函数有点奇怪,我是说...等一下让我编辑一下帖子。 - ChangeWorld
@Plutian 什么是单元格设置和格式设置之间的区别?这是一个真正的问题。 - QHarr
@QHarr 格式化是决定显示文本如何显示的所有内容。例如 加粗 斜体单元格颜色。单元格设置更像是 <- 带箭头的单元格 ->,条件格式和指定的“数字格式”。请参阅我的答案,了解不同 .clear 变体的文档,这些变体根据您的情况清除某些类型的设置和格式。 - Plutian
@Plutian 但是如果我右键单击格式单元格,我会看到许多东西的列表,这些东西我本以为是“设置”,例如数字格式。啊...我刚刚看到了你的答案“某些类型的格式设置”。 - QHarr
2
@QHarr 或许差别不是很大,因为这些词几乎是同义词,有几位专家会使用其中任意一个词来解释相同的事情。我个人认为差异更像是:“格式”可以在单元格内完成,您可以在普通文本旁边有粗体文本。“设置”是影响整个单元格的事物,例如边框和宽度、背景颜色等。您不能只显示单元格的一部分,要么全部显示,要么不显示。正如我所说,查看我的或@buran的答案,以了解.clear如何针对您尝试执行的操作进行特定的处理。 - Plutian
2个回答

10

Range.Delete 实际上会删除相应的区域,并相应地移动单元格,从而改变工作表的结构。如果选择单元格并右键单击以删除选定内容,则情况是相同的。您将被询问如何移动单元格。

Range.Clear 只会清除内容和格式,但不会删除单元格或更改工作表的结构。

还有Range.ClearContents,它只会清除内容但保留格式,Range.ClearFormats只会清除单元格的格式,Range.ClearCommentsRange.ClearHyperlinksRange.ClearNotesRange.ClearOutline也可以使用。


5

在Excel VBA中有各种类型的.clear函数可供使用,它们都是针对特定情况和您想要实现的目标进行优化。在此页面上可以找到一些文档和说明。

以下是几种不同类型:

Clear            Remove formatting and contents 
ClearFormats     Remove cell formatting, including font format 
ClearComments    Remove comments 
ClearHyperlinks  Reomve hyperlinks, but the default format of hyperlink is not removed 
Clear Notes      Remove Notes 
ClearOutline     Remove Outline 
Delete           Remove the entire cell

在此处可以找到关于.delete行为的详细解释

简而言之,当指定时.clear会删除单元格内容和某些类型的格式。 .delete会删除整个单元格及其格式,并将文档的其余部分移动来填补空白。

@ChangeWorld回答您编辑过的问题: .delete会完全删除单元格,但会移位周围的单元格以填补空缺。就像流水流入一个洞里。替换被删除单元格的单元格可以在下方,并且具有相同的设置。如果要完全消除设置,请使用.entirerow.delete,它会将该行删除并用下面的一行替换它。.entirecolumn.delete会删除列并用右边的列替换它。替换删除的单元格的任何单元格,都将应用这些单元格的设置和格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接