使用VBA删除选定列的内容

我有一个Excel文件,我手动删除整个列的内容不是按顺序。 这需要大量的手动工作,因为某些行在列中包含空白值。 所以,我正在尝试编写VBA脚本来删除除第一行(标题)之外的所选列的内容,

到目前为止,我一直在使用Google和阅读堆栈溢出文章…这是我到目前为止完成的工作

Sub clear_contents() Dim currentColumn As Integer Dim columnHeading As String ActiveSheet.Columns("D").Delete For currentColumn = ActiveSheet.UsedRange.Columns.Count To 1 Step -1 columnHeading = ActiveSheet.UsedRange.Cells(1, currentColumn).Value If InStr(1, ActiveSheet.UsedRange.Cells(1, currentColumn).Value, _ "0cc17562-08c1-4f99-a234-ce6fa0cc5be4", vbBinaryCompare) = 1 Then ActiveSheet.Columns(currentColumn).Delete End If Next End Sub 

这个脚本正在做的是删除具有指定标题值的列。 这是接近..但不是真正的我想要做的

  1. 我想select列而不input标题名称。就像select列C,D,G,F然后删除。
  2. 另外,我仍然需要保留带有标题的列。 此脚本完全删除整个列

我是VBA的小菜鸟,所以我需要很多的帮助! 先谢谢你。

正如我已经理解你的请求,你不需要.Delete函数,只是.ClearContents 。 这个macros循环遍历每个选定的列(不pipe你select整列还是只select几行),find最后占用的行,然后清除第二行和最后一行之间的所有内容,所以第一行的标题将保持不变。

 Sub clear_contents() Dim Col As Integer Dim LastRow As Long Dim Sel As Range, rng As Range Set Sel = Selection For Each rng In Sel.Columns Col = rng.Column LastRow = Cells(Rows.Count, Col).End(xlUp).Row If LastRow < 2 Then LastRow = 2 Range(Cells(2, Col), Cells(LastRow, Col)).ClearContents Next End Sub