首页 > 解决方案 > 公式自动填充日期列适用于工作表但不适用于表单

问题描述

只要在下一列中输入内容,我就会使用公式自动填充日期。

=If(B9="","",IF(A9="",NOW(),B9))

完成此操作后,我将公式应用于单元格,直到第 48 行。现在,当在源中输入任何内容(ref 的屏幕截图)时,日期都会自动填充。像魅力一样工作,一切都很好。

由于使用上述公式,设计了一个用于输入数据减去日期的用户表单。应该工作,但它没有。日期为1/1/1900. 稍微偏离了一个世纪+18 年,没什么大不了的,哈哈。

您可以在我用于数据输入的屏幕截图中看到的代码。最初我将工作表设置为 48 行。由于在使用用户表单时,数据“仅”在第 48 行之后输入,因此表格不断扩展。我已经多次删除了 48 之后的行,以至于它不再有趣了。

现在 VBA 代码以某种方式关闭或不完整,这使得整个事情变得有趣。我怎样才能解决这个问题?

PS 使用 Excel 2016

表单上添加数据按钮的代码。为此,数据不会从第 9 行 B 列开始填充。它从第 48 行开始。

Private Sub CommandButton1_Click()

Dim dcc As Long
Dim abc As Worksheet

Set abc = Worksheets("January2019")
dcc = Sheets("January2019").Range("A" & Rows.Count).End(xlUp).Row

With abc

.Cells(dcc + 1, 2).Value = Me.TextBox1.Value
.Cells(dcc + 1, 3).Value = Me.TextBox2.Value
.Cells(dcc + 1, 4).Value = Me.TextBox3.Value
.Cells(dcc + 1, 5).Value = Me.TextBox4.Value
.Cells(dcc + 1, 6).Value = Me.TextBox5.Value


End With

日期代码。

=If(B9="","",IF(A9="",NOW(),B9))

如果手动输入数据,日期自动工作,但是当使用用户表单时,日期输入为 1/1/1900 并且上面提到该条目是在第 48 行之后进行的。

我希望/针对此代码和用户表单的目标是:

在用户表单中没有日期选项。我在第 9 行添加了日期公式,然后将其拖到第 48 行。使用户表单减去日期字段,因为一旦输入数据,日期就会自动填充。并且,数据从第一个可用行 B9 开始填充。所以现在我迷路了,因为我不知道故障出在哪里或发生了什么,这使得这个添加随机行并且日期很远。

标签: exceldateautofill

解决方案


您可以替换您的公式,只需使用您当前的用户表单来添加今天的日期。

Private Sub CommandButton1_Click()

    Dim dcc As Long
    Dim abc As Worksheet

    Set abc = Worksheets("January2019")
    dcc = Sheets("January2019").Range("A" & Rows.Count).End(xlUp).Row

    With abc

        .Cells(dcc + 1, 1).Value = Date
        .Cells(dcc + 1, 2).Value = Me.TextBox1.Value
        .Cells(dcc + 1, 3).Value = Me.TextBox2.Value
        .Cells(dcc + 1, 4).Value = Me.TextBox3.Value
        .Cells(dcc + 1, 5).Value = Me.TextBox4.Value
        .Cells(dcc + 1, 6).Value = Me.TextBox5.Value

    End With

您无需在用户表单中为要输入的日期添加空格。

...如何从用户表单连接下拉列表,以便在选择 2019 年 2 月时,名为 2019 年 2 月的工作表获取数据...

这应该有效:

Dim abc As Worksheet

Set abc = Worksheets(me.ComboBox1.Value)

推荐阅读