制作一个要求一天的 Excel 宏,然后将其插入下一个打开的单元格

Posted

技术标签:

【中文标题】制作一个要求一天的 Excel 宏,然后将其插入下一个打开的单元格【英文标题】:Make an Excel Macro that asks for a day and then insert it into the next open cell 【发布时间】:2017-08-13 12:36:22 【问题描述】:

我正在尝试制作一个要求一天的 Excel 宏,然后将其插入到下一个打开的单元格中。这是我尝试使用的代码。

Sub Button7_Click()
    Dim AddName As String
    AddName = InputBox("Date: Month/Year", "Add Date", "01/00")
    Sheets("Sheet2").Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    Range("A1").Value = AddName
End Sub

将我输入的日期放入单元格 A1 中,无论其中有什么内容,然后选择 A 行中的下一个打开的单元格。

我觉得答案很简单,但我想不通!

【问题讨论】:

【参考方案1】:

见How to avoid using Select in Excel VBA macros。

Sub Button7_Click()
    Dim AddName As String
    AddName = InputBox("Date: Month/Year", "Add Date", "01/00")
    With Worksheets("Sheet2")
        .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0) = AddName
    End With
End Sub

您最初的问题是,在从 A 列中最后使用的单元格向下选择一个单元格后,您没有使用该选择来写入值;只是把它写进A1。代码的最后一行可以更改为 Selection = AddName,但最好尽可能避免使用 select 和 activate。

您可能想查看Application.InputBox。 Excel Application.InputBox Method 与标准 VBA InputBox function 略有不同,它允许指定返回类型。

【讨论】:

【参考方案2】:

这是另一个:

Sub Button7_Click()
    Dim AddName As String
    AddName = InputBox("Date: Month/Year", "Add Date", "01/00")
    Sheets("Sheet2").Select
    Range("A" & ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row + 1) = AddName
End Sub

【讨论】:

使用 ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row 的另一个好处是它强制 excel 清理已删除单元格的任何旧内存位置

以上是关于制作一个要求一天的 Excel 宏,然后将其插入下一个打开的单元格的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL加载宏如何制作成安装文件。要详细过程,谢谢!!!

Java中获取去年最后一天的日期

Excel宏比较两个工作表中的两列并插入行值

EXCEL中怎么提取一行中某些列的数据出来制作图表

单击 Excel 中的超链接会在运行宏之前清除范围选择

用户使用宏在excel中插入图片