如何解决Excel VBA-在下面插入一行,复制公式和格式,然后在选择的列中插入特定的默认数据
我在Excel中有一个相当大的数据库。手动输入大约一半的列数据。一个问题困扰了我一段时间。 我用手插入行。 我手动复制公式。容易出错。 我手动设置格式。 工作表相当复杂。
我试图自动执行该过程,可惜总是有一些错误或其他错误。
Sub InsertRow()
ActiveCell.Offset(1).EntireRow.Insert Shift:=xlDown,CopyOrigin:=xlFormatFromRightOrAbove
ActiveCell.EntireRow.Copy
ActiveCell.Offset(1).EntireRow.PasteSpecial xlPasteFormats
ActiveCell.Offset(1).EntireRow.PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
End Sub
这似乎并不复制公式。以及如何将默认值放在特定列中?
感谢所有帮助。
解决方法
这是您的问题的解决方案。将代码安装在要插入行的工作表的代码模块中。它是工作簿中预先存在的模块之一,以选项卡命名。如果要对多个工作表执行相同的操作,请在每个适用的代码模块中安装该过程的版本。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
Const TriggerClm As String = "A" ' change to suit
Const FirstDataRow As Long = 2 ' change to suit
Dim Rng As Range
Set Rng = Cells(Rows.Count,TriggerClm).End(xlUp).Offset(1)
With Target
If (.Address = Rng.Address) And (.Row > FirstDataRow) Then
Rows(.Row - 1).Copy ' copies from last used row
' Rows(FirstDataRow).Copy ' copies from FirstDataRow
Rows(.Row).Insert Shift:=xlDown
On Error Resume Next
Rows(.Row - 1).SpecialCells(xlCellTypeConstants).ClearContents
Application.CutCopyMode = False
Cancel = True
End If
End With
End Sub
这将发生。当您双击单元格时,代码模块将捕获,并且上面的过程将对该动作做出响应。如果双击是在列A中最后使用的单元格下方的空白单元格(触发器),则将在该点插入空白行。它将包含它从工作表上方的行或第一行(FirstDataRow)复制的所有格式和公式。
这也定义了所需的设置。您可以指定“ 2”以外的触发器“ A”和FirstDataRow,并且必须在两个要复制的源之间进行选择,以禁用您不想使用的源。请阅读代码中的注释。
经过多年的动摇,我现在在大多数项目中都倾向于使用最后一行而不是第一行。我还通常添加代码以在需要时插入日期,通常在触发器中。
您可能熟悉双击以切换到单元内编辑的原始功能。当插入一行时,此功能被取消。但是,如果您取出Cancel = True
,则该代码将在新单元格中以“编辑”模式停止。
如果要将其保留为模块中的宏,则为以下代码。并不是说excel复制“公式”时也会复制值。我还添加了留置权,向您展示如何将第3列更改为5
Sub InsertRow()
Dim CurRow As Range
Dim NewRow As Range
ActiveCell.EntireRow.Insert
Set CurRow = ActiveCell.EntireRow.Offset(1)
Set NewRow = ActiveCell.EntireRow
CurRow.Copy
NewRow.PasteSpecial Paste:=xlPasteFormulas
NewRow.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
NewRow.Columns(3) = 5
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。