使用Excel VBA插入带格式的行

4
我有一个宏,根据用户在Excel 2007中的输入插入若干行。一切正常,但我仍然有一个小问题。我想复制上一行的完整格式。它只适用于行中的某些单元格。
以下是插入代码:
 Rows("B:B").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

能否更改它?

最好,美国


2
为什么不复制粘贴,然后使用 ClearContents?或者你可以简单地将格式复制/粘贴(录制一个宏并调整代码)。 - JMax
好的。首先复制,然后粘贴。谢谢。 - user366121
4个回答

5

我不确定您是如何插入行的,但如果您在现有行下方插入新行,则默认情况下它将采用上方行的格式。至少在使用以下语法时是这样的:

Range("B2").EntireRow.Offset(1, 0).Insert

在这个例子中,它将在B2下面插入一行,并且格式(比如,B2的行被突出显示为黄色)也将是黄色的。这可能与此类型的插入指定要在哪一行下方插入有关。

1

如果您不想从父范围继承格式,则使用.cells().rows(2).insert将继承格式,而.cells(2).insert则不会。


0
Dim j As Long, r As Range
j = InputBox("type the number of rows to be insered")

Set r = Range("A4")
Do
    Range(r.Offset(1, 0), r.Offset(j, 0)).EntireRow.Insert
    Set r = Cells(r.Row + j + 1, 1)

If r.Offset(1, 0) = "" Then Exit Do Loop

0

答案在第一条评论中。

新代码:

Rows(CStr(InsRowNumber - 1) & ":" & CStr(InsRowNumber - 1)).Copy
Rows(CStr(InsRowNumber) & ":" & CStr(InsRowNumber)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

我建议您编辑您的答案并附上您使用的代码,然后在延迟后接受它。这样,线程将被关闭(即已回答),并且它将帮助更多的用户找到此线程。如果SO帮助了您,请帮助SO。 - JMax
1
只想指出,您不必将一行引用为Rows(CStr(InsRowNumber - 1) & ":" & CStr(InsRowNumber - 1))。您可以简单地说Rows(InsRowNumber-1).Copy。 - Justin Self

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接