【发布时间】:2018-08-09 09:16:49
【问题描述】:
我有一个命名范围。我正在通过代码插入一个新行并调整命名范围的大小。 有些列包含公式,有些列包含值。 我想从上面的单元格中复制公式。 以下是我的代码:
Sub InsertRow()
Dim lrInputRange As Long
Set wbMacro = ThisWorkbook
Set wsInput = wbMacro.Sheets("INPUT")
'Insert new row at bottom
lrInputRange = wsInput.Range("Input_Range").Rows.Count
wsInput.Rows(lrInputRange + 1).EntireRow.Insert shift:=xlUp
wsInput.Rows(lrInputRange).EntireRow.Copy
wsInput.Rows(lrInputRange + 1).PasteSpecial xlPasteFormats
wsInput.Rows(lrInputRange).EntireRow.Copy
'Here I want to paste only those cells that contains Formulas
Application.CutCopyMode = False
'Resize the range
ThisWorkbook.Names.Add Name:="Input_Range", _
RefersTo:=Range("Input_Range").Resize(Range("Input_Range").Rows.Count + 1)
End Sub
【问题讨论】:
-
看起来您正在粘贴
xlPasteFormats,而不是xlPasteFormulas。目前尚不清楚您要整体完成什么。请查看他的tour(您将获得您的第一个徽章!)以及“How to Ask”。请参阅help center 了解有关本网站主题的更多信息,另外重要的阅读内容是如何创建minimal reproducible example。你可以edit你的问题来澄清你有什么数据(用例子),你正在尝试做什么,以及你已经尝试过什么和**你卡在哪里“。更多tips here来自该网站的顶级用户。 -
一个值是一个公式的输出,但只有当单元格中有一个公式时。如果不是,则 Excel 的属性值和公式是相同的。这意味着你想要点的东西不能像你想要的那样完成。粘贴公式也会粘贴值。解决方案:恐怕您需要循环选择中的所有单元格,检查它们是否以
=开头,然后仅复制这些单元格。 -
我也想保留格式,所以我使用 xlPasteFormats。 xlPasteFormulas 不起作用。它也会复制那些带有值的单元格。
标签: excel vba formulas named-ranges