Создайте макрос 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
Другие вопросы по тегам