制作一个要求一天的 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 宏,然后将其插入下一个打开的单元格的主要内容,如果未能解决你的问题,请参考以下文章