0

我正在寻找一种编写 VBA 脚本的方法,该脚本将使用当前月份的日期自动填充 sheet17.range("f14:aj14") 。日期格式需要为 mm/d/yyyy,我需要能够使用“FoundCell”方法使用此范围查找“日期”。我找到了这段代码并适应了我的需要,但它从下一行的单元格开始填充右侧的下一列。我已经尝试更改“偏移”数字并且无法让它填充我的单元格范围,并且由于我是 VBA 的新手,我有一个宏可以将工作表复制到新工作表,保存新工作表,然后清除内容range(f15:AN73) 的原始版本,我不知道让它在每个月的第一天凌晨 12:00 自动发生的代码。这是我的日期人口代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Sht As Worksheet
    Dim intDaysInMonth As Integer
    Dim i As Integer

    Set Sht = Worksheets("MAR") 'change to suit
    Target = Sht.Range("f14:aj14")
    intDaysInMonth = Day(DateSerial(Year(Now()), Month(Now()) + 1, 0))

    Target.Resize(intDaysInMonth, 1).ClearContents
    For i = 1 To intDaysInMonth
        Target.Offset(i - 0, 1) = DateSerial(Year(Now()), Month(Now()), i)
    Next i
    Set Sht = Nothing
End Sub

我只需要日期来填充我的 sheet17.range("f14:aj14") 而不是从 1 个单元格开始的右侧的下一列,然后是自动将工作表保存到新工作表并清除原始内容的代码sheet.range("f15:an73"). 任何帮助将不胜感激!先感谢您。

米歇尔

4

1 回答 1

0

这是您问题的日期填写部分的答案。而且,您需要将其放在常规模块中,而不是放在工作表模块中。

Sub myDates()

Dim Sht As Worksheet
Dim intDaysInMonth As Integer
Dim i As Integer
Dim Target As Range

Set Sht = Worksheets("MAR")   'change to suit
intDaysInMonth = Day(DateSerial(Year(Now()), Month(Now()) + 1, 0))

Set Target = Sht.Range("f14").Resize(, intDaysInMonth) 'set target to days count
Target(1).Resize(, 31).ClearContents 'clear all previous

For i = 1 To intDaysInMonth
    Target(i).Value = DateSerial(Year(Now()), Month(Now()), i)
Next i
Set Sht = Nothing

End Sub

但是为了使它更有用,您应该从另一个子调用它,并将工作表名称作为参数,以便您可以访问正确月份的工作表。然后它看起来像这样:

Sub myDates(ShtName As String)

Dim Sht As Worksheet
Dim intDaysInMonth As Integer
Dim i As Integer
Dim Target As Range

Set Sht = Worksheets(ShtName)   'change to suit
intDaysInMonth = Day(DateSerial(Year(Now()), Month(Now()) + 1, 0))

Set Target = Sht.Range("f14").Resize(, intDaysInMonth) 'set target to days count
Target(1).Resize(, 31).ClearContents 'clear all previous

For i = 1 To intDaysInMonth
    Target(i).Value = DateSerial(Year(Now()), Month(Now()), i)
Next i
Set Sht = Nothing

End Sub
于 2013-11-07T05:18:09.390 回答