Принудительный макро рейтинг Excel VBA
У меня есть настройки, как показано на рисунке выше.
Логика макроса если ввести номер 1
в ячейке B5
или в пустой ячейке в Range("B2:B26")
, то выход будет в следующем формате:
B2 3
B3 4
B4 2
B5 1
Теперь он дает мне этот вывод, но есть определенные недостатки, например
Если я предоставил ввод 8
в ту же ячейку, то он все равно увеличит ряды. Я включил проверку соответствия, чтобы увидеть, есть ли это значение или нет, но, похоже, не работает. Любая помощь будет оценена.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim KeyCells As Range
Dim i As Long, Cel As Range, sht1 As Worksheet, j As Long, found As Boolean
Set sht1 = Sheet1
Set KeyCells = sht1.Range("B2:C26")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
If Target.Column = 2 Then
For i = 2 To 26
If sht1.Range("B" & i) <> Empty And sht1.Range("B" & i).Value >= Target.Value And i <> Target.Row Then
sht1.Range("B" & i).Value = sht1.Range("B" & i).Value + 1
Else: End If
Next i
Else: End If
If Target.Column = 3 Then
For i = 2 To 26
If sht1.Range("C" & i) <> Empty And sht1.Range("C" & i).Value >= Target.Value And i <> Target.Row Then
sht1.Range("C" & i).Value = sht1.Range("C" & i).Value + 1
Else: End If
Next i
Else: End If
Else: End If
Call CreateDataLabels
Target.Select
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Я вид путаницы. Если вы наберете '1' в' B5', то что должно получиться? Как вы получили '4' в' B3'? –
@SiddharthRout, если вы удалите эту часть 'found = False Для i = 2 К 26 Если sht1.Range (" B "& i) <> Пусто И sht1.Range (" B "& i) .Value = Target .Value И i <> Target.Row Затем found = True Else: End If Далее я его выберет. – newguy
Можете ли вы забыть код и объяснить логику? :) –