Я энтузиаст и новичок в VBA.Я пишу код для рабочей книги, которая управляет статистикой игры.
Первоначально отметьте на площадке (определяется по дальности), откуда произошел удар и судьба между лучами - Маяк (определяется по другой дальности).Для этого я создал макрос с сочетанием клавиш Ctrl + Shift + X, когда он не является целью, и Ctrl + Shift + O, когда он является целью.Макрос на данный момент добавляет индекс x +.Этот индекс взят из общего количества ударов, которые хранятся в ячейке, которой манипулируют вручную (на данный момент).То есть, если ячейка, содержащая TotalShootP1TA (Total Kick игрока 1 команды), содержит в общей сложности 10 ударов в игре, то в момент вызова макроса маркер x10 будет добавлен в активную ячейку.Что должно произойти с целью макроса.Например, во время 11-го удара по цели маркер o11 будет вставлен в активную ячейку.Как показано на рисунке.

Однако моя проблема заключается в том, что мне нужно вызвать мой макрос 2x, чтобы зарегистрировать (1) в блоке, откуда происходит ударбыл и (2) где он шел под балками.
Следствием этого является ошибочная регистрация, как если бы было 2 раза ударов, таким образом увеличивая ячейку NGoalP1TA (не Goal Player1 TeamA) в 2 раза, потому что каждый раз, когда она вызывается, она добавляет 1: Range (" NGoalP1TA ")
.Value = Range (" NGoalP1TA ")
.
То есть мне нужен способ зарегистрировать, сколько раз мой макрос вызывался.Один из способов, которым я думал об этом, заключался в выполнении условного цикла во время нажатия клавиш.Например, до тех пор, пока вы не нажали Ctrl + Shift + Q, код будет оставаться в то время.Вам может понравиться это:
- Марк внутри двора.
- Изменить активную ячейку.
- А затем отметьте тем же индексом под балками.
- Наконец, нажав Ctrl + Shift + Q, код будет отключен при вызове переменной NGoalP1TA (не Goal Player1 TeamA) один раз.
Даже читая о методах Application.OnKey, я не смог написать функциональный код.
Однако я даже не уверен, сработает ли это.Простое значение for не разрешено, поскольку оно не позволяет изменить активную ячейку.
Приветствуются другие предложения.
Эскиз кода, который, я думаю, будет работать:
Sub NotGoal()
' NotGoal Macro
' Atalho do teclado: Ctrl+Shift+X
'
Dim NGoalP1TA As Integer
Dim TotalShootP1TA As Integer
DO WHILE CTRL+SHIFT+Q
If Not Intersect(ActiveCell, Range("CourtP1TA")) Is Nothing Or Not
Intersect(ActiveCell, Range("BalizaP1TA")) Is Nothing Then
MsgBox ("if Intersect")
ActiveCell.FormulaR1C1 = "x" & Range("TotalShootsP1TA").Value
Else
MsgBox ("else Intersect!")
End If
LOOP
Range("NGoalP1TA").Value = Range("NGoalP1TA").Value + 1
End Sub
Текущий код:
Sub NotGoal()
' NotGoal Macro
' Atalho do teclado: Ctrl+Shift+X
'
Dim NGoalP1TA As Integer
Dim TotalShootP1TA As Integer
If Not Intersect(ActiveCell, Range("CourtP1TA")) Is Nothing Or Not
Intersect(ActiveCell, Range("BalizaP1TA")) Is Nothing Then
MsgBox ("if Intersect")
ActiveCell.FormulaR1C1 = "x" & Range("TotalShootsP1TA").Value
Range("NGoalP1TA").Value = Range("NGoalP1TA").Value + 1
Else
MsgBox ("else Intersect!")
End If
End Sub