Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用于添加具有特定标题的列并在所有行中填充默认值的宏_Excel_Vba_Macros - Fatal编程技术网

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

Excel 用于添加具有特定标题的列并在所有行中填充默认值的宏,excel,vba,macros,Excel,Vba,Macros,我需要在最后一个标题单元格旁边添加一个新列,并在新列中填入一些随机值,例如给定工作表中的“Cool!” 下面是我的宏: Sub sbInsertingColumns(sourceFile As String, Worksheet As String) Dim lastColName As String Dim LastColumn As Long With ActiveSheet LastColumn = Workbooks(sourceFile).Worksheets(

我需要在最后一个标题单元格旁边添加一个新列,并在新列中填入一些随机值,例如给定工作表中的“Cool!”

下面是我的宏:

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 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
我想这样说:

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 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