Создайте макрос Excel, который запрашивает день, а затем вставьте его в следующую открытую ячейку.
Я пытаюсь создать макрос 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.
Я чувствую, что ответ так прост, но я не могу понять это!
2 ответа
См. Как избежать использования Select в Excel VBA макросов.
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 вы не использовали этот выбор для записи значения; вместо этого просто записал это в А1. Последняя строка вашего кода может быть изменена на Selection = AddName
но лучше по возможности избегать выбора и активации.
Вы можете посмотреть в Application.InputBox
, Метод Excel Application.InputBox несколько отличается от стандартной функции VBA InputBox тем, что позволяет указать тип возвращаемого значения.
Вот еще один:
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