Вот как бы я перестроил ваш код.Обратите внимание, что код не перепрыгивает отсюда туда из-за экземпляров GoTo
.Теперь вы можете следовать логике от начала до конца, не пропуская ни одной строки.Это имеет большое значение для удобочитаемости, которая помогает с отладкой, изменениями в будущем и написанием вашего сценария в первую очередь.
Вы можете добавить Do Loop
, если хотите представить опцию, чтобы продолжать пробовать имена, пока они не введут одно из ваших имен действий.Вам следует поискать этот метод, и если вы решите внедрить его и у вас возникнут какие-либо проблемы, опубликуйте новый вопрос со своим кодом и проблемой!
Вот несколько случайных ссылок на эту тему, которые должны помочь вам начать работу., Здесь или здесь
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update sheet name
Dim mm As String, Person As Range, Amount As Range
Set Person = ws.Range("B6:B148")
Set Amount = ws.Range("C6:C148")
mm = InputBox("Enter the name of the sales person")
Select Case mm
Case "Jack", "Heather", "Jeff", "Mike", "Marty", "Peter", "Jack", "Lisa"
ws.Range("H13") = mm
ws.Range("H14") = Application.WorksheetFunction.SumIfs(Amount, Person, mm)
ws.Range("H15") = Application.WorksheetFunction.AverageIfs(Amount, Person, mm)
ws.Range("H16") = Application.WorksheetFunction.Minifs(Amount, Person, mm)
ws.Range("H17") = Application.WorksheetFunction.Maxifs(Amount, Person, mm)
Case Else
MsgBox "Invalid Entry. Please re-run macro to try again"
End Select
End Sub