このコードは、基本的にセルの範囲内のエントリを評価し、[1-9]のパターンに適合しているかどうかを確認するために使用します。 2つの列(インデックスとして1〜9、次に列2にこれらの値が意味するものの説明)を持つ小さな表のvlookup。私のコードは次のとおりです。VBAワークシートが複数回実行されているコードを変更する
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Dim tgt As Range
Dim ws As Worksheet
Dim cell As Object
'Dim yn As Boolean
Set ws = ActiveWorkbook.ActiveSheet
Set rng1 = ws.Range("K13:K" & ws.UsedRange.Rows.Count)
If Not Intersect(Target, rng1) Is Nothing Then
If Target.Value Like "[1-9]*" Then
'MsgBox "OK" & Target.Address & " " & Target.Text & " " & rng1.Address & " " & rng1.Count & " " & ActiveCell.Address
Target.Value = WorksheetFunction.VLookup(Left(Target.Value, 1), ws.Range("J2:K10"), 2, 0)
ElseIf Not Target Like "[1-9*]" Then
Target = Empty
End If
End If
End Sub
私は取得しています問題は、コードがうまく実行されることですが、それは、各セルの変更イベントの後に、(40-50回のような)を複数回評価されます。私はおそらく何が起こっているのか理解するためにmsgboxを置いたが、私は立ち往生し、コードを修正する方法を知らない。私はそれがVLOOKUP関数と関係していると思っています。
おかげ
ありがとうございました!今後のことを知っておくと良い –