アプリ版:「スタンプのみでお礼する」機能のリリースについて

たとえばセルA1とF1、A2とF2、A3とF3…を比較して、内容が同じであれば"〆指示済"、異なれば"未〆指示"をD列に表示するようなVBAって出来ますか?

・「作業中フォルダ」に存在するファイルのリストをA列に、「〆指示フォルダ」に存在するファイルのリストをE列に表示
・両者をVLOOKUPで照合したリストをF列に表示
以上の作業をVBAで行ったデータがあるのですが、その先がつまづいてしまってます…

r = 202
i = 3
Cells(i, 6) = Application.VLookup(Cells(i, 1), Worksheets("作業中リスト").Range("E3:E" & r), 1, False)
For i = 3 To r
If Cells(i, 1) = "" Then
Cells(i, 4) = ""
ElseIf Cells(i, 1) = Cells(i, 6) Then
Cells(i, 4) = "〆指示済"
Else
Cells(i, 4) = "未〆指示"
End If
Next i

ElseIfのところで「実行時エラー'13':型が一致しません。」としかられてしまいます…
これって間違ってるのでしょうか??
初心者及び独学なので「参考書買え!」といわれればそれまでなのですが、どうかご教授願えませんでしょうか?

A 回答 (2件)

ElseIf Cells(i,1) = Cells(i, 6) Then の部分で 「実行時エラー'13':型が一致しません。


と出るのはANo.1さんが指摘されて、既に確認されたとおり#N/Aエラーが発生しているためです。
For 文の前に Cells(i, 6)の内容を""や"エラー"などに置き換えてはどうでしょうか?
If IsError(Cells(i, 6)) Then
  Cells(i, 6) = ""
End If
など

> Cells(i, 6) = Application.IsError(Application.VLookup(Cells(i, 1), Worksheets("作業中リスト").Range("E3:E" & r), 1, False), "", Application.VLookup(Cells(i, 1), Worksheets("作業中リスト").Range("E3:E" & r), 1, False))
の部分がエラーになるのは、IsErrorワークシート関数の使い方が間違っているためです。
恐らくIFワークシート関数を入れるのを忘れていませんか?
    • good
    • 0
この回答へのお礼

Masa2072さま、
ありがとうございます!以下のような形で上手くいきました。
r = 202
i = 3

For i = 3 To r
Cells(i, 6) = Application.VLookup(Cells(i, 1), Worksheets("作業中リスト").Range("E3:E" & r), 1, False)
If IsError(Cells(i, 6)) Then
Cells(i, 6) = "エラー"
End If

If Cells(i, 1) = "" Then
Cells(i, 4) = ""
ElseIf Cells(i, 1) = Cells(i, 6) Then
Cells(i, 4) = "〆指示済"
Else
Cells(i, 4) = "未〆指示"
End If
Next i

独学かつ、手探り状態だったので本当に助かりました。
上手く動くと嬉しいものですね!
VBAの参考書を探して、本格的に勉強してみようかと思ってます。

ヒントを下さったhana-hana3さまにもこの場を借りてお礼申し上げます。
ありがとうございました。

お礼日時:2008/06/09 17:26

>ElseIfのところで「実行時エラー'13':型が一致しません。

」としかられてしまいます…

セルにエラーになっている式はありませんか?

この回答への補足

F3が#N/Aとなっています。ですが、IsErrorで以下のように書き直してもダメでした…今度は実行時エラー'1004':引数の数の誤りがありますとなってしまいました。デバッグすると以下の部分が黄色くなってます。
Cells(i, 6) = Application.IsError(Application.VLookup(Cells(i, 1), Worksheets("作業中リスト").Range("E3:E" & r), 1, False), "", Application.VLookup(Cells(i, 1), Worksheets("作業中リスト").Range("E3:E" & r), 1, False))

補足日時:2008/06/09 16:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!