2-е изменение (ByVal target As Range) не работает - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть маленькая загадка. Я использую ячейки "K6" и "L6" в качестве импутов (для сканирования штрих-кода). Когда я выбираю ячейку "K6" и сканирую штрих-код, ячейка "O6" становится из значения "0" в значение "1" (по формуле "= IF (K6> 0,1,0)").

Я использую ячейку "O6" (когда она больше, чем "0") в качестве триггера для "Sub (ByVal target As Range)". Этот вызов Sub вызывает marco "Nasklad", который копирует и вставляет значение "K6" в sheet2 (IN_OUT) столбец «А» первый пустой. После вызова макроса «Очистить», который выбирает sheet1 (Склад) и очистить ячейку «K6».

Весь процесс работает нормально, я сканирую штрих-код, код копируется на другой лист, и я могу сканировать другой код и т. Д. on.

Sub worksheet_change(ByVal target As Range)
Set target = Range("O6")
If target.Value > 0 Then
 Call Nasklad
End If
End Sub

Sub Nasklad()
    Sheets("Sklad").Select
    Range("K6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("IN_OUT").Select
    ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Call clear
End Sub

Sub clear()
    Sheets("Sklad").Select
    Range("K6").Select
    Selection.ClearContents
End Sub

Теперь выгода, когда я пытался дублировать ser ie команд для ячейки "K6" для работы с ячейкой "L6", тогда ничего не случилось.

Похоже, что "Sub worksheet_change2 (ByVal target As Range)" не работает. Когда я приписываю что-то значению «L6», в «P6» становится «1» (по формуле «= IF (L6> 0,1,0)», и этот триггер времени не запускает Sub, и я не знаю, почему.

Sub worksheet_change2(ByVal target As Range)
Set target = Range("P6")
If target.Value = 0 Then
 Call Vysklad
End If
End Sub

Sub Vysklad()
    Sheets("Sklad").Select
    Range("L6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("IN_OUT").Select
    ActiveSheet.Range("B1").End(xlDown).Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Call clear2
End Sub

Sub clear2()
    Sheets("Sklad").Select
    Range("L6").Select
    Selection.ClearContents
End Sub

Я что-то пропустил?

Спасибо за помощь

1 Ответ

0 голосов
/ 17 апреля 2020

Спасибо @BigBen и @urdearboy, это помогло мне, и я изменил Sub worksheet_change (ByVal target As Range) на

Sub worksheet_change(ByVal target As Range)
Set target = Range("O6")
Set target2 = Range("P6")
If target.Value > 0 Then
 Call Nasklad
End If
If target2.Value > 0 Then
 Call Vysklad
End If
End Sub
...