• ベストアンサー

エクセル 条件にあったセル移動(再)

以前に↓で質問させていただいた件について再質問させていただきます。 http://okwave.jp/qa5043658.html 回答番号No.3(myRangeさん)のVBAを利用させていただいているのですが、困ったことが一つ出てきてしまいました。 A列に入力する商品コードが存在しないコードの場合、C列の条件「買取」か「委託」が表示されず、 「実行時エラー 13 型が一致しません」が出てしまいます。 このエラーを回避するにはどのように変更すればよいのでしょうか。 商品コードが間違っているのは「商品名」と「条件」のセルに「N/A」が表示されるので間違っていることは確認できます、ですので正しい商品コードを再入力して作業を先に進めることが出来ればよいと思い、単に上記エラーが表示されない方法をいろいろと考えてみました。 しかし、ここ数日悩んだのですが結局解決できずに再質問させていただきました。 今一度お知恵拝借願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

またまた登場、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 '--------------------------------------- 以上です。

Haku46
質問者

お礼

ありがとうございます。 うそのように解決しました。 再質問でのお一人目の回答者さんである「f272さん」が おっしゃっておられた「もう1つの分岐」の件を ここ数日ずーっと悩んでいて そのもう一つの条件を「委託」として考えており、エラー判定をいれることは考えてもいませんでした。 とても勉強になりました。 度重なるご教授本当にありがとうございます。

その他の回答 (2)

  • f272
  • ベストアンサー率46% (8625/18445)
回答No.3

#1です。 申し訳ありません。ちゃんと動作確認をしなくてはいけませんね。頭の中だけで考えていると間違いを犯すという良い見本でした。

Haku46
質問者

お礼

とんでもありません、お返事いただけただけでも十分に感謝感謝です。 今後とも、よろしくお願いいたします。

  • f272
  • ベストアンサー率46% (8625/18445)
回答No.1

    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つ分岐を入れてください。

Haku46
質問者

補足

早々にご回答いただきありがとうございます。 早速ためさせて頂いたのですが、うまく動作しませんでした。 もしかしてと思い4行目の↓を >Else If Cells(Target.Row, "C").Value = "委託" Then ↓のように2行に分けたり Else  If Cells(Target.Row, "C").Value = "委託" Then Elseを抜いてみたりしましたが動作しませんでした。 ご教授いただいた「もう1つ分岐」の部分を考えているのですが、結果を得られませんでした。 よろしければ再度よろしくお願いいたします。

関連するQ&A