• ベストアンサー

VBA エクセル #N/Aで実行時エラー 13 型が一致しません

お世話になります。 あるマクロを実行しようとすると、#N/Aのセルに来ると「実行時エラー 13 型が一致しません」とエラーが出てしまいますので、#N/Aを?に書き換えようと下記のマクロを作りましたが結果は同じでした。たぶんとんでもなく初歩的なミスだと思うのですが、どう対処すればよいのでしょうか?よろしくご指導くださいませ。 セルの内容は縦にこんな感じで並んでいます。 755754 755754 #N/A #N/A 713512 713512 マクロは Sub reword() Dim i As Long i = 1 Do Until Cells(i, 1).Value = "" If Cells(i, 1).Value = "#N/A" Then Cells(i, 1).Value = "?" End If i = i + 1 Loop End Sub #N/AのところでLoopはとまり、エラーが出ます。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

#N/Aを?に変えるのが目的ではないんですよね。 #N/Aで実行がとまらないようにしたいというなら、たとえば下記のようにするといいでしょう。 Sub reword() Dim i As Long ,cvas Variant i = 1 cv = Cells(i, 1).Value If IsError(cv) Then cv = "?" End If Do Until cv = "" MsgBox cv i = i + 1 cv = Cells(i, 1).Value If IsError(cv) Then cv = "?" End If Loop End Sub

TENSAW
質問者

お礼

はい#N/Aを?に変えるのが目的ではありません。 IsError をしりませんでした。 MsgBoxのところにやりたいことを書きなおして、再挑戦してみます。 ありがとうございます。使わせていただきます。

その他の回答 (1)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

>Cells(i, 1).Value = "#N/A" 見かけは"#N/A"ですが、文字列の”#N/A”ではないのです。 >If Cells(i, 1).Value = "#N/A" Then if worksheetfunction.isna(cells(i,1))=true then に変えたらどう?

TENSAW
質問者

お礼

rivoiseさん、 御回答どうもありがとうございました。 >if worksheetfunction.isna(cells(i,1))=true then は今後も使えそうです。ありがとうございます。 ちなみに、この部分だけでは#N/Aに来た時に Do Until Cells(i, 1).Value = "" でつっかえてしまうので、その前に On Error Resume Next を追加したら動きました。

関連するQ&A