|
▼もよもと さん:
γさんから
>>なお、そのつど全文引用するのはやめてください。
>>無駄に長くなります。
というアドバイスがあるのに、それでも全文引用 ?
まぁ、それはさておき
>エラー値を表示せずに、メッセージ表示してTargetを消すような動作は
>できないでしょうか。
最初のApplication.VLookUp の結果を セル直接 ではなく Variant型の変数で受けます。
で、
If IsError(その変数) Then
MsgBox "該当値がありません。" & vblf & "入力を元に戻します"
Application.Undo
Application.EnableEvents = True
Exit Sub
Else
その変数を目的のセルにセット
2番目以降のVLookUp 等 現在のコード
End If
といったようにされるといいと思います。
ただ、一括複数入力時、ループ処理をされていますよね。
そうした場合、仮に、マッチする入力があって、そのあとにマッチしないものがあった場合は
UnDo で不具合が発生します。
ですから、ちょっとコード的には悩ましいところがありますね。
(手当て方法はありますが)
>MatchとIndexを組み合わせる方法がいまいちよく分からない
シート関数のMATCHの使い方はおわかりですよね。
Variant型変数 = Application.Match(・・・・)
If IsError(その変数) Then
MsgBox "該当値がありません。" & vblf & "入力を元に戻します"
Application.Undo
Application.EnableEvents = True
Exit Sub
Else
3行目から200行目の領域の中の 変数が示す位置(変数+2 行目), の
C,D,E列の値を目的のセルにセット
End If
こんな感じです。
ただし、一括複数入力時の課題は同じものがありますが。
|
|