【发布时间】:2015-03-04 13:10:08
【问题描述】:
我发现我有类似的问题,但是我找不到包含我的两个查询的 VBA。我对 VBA 相当陌生,因此正在努力将两个代码组合成一个代码:
在包含文本“TTDASHINSERTROW”的行上方插入指定数量的行,并从上面的行复制格式和公式。
我的第一个代码插入了许多行并从上面复制公式,但基于“活动单元格”。
Sub insertRow()
Dim Rng, n As Long, k As Long
Application.ScreenUpdating = False
Rng = InputBox("Enter number of rows required.")
If Rng = "" Then Exit Sub
Range(ActiveCell, ActiveCell.Offset(Val(Rng) - 1, 0)).EntireRow.Insert
'need To know how many formulas To copy down.
'Assumesfrom A over To last entry In row.
k = ActiveCell.Offset(-1, 0).Row
n = Cells(k, 256).End(xlToLeft).Column
Range(Cells(k, 1), Cells(k + Val(Rng), n)).FillDown
End Sub
第二个代码基于对文本“TTDASHINSERTROW”的搜索插入一行。
Sub insertRow()
Dim c As Range
For Each c In Range("A:A")
If c.Value Like "*TTDASHINSERTROW*" Then
c.Offset(1, 0).EntireRow.Insert
End If
Next c
End Sub
任何将这些组合成单个代码的帮助,该代码可以在指定文本上方插入指定数量的行并复制格式和公式,我们将不胜感激。
更新
我想出了以下代码,它允许用户在运行宏时通过弹出窗口添加指定数量的行。该代码仍然需要一个活动单元格并从该单元格上方复制公式。
Sub InsertRow()
Dim d As Integer
d = Range("A:A").End(xlDown).Row
Dim c As Range
For i = d To 1 Step -1
If Cells(i, 1).Value Like "TTDASHINSERTROW" Then
Dim Rng, n As Long, k As Long
Application.ScreenUpdating = False
Rng = InputBox("Enter number of rows required.")
If Rng = "" Then Exit Sub
Range(ActiveCell, ActiveCell.Offset(Val(Rng) - 1, 0)).EntireRow.Insert
'need To know how many formulas To copy down.
'Assumesfrom A over To last entry In row.
k = ActiveCell.Offset(-1, 0).Row
n = Cells(k, 256).End(xlToLeft).Column
Range(Cells(k, 1), Cells(k + Val(Rng), n)).FillDown
End If
Next
End Sub
除了引用活动单元格的代码的第二部分之外,它是否可以找到带有“TTDASHINSERTROW”的单元格并从该行上方复制公式和格式?
很遗憾,我没有足够的代表来附上屏幕截图。
【问题讨论】:
-
欢迎来到 Stackoverflow。我对你的问题有一种似曾相识的感觉......
-
@bonCodigo:这是否意味着那个人在问这个问题之前看起来不太好?
-
@JLILIAman,宾果游戏!但是,鉴于
1.OP 发布了他/她尝试过的代码,2.表示I see there are similar questions to mine however I am unable to find...3.这就是他的详细信息,我会犹豫行使严格的投票权 /她在 SO 的第一篇文章。 -
我已经搜索过了。真的找不到任何不引用活动单元格的东西。我试过自己创建它,但没有运气。
-
@Justin,如果您在相邻的列和行数中有那个特定的字符串怎么办?这是否意味着您希望该函数向上、向下、向右和向左插入行?