3つのワークシートで検索しているマクロがあります invoice number
ユーザーが入力する可能性のあるもの(合計で260万件を超えるレコード)。
番号は単一のセルにあり、ルックアップ参照も含まれています。形: invoicenumber, reference_letter
.
もともと、それは大丈夫だったので invoice numbers
10桁でした。今では何でもかまいませんが、単一の文字参照の前の最後には常にコンマがあります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$5" Then Exit Sub
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
Range("B5") = ""
For Each sh In Sheets
If sh.Name = ActiveSheet.Name Then GoTo 111
sh.Range("B1").FormulaArray = "=IFERROR(MATCH(Main!A5,LEFT(A:A,10),0),"""")"
If sh.Range("B1") <> "" Then
x = sh.Range("B1")
Range("B5") = Right(sh.Range("A" & x), 1)
Exit For
End If
111
Next sh
Application.EnableEvents = True
If x = "" Then MsgBox "Not Found!"
End Sub
この10文字の制限が8行目にあることを知っているので、 FIND
、しかし、私はそれが正しくなかったと思います(私はそれを機能させることができなかったという理由で!)。
私はこれを分類するのに助けてくれてありがたいです。
最後の文字を取得して別のシートからテキストを返すvLookupがさらにあります。
回答:
回答№1は1これを試して
Private Sub Worksheet_Change(ByVal Target As Range)
Dim InvLen As Integer
If Target.Address <> "$A$5" Then Exit Sub
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
Range("B5") = ""
For Each sh In Sheets
If sh.Name = ActiveSheet.Name Then GoTo 111
InvLen = Len(Worksheets("Main").Range("A5").value)
sh.Range("B1").FormulaArray = "=IFERROR(MATCH(Main!A5,LEFT(A:A," & InvLen & "),0),"""")"
If sh.Range("B1") <> "" Then
x = sh.Range("B1")
Range("B5") = Right(sh.Range("A" & x), 1)
Exit For
End If
111
Next sh
Application.EnableEvents = True
If x = "" Then MsgBox "Not Found!"
End Sub