【发布时间】:2016-03-13 01:27:15
【问题描述】:
我有一张表,其中包含带有以下文本 (D#) 的行:
- D1
- D2
- D3
我需要在最后一个条目“D3”下添加一个新行“D4”(将下一个整数附加到字母 D)。当然,下次新条目将是“D5”等...... 如何使用 VBA 脚本或宏来做到这一点?
【问题讨论】:
-
录制一个宏做你想做的事。然后查看您记录的内容,并将其清理干净。
我有一张表,其中包含带有以下文本 (D#) 的行:
我需要在最后一个条目“D3”下添加一个新行“D4”(将下一个整数附加到字母 D)。当然,下次新条目将是“D5”等...... 如何使用 VBA 脚本或宏来做到这一点?
【问题讨论】:
在 D 列中输入以下工作表公式并将其扩展到整个区域:
="D" & ROW()
您可以通过 Excel VBA 宏将其自动化,如以下代码 sn-p 所示,该代码使用工作表公式填充 Range("D1:D20"):
Range("D1:D20").Formula = "= ""D"" & Row()"
对于您的特定任务,您可以考虑使用宏记录器,然后“润色”VBA 代码。
希望这会有所帮助。
【讨论】:
使用它来查找工作表上的最后一行:
ColNum = 4
LastRow = ActiveSheet.Cells(Rows.Count, ColNum).End(xlUp).Offset(Abs(ActiveSheet.Cells(Rows.Count, ColNum).End(xlUp).Value <> ""), 0).Row
LastRow 的值将是工作表中下一个打开的行。
要在代码中引用单元格:
ActiveSheet.Range("D" & Trim(Str(LastRow))).Value = "YourValue"
或带索引:
ActiveSheet.Range(Cells(LastRow, 4), Cells(LastRow, 4)).Value = "YourValue"
【讨论】:
ActiveSheet,这可能并不总是操作员将使用的工作表。在后一种情况下,ws 是保存应该使用的工作表对象的变量lastRow = ws.Cells(ws.Rows.Count, nCol).End(xlUp).Offset(Abs(ws.Cells(ws.Rows.Count, nCol).End(xlUp).Value <> ""), 0).row
这会在给定工作表的给定列中的下一个单元格中填充一个左数字部分增加一的值
Sub FillRow(ws As Worksheet, nCol As Long)
Dim lastRow As Long
With ws
lastRow = .Cells(.Rows.Count, nCol).End(xlUp).row
With .Cells(lastRow, nCol)
.Offset(1).Value = "D" & Right(.Value, Len(.Value) - 1) + 1
End With
End With
End Sub
【讨论】: