用于添加具有特定标题的列并在所有行中填充默认值的macros

我有一个要求在数据的最后一个标题单元旁边添加一个新列,并用一些随机值填充新列,说:“酷!” 在给定的工作表中。

以下是我的macros:

Sub sbInsertingColumns(sourceFile As String, Worksheet As String) Dim lastColName As String Dim LastColumn As Long With ActiveSheet LastColumn = Workbooks(sourceFile).Worksheets(Worksheet).Range("A1").End(xlToRight).Column End With Dim nextCell As Integer nextCell = Val(LastColumn) + Val(1) lastColName = Replace(Replace(Cells(1, nextCell).Address, "1", ""), "$", "") Workbooks(sourceFile).Worksheets(Worksheet).Range(lastColName & 1).Value = "New Header" MsgBox "New Column has been added : [ " & lastColName & 1 & "]" End Sub 

添加值:

 Sub Add() Dim cellVal As String Dim cell As Range cellVal = .Range("E") For Each cell In Sheets("Sheet1").Range("E:e").SpecialCells(xlCellTypeConstants, xlNumbers) cell.Value = "Cool !" Next cell End Sub 

我可以添加一个新的列,但是上面添加新列的逻辑不起作用。 任何人都可以请帮我。 谢谢你的时间!

 Sub sbInsertingColumns(sourceFile As String, Worksheet As String) Dim sht As Worksheet Set sht = Workbooks(sourceFile).Worksheets(Worksheet) With sht.Range("A1").End(xlToRight).Offset(0, 1) Application.Intersect(sht.UsedRange.EntireRow, .EntireColumn).Value = "Cool !" .Value = "New Header" End With End Sub 

我会去如下:

 Sub sbInsertingColumns(sourceFile As String, sheetName As String, headerName As String) With Workbooks(sourceFile).Worksheets(sheetName).UsedRange With .Columns(.Columns.Count).Offset(, 1) .Value = "Cool !" .Cells(1, 1) = headerName End With End With End Sub 

被一些“主”子使用如下:

 Sub main() sbInsertingColumns ActiveWorkbook.Name, ActiveSheet.Name, "newheader" End Sub 

你也可以缩短你的参数列表,如下所示:

 Sub sbInsertingColumns(ws As Worksheet, headerName As String) With ws.UsedRange With .Columns(.Columns.Count).Offset(, 1) .Value = "Cool" .Cells(1, 1) = headerName End With End With End Sub 

并像下面这样称呼它

 Sub main() sbInsertingColumns ActiveSheet, "newheader" End Sub