【问题标题】:ClearContents for constants but not formulasClearContents 用于常量但不是公式
【发布时间】:2015-12-05 01:37:17
【问题描述】:

我在 sheet1 上有一个范围 (N1:N12),我有一个代码可以复制并粘贴我在辅助 sheet2 上该范围的值。一切正常,无论如何,一旦我将它们复制到 sheet2 中,我不认为我想要另一个仅清除 N1:N12 范围内的值的按钮。当我想删除值时,我不知道如何将公式保留在该范围内。你有想法吗 ?我已经尝试过删除所有内容的普通宏,但这不是我想要的。

Sub Cancella() 
    Sheets("Foglio1").select 
    Range("N1:N12").clearcontents
End Sub

我用来复制的代码

Dim lastRow As Long
    Sheets("Training Analysis").Range("P1:R13").Copy

    lastRow = Sheets("Foglio1").Range("a65536").End(xlUp).Row

    Sheets("Foglio1").Range("A" & lastRow + 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True

【问题讨论】:

  • 你能澄清一下吗?您想在复制到Sheet2 后清除单元格N1:N12?你可以发布你的其他代码吗?还是您想清除N1:N12 的范围,但将公式保留在N1:N12 中(如果是这样,您能澄清一下您的意思吗??)
  • 是的,我想在复制到 sheet2 后清除单元格 N1:N12。这是我用来复制 {Dim lastRow As Long Sheets("Training Analysis").Range("P1:R13").Copy lastRow = Sheets("Foglio1").Range("a65536").End(xlUp ).Row Sheets("Foglio1").Range("A" & lastRow + 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True'}
  • (您可以将该代码添加到您的 OP 中,并使用 {} 标签标记为代码吗?)
  • 是的,很抱歉。在上面你可以找到我用于复制的代码,它引用了不同的单元格,但我只需要机制是如何工作的。
  • 否,因为当我点击清除内容时,它会清除所有内容,甚至是公式。

标签: vba excel


【解决方案1】:

替换:

Range("N1:N12").clearcontents

与:

For i = 1 To 12
   If Not Cells(i, "N").HasFormula Then Cells(i, "N").ClearContents
Next i

【讨论】:

  • 他想做什么?只清除没有公式的单元格?我不太明白他的问题。
  • @BruceWayne 我以为他/她想保留公式。
  • 是的,我尝试运行此代码,但它不会删除公式中的值。
【解决方案2】:

Range.SpecialCells method 的一个子集以xlCellTypeConstants 为目标。这可以进一步细分为 xlNumbers、xlTextValues、xlErrors、xlLogical 或它们的组合。

With WorkSheets("Foglio1")
    .Range("N1:N12").SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
End With

相反,包含公式的单元格可以类似地使用xlCellTypeFormulas 子集定位。

【讨论】:

  • 使用此代码时出现错误,提示找不到单元格。
  • 假设您在 Foglio1 工作表上输入了 N1:N12 范围内的数字,该代码已经过测试并且可以正常工作。如果没有看到一些示例数据,很难提供更多信息。
  • 我得到了该范围内的数字,但是当我运行宏时,它给了我一个运行时错误“1004”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 2011-04-19
  • 1970-01-01
相关资源
最近更新 更多