0

私は小さなパズルを持っています。セル「K6」と「L6」を入力として使用しています(バーコードをスキャンするため)。セル「K6」を選択してバーコードをスキャンすると、セル「O6」は値「0」から値「1」になります(式「= IF(K6> 0,1,0)」による)。

「Sub (ByVal target As Range)」のトリガーとしてセル「O6」(大きい場合は「0」) を使用しています。この Sub は、「K6」値をコピーしてシート 2 (IN_OUT) 列に貼り付ける marco「Nasklad」を呼び出します」 A」最初のブランク。その後、シート1(Sklad)を選択し、セル「K6」をクリアするマクロ「クリア」を呼び出します。

プロセス全体が正常に機能し、バーコードをスキャンし、コードを別のシートにコピーし、別のコードをスキャンできます。

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

さて、セル「K6」がセル「L6」で動作するように一連のコマンドを複製しようとしたところ、何も起こりませんでした。

「Sub worksheet_change2(ByVal target As Range)」が機能していないようです。「P6」の「L6」値に何かを代入すると、「1」になります(式「= IF(L6> 0,1,0)」により、今回はトリガーがサブを実行せず、理由がわかりません。

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

私は何か見落としてますか?

助けてくれてありがとう

4

1 に答える 1