Обновление значений в ячейках - PullRequest
0 голосов
/ 28 апреля 2020

Я изо всех сил пытаюсь выяснить, как обновить числовое значение в данной ячейке значением, которое конечный пользователь введет с помощью Application.InputBox. Я знаю, что в коде есть вопиющие ошибки, но поскольку я новичок в Excel VBA, мои навыки отладки еще не до конца и я не могу понять, как их исправить. Это то, что у меня есть:

Sub UpdateLinen()

Dim NewLinen As Integer
Dim InputBoxResult As Integer
Dim ExistingValue As Integer
Dim NewValue As Integer

    NewLinen = Application.InputBox(Prompt:="How many new Linen Bandages are being added?", Type:=1)
    NewLinen = InputBoxResult

    ExistingValue = Range("B4").Value
    NewValue = Application.WorksheetFunction.Sum(ExistingValue + InputBoxResult)
    Range("B4").Value = NewValue

End Sub

Диапазон ("B4") уже имеет числовое значение в ячейке, и идея заключается в том, что конечный пользователь нажмет кнопку (для которой я назначит макрос, когда он будет завершен) и введите числовое значение, которое будет добавлено к значению в диапазоне («B4»), чтобы дать новое числовое значение для этой ячейки. Кроме того, я хочу написать код так, чтобы конечный пользователь мог возвращать и обновлять числовое значение в этой ячейке столько раз, сколько ему нужно, просто щелкнув макрос кнопки и введя значение.

1 Ответ

2 голосов
/ 28 апреля 2020

Несколько комментариев здесь:

  • Скорее используйте Long значения типа данных вместо Integer (хорошая привычка для предотвращения проблем переполнения)
  • Вам не нужно WorksheetFunction.Sum здесь, чтобы добавить эти значения
  • Вы сразу же перезаписываете ввод своего пользователя с помощью NewLinen = InputBoxResult
  • Я знаю, вы сказали, что будет кнопка, но мне нравится иметь привычку по крайней мере явная ссылка на рабочий лист.
  • Кроме того, нет ничего плохого в том, чтобы записывать логи c в несколько строк, но на самом деле в этом нет ничего сложного и сложного, так почему бы не написать одну строку?

Могу ли я порекомендовать что-то вроде:

Sub UpdateLinen()

Dim NewLinen As Long
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Blad1")

NewLinen = Application.InputBox(Prompt:="How many new Linen Bandages are being added?", Type:=1)
ws.Range("B4") = ws.Range("B4") + NewLinen

End Sub
...