在VBA中创建新的列标题

在VBA中创建新的列标题,vba,excel,Vba,Excel,我有一个电子表格,如下所示: 我正在尝试编写一个宏(最终是一个按钮),它将创建一个新列,在第一个空列中以当前日期作为标题,也就是说,在四月的旁边,如果我在五月运行它,它将显示五月 这是我迄今为止尝试过的,但不起作用: Sub column() Dim Input_ID As String, Date_in As String Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Facebook") Date_in = Format(Now,

我有一个电子表格,如下所示:

我正在尝试编写一个宏(最终是一个按钮),它将创建一个新列,在第一个空列中以当前日期作为标题,也就是说,在四月的旁边,如果我在五月运行它,它将显示五月

这是我迄今为止尝试过的,但不起作用:

Sub column()

Dim Input_ID As String, Date_in As String
Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("Facebook")
Date_in = Format(Now, "MMM-YY")

With ws.Range("2" & ws.Columns.Count).End(xlUp)
    If .column >= c Then .Offset(1, 0).Value = Date_in Else Exit Sub
End With

End Sub

首先,我们需要找到工作表中最后一个填充的单元格,在这种情况下,我们将转到第2行的最后一个单元格:

ws.Cells(2, .Columns.Count)
然后,在第2行的最后一个单元格上,我们使用
.End(xlToLeft)
属性一直到同一行的左侧,以查找包含数据的最后一个单元格,然后根据需要将列索引号存储在变量
LastCol

LastCol = .Cells(2, .Columns.Count).End(xlToLeft).column
正如我们所说的,
LastCol
不是实际的下一个空列,因此我们在
LastCol
变量中添加1以指向下一个空列

最后,我们将
Date_放入第2行的下一个空列中的
string值中

.Cells(2, LastCol + 1) = date_in
完整代码:

Option Explicit

Sub column()

Dim Input_ID As String, date_in As String
Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("Sheet1")
date_in = Format(Now, "MMM-YY")

With ws

LastCol = .Cells(2, .Columns.Count).End(xlToLeft).column
.Cells(2, LastCol + 1) = date_in

End With

End Sub

那么以下内容如何:

Sub AddColumn()
    Dim ws As Worksheet: Set ws = Sheets("Facebook")

    ws.Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    ws.Range("C1").Value = Format(Now(), "MMM-YY")

End Sub

“它不起作用”是一个相当模糊的问题陈述。你能澄清一下吗?既然你是新来的,你可能想阅读meta,以确保你问的是关于特定编码问题的有用问题。既然OP是VBA的新手,这是一个相当模糊的“请为我做这项工作”的问题,那么至少对你的解决方案做一点解释不是更有帮助,与其鼓励复制意大利面编码,而不教授任何东西?因为OP是VBA的新手,这是一个相当模糊的“请为我做这项工作”的问题,至少对您的解决方案做一点解释不是更有帮助吗,我同意你@Mathieu Guindon补充的解释,希望这对OP和每个人都是清楚的。