如何在Excel VBA中插入并拖动公式直到最后一行

迪帕克

在此处输入图片说明我想在 E 行的末尾插入仅计算每月第一天(1.Nov.2017、1.Dec.2017 等)的公式,并将其拖到等于 D 行值的末尾。我使用了下面的代码但不起作用。

仅当 A:D 有数据时,我才需要“E12 : E21”中的值作为 01.Nov.2017。但是 A:D 会自动计算。下个月 A22 :D24 将包含数据。所以我需要“E22:E24”中的值作为 01.Dec.2017。帮我

Private Sub CommandButton1_Click()

Range("E" & Rows.Count).End(xlUp).Offset(1, 0).Select
Run FirstDayInMonth()
Selection.AutoFill Destination:=Range("D" & Column.count).End(xlUp).Offset(0, 1), Type:=xlFillCopy

End Sub

Function FirstDayInMonth(Optional dtmDate As Date = 0) As Date
Range("E" & Rows.Count).End(xlUp).Offset(1, 0).Select
    If dtmDate = 0 Then
       dtmDate = Date
    End If
FirstDayInMonth = DateSerial(Year(dtmDate), _
Month(dtmDate), 1)
End Function
马尔钦·施泽涅茨

起初,您过度使用 Select。它应该仅在一种情况下在代码中使用 - 如果您希望宏在最后指向某个单元格。例如,请参阅这篇文章
其次,避免智能 UI 反模式。什么是智能 UI,您可以在这里阅读

第三,我认为你应该在这里使用 sub,而不是 function。

Sub FillFirstDay(Optional dtmDate As Double = 1)

Dim ws As Worksheet
Dim rng As Range
Dim lastRow As Long, firstRow As Long

Set ws = ActiveSheet 'You should assign your sheet here, for example by name

'Then we find our range in E column
With ws
    lastRow = .Range("D" & .Rows.Count).End(xlUp).Row
    firstRow = .Range("E" & .Rows.Count).End(xlUp).Row + 1
    Set rng = Range(.Range("E" & firstRow), .Range("E" & lastRow))
End With

If firstRow >= lastRow Then Exit Sub

'And finally add first date of month
With rng
    .Value = DateSerial(Year(dtmDate), Month(dtmDate), 1)
    .NumberFormat = "yyyy-mm-dd" 'or whatever date format do you like
End With

End Sub

If firstRow >= lastRow Then Exit Sub 行在 E 列中的日期已经填满时终止该过程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Excel-Vba:直到最后一行不起作用之前应用公式的代码

如何使VBA重复创建Excel图表系列,直到最后一行数据?

Excel 2016将新表行插入到最后一行弄乱了公式

Excel VBA公式填充到最后一行,不适用于非常最后一行

如何在VBA Excel中将公式填充到列中的最后一行?

Exce VBA如何生成从特定行开始到最后一行结束的行数?公式有缺陷

在公式 Excel 中动态引用最后一行

找到一行中的最后三个单元格剪切并粘贴到最后三列excel vba

Excel无法正确找到最后一行

如何通过在一行中搜索一定范围的列,直到在VBA中包含文本的最后一行来删除重复项?

如何在最后一行的右边输入公式

如何在不将列表另存为文件的情况下循环循环列表(读取每一行直到最后)?

如何通过在一行中搜索一定范围的列来删除重复项,直到VBA中最后一行包含文本?

仅在Excel中为最后一列到最后一行和最后一行到最后一列为单元格着色

列中每一行的Excel VBA cell.Formula(就像我将公式向下拖动一样)

下一行的 Excel VBA 公式

VBA Excel在循环创建的最后一行之外添加值和公式

如何在MS Excel中忽略过滤器建议中的最后一行?

我如何在RowDataBound的gridview中找到最后一行

如何在Microsoft Flow中从Excel Online检索最后一行?

Excel VBA范围,直到最后一个可用单元格

如何从工作簿 A 的 2 个单元格复制数据并复制到单元格中的工作簿 B,以及如何开始 for 循环直到最后一行/列

如何粘贴到最后一行而不包括第一行(标题)?

如何在Excel for Mac(2011)中通过键盘插入一行

如何在Excel中拖动的每一行将单元格引用增加7行

Excel VBA:如何在表的最后一行的第一个单元格中粘贴一个值?

如何从单独的Excel工作表VBA中删除最后一行

VBA如何运行代码,直到达到最后一个max函数

如何在现有的csv文件中写入新行而不将其添加到最后一行?