Image of the SpreadSheet Я создаю трекер Excel для своей работы, который определяет, когда кто-то находится в пределах вторичной и первичной зон, чтобы быть продвинутым до следующего ранга. Я начал с Excel только, но это было слишком ограничено, поэтому я решил попробовать VBA, которого я никогда раньше не использовал. В настоящее время у меня есть сценарий, который читает, что представляет Ранг текущего человека, а затем рассказывает мне о днях, которые они имеют от Даты Ранга, до того дня, когда они будут в первичной или вторичной зонах.Применить макрос VBA через различные ячейки?
Я могу сделать это только для определенных ячеек, и мне нужно вручную ввести дату их автоматической даты продвижения. Есть ли способ применить один и тот же код по всему листу без необходимости вручную изменять ячейки. Поэтому, если B2 содержит ранг «SPC», тогда F2 будет иметь дни до тех пор, пока индивид в этой строке не будет находиться в первичной зоне для «SGT», и если B3, например, содержит ранг «PFC», тогда F3 будет показывать дни, пока индивидуум находится в Первичной зоне для «SPC» и так далее.
Function Formula()
Workbook.Sheets("Sheet1").Range("F2").Formula = "=DATEDIF(""2/24/2017"",Today(),""d"")"
End Function
Это что-то похожее на Макросы. Я не работаю, поэтому я точно не знаю.
Кодекс для самого листа что-то вроде
Sub Workbook_Change(ByVal Target As Range)
macroName As String
If macroName = "PFC" Then
Application.Run Formula()
ElseIf macroName = "SPC" Then
Application.Run Formula2()
EndIf
End Sub
Я забыл, что еще есть, но он работает только для специально Row 2, и я хотел бы, чтобы применить его к каждой строке соответственно. B3 & F3, B4 & F4 и т. Д. Другие вещи, которые, как я думаю, я могу выяснить самостоятельно, будут автоматически корректировать окончание первичной зоны на основе даты ранжирования, а не делать ее ручной.
Показать код !!! <3 –
Также вы можете найти функцию DateAdd, которая поможет вам автоматизировать различия даты. Пока вы настраиваете все свои переменные в первую очередь. –
Предполагая, что 'Workbook_Change' на самом деле' Worksheet_Change', и предположив, что вы установили 'Application.EnableEvents = False', вы можете заменить' Application.Run Formula() 'на' Target.EntireRow.Range («F1»).Значение = # 02/24/2017 # - Date() '- это приведет к обновлению столбца F в строке измененной ячейки, чтобы быть числом дней между 24 февраля и сегодня. (Очевидно, что жесткозаписываемая дата может быть заменена переменной даты, которая была рассчитана как автоматическая дата продвижения.) Альтернативно, вы можете использовать «Ячейки (Target.Row,« F »). Значение = # 02/24/2017 # - Date() '. – YowE3K