- ベストアンサー
エクセル 条件にあったセル移動(再)
以前に↓で質問させていただいた件について再質問させていただきます。 http://okwave.jp/qa5043658.html 回答番号No.3(myRangeさん)のVBAを利用させていただいているのですが、困ったことが一つ出てきてしまいました。 A列に入力する商品コードが存在しないコードの場合、C列の条件「買取」か「委託」が表示されず、 「実行時エラー 13 型が一致しません」が出てしまいます。 このエラーを回避するにはどのように変更すればよいのでしょうか。 商品コードが間違っているのは「商品名」と「条件」のセルに「N/A」が表示されるので間違っていることは確認できます、ですので正しい商品コードを再入力して作業を先に進めることが出来ればよいと思い、単に上記エラーが表示されない方法をいろいろと考えてみました。 しかし、ここ数日悩んだのですが結局解決できずに再質問させていただきました。 今一度お知恵拝借願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
またまた登場、myRangeです。 本人が責任を持って直した方がええでしょうね。(^^;;; エラーの原因は、エラー値が単純に比較できないことにあります。 で、以下のコードと入れ替えてください。 尚、商品が存在しない場合は、A列に留まるようにもしました。 '---------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Row < 2 Then Exit Sub Application.EnableEvents = False Select Case Target.Column Case 1 If IsError(Cells(Target.Row, "C")) Then Target.Select Else If Cells(Target.Row, "C").Value = "買取" Then Cells(Target.Row, "E").ClearContents Cells(Target.Row, "D").Select Else Cells(Target.Row, "D").ClearContents Cells(Target.Row, "E").Select End If End If Case 4, 5 Cells(Target.Row + 1, "A").Select End Select Application.EnableEvents = True End Sub '--------------------------------------- 以上です。
その他の回答 (2)
- f272
- ベストアンサー率46% (8625/18445)
#1です。 申し訳ありません。ちゃんと動作確認をしなくてはいけませんね。頭の中だけで考えていると間違いを犯すという良い見本でした。
お礼
とんでもありません、お返事いただけただけでも十分に感謝感謝です。 今後とも、よろしくお願いいたします。
- f272
- ベストアンサー率46% (8625/18445)
If Cells(Target.Row, "C").Value = "買取" Then Cells(Target.Row, "E").ClearContents Cells(Target.Row, "D").Select Else Cells(Target.Row, "D").ClearContents Cells(Target.Row, "E").Select End If ここで買取か委託かの判断をしていますが、N/AのときもElseの方に行ってしまいます。だから If Cells(Target.Row, "C").Value = "買取" Then Cells(Target.Row, "E").ClearContents Cells(Target.Row, "D").Select Else If Cells(Target.Row, "C").Value = "委託" Then Cells(Target.Row, "D").ClearContents Cells(Target.Row, "E").Select Else Cells(Target.Row, "A").Select End If のようにもう1つ分岐を入れてください。
補足
早々にご回答いただきありがとうございます。 早速ためさせて頂いたのですが、うまく動作しませんでした。 もしかしてと思い4行目の↓を >Else If Cells(Target.Row, "C").Value = "委託" Then ↓のように2行に分けたり Else If Cells(Target.Row, "C").Value = "委託" Then Elseを抜いてみたりしましたが動作しませんでした。 ご教授いただいた「もう1つ分岐」の部分を考えているのですが、結果を得られませんでした。 よろしければ再度よろしくお願いいたします。
お礼
ありがとうございます。 うそのように解決しました。 再質問でのお一人目の回答者さんである「f272さん」が おっしゃっておられた「もう1つの分岐」の件を ここ数日ずーっと悩んでいて そのもう一つの条件を「委託」として考えており、エラー判定をいれることは考えてもいませんでした。 とても勉強になりました。 度重なるご教授本当にありがとうございます。