在VBA

时间:2018-04-16 16:12:44

标签: excel vba excel-vba

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

Spreadsheet with dates in columns

我正在尝试编写一个宏(最终是一个按钮),它将创建一个新列,当前日期作为第一个空列中的标题,即4月旁边它会说May如果我在5月运行它。

这是我到目前为止所尝试的,但它不起作用:

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 个答案:

答案 0 :(得分:3)

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

ws.Cells(2, .Columns.Count)

然后,当我们在第2行的最后一个单元格中时,我们使用.End(xlToLeft)属性一直向同一行中的左侧查找包含数据的最后一个单元格,然后将列索引号存储在变量LastCol因为我们需要它。

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

正如我们所说LastCol它不是实际的下一个空列,所以我们在LastCol变量中添加1来定位下一个空列。

最后,我们将Date_in字符串值放在第2行的下一个空列

.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

答案 1 :(得分:0)

以下内容如何:

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