【问题标题】:Clear all cells from a certain range that starts from the next blank cell in Column A清除从 A 列中下一个空白单元格开始的特定范围内的所有单元格
【发布时间】:2020-02-06 21:15:51
【问题描述】:

我正在尝试在 excel 中编写一些 VBA,它将清除从 A 列中的下一个空单元格开始的所有单元格(数据从 A2 开始)。例如,如果 A5 为空白,那么我希望 A5:P300 全部被清除(如所有公式和数据都消失了)。依此类推...所以如果 A20 为空白,则它会从 A20:P300 中删除所有内容..

我将如何写这篇文章?我还需要它来引用活动工作簿,但需要一个名为 ("Develop") 的特定工作表。

感谢您提供的任何帮助。

Sub Clear()

Dim x As Worksheet
Dim rng, cell As Range

Set x = ThisWorkbook.Worksheets("R&DCosts(2)")

Set rng = x.Range("A2:A340").Cells(Rows.Count, 1).End(xlUp)

  For Each cell In rng
   If cell.Value = "" Then

      x.Range(cell.Address & ":P350").ClearContents
      End

    End If

  Next cell

 End Sub

【问题讨论】:

  • SO 不是免费的代码编写服务,您必须自己编写一些代码。您首先要做的是:激活sheets("Develop") 并创建一个for loop 以查找空单元格并在出现时删除范围的其余部分。如果遇到问题,请使用您编写的代码编辑您的问题。
  • @Daghan 在上面添加了我的代码 - 这是正确的
  • @Daghan 我很抱歉,我确实写过代码,但我似乎无法理解它
  • @Daisy:请尝试我发布的代码。它应该以非常快的方式完成(我理解)你需要的事情......

标签: excel vba


【解决方案1】:

请试试这个代码:

Sub clearRange_Bis()
  Dim sh As Worksheet, firstEmpt As Long
  Set sh = ThisWorkbook.Worksheets("R&DCosts(2)")
  firstEmpt = sh.Range("A1").End(xlDown).Row + 1
    If firstEmpt > 1000000 Then
        sh.Range("A2:P300").Clear
    Else
        sh.Range("A" & firstEmpt  & ":P300").Clear
    End If
End Sub

【讨论】:

  • 我必须承认,当您说“如果 A5 为空白,那么我希望 A5:P300 全部被清除”时,我认为您犯了一个错误,您的目标是从 A5 清除到 P5?我的假设正确吗?否则,在我看来,您的请求看起来没有太大意义。但谁知道呢?如果你真的需要你所要求的,代码会简单得多,我的代码将根据我的假设工作......
  • No No - 我需要从 A5 中清除所有内容:P300 是 A5 是空白的......这是正确的......我使用了你的代码并且没有收到任何错误,但没有发生任何事情,因为没有清除
  • 清除 A 单元格为空的行上从 A 到 P 的所有范围。我会发布一个更简单的变体来做你想做的事......
  • @Daisy:那么,请尝试更新的代码。不要忘记刷新页面...
  • firstEmpt = sh.Range("A2:A" & lastR).SpecialCells(xlCellTypeBlanks).Cells(1, 1).Row... 错误提示找不到单元格...我的当前代码在那里复制数据,然后我想调用 clear 函数来清除其他所有内容..A 列中肯定有值
【解决方案2】:

更简单的解决方案

Option Explicit

Sub Clear()

 Dim x As Worksheet
 Dim rng, cell As Range

 Set x = ThisWorkbook.Worksheets("RDCosts(2)") ' you cannot use "&"

 Set rng = x.Range("A2:A340", Cells(Rows.Count, 1).End(xlUp))

 For Each cell In rng
    If cell.Value = "" Then

        x.Range(cell.Address & ":P350").ClearContents
        End

    End If

 Next cell

 End Sub

【讨论】:

  • 行:Set rng = x.Range("A2:A340", Cells(Rows.Count, 1).End(xlUp)) ... 我收到 1004 错误消息... “Object_Worksheet 的方法‘范围’失败
  • 该行来自您发布的代码,我没有编辑,之前是否有效?从这里开始工作:)
  • 不,不幸的是它之前也没有工作,有同样的错误信息
  • 尝试:设置rng = x.Range("A2:A340")
  • 我很失望认为这会起作用,但我仍然收到相同的错误消息
猜你喜欢
  • 1970-01-01
  • 2017-03-31
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2022-09-23
  • 2017-05-25
  • 1970-01-01
相关资源
最近更新 更多