- ベストアンサー
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はとまり、エラーが出ます。
- みんなの回答 (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
その他の回答 (1)
- rivoisu
- ベストアンサー率36% (97/264)
>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 に変えたらどう?
お礼
rivoiseさん、 御回答どうもありがとうございました。 >if worksheetfunction.isna(cells(i,1))=true then は今後も使えそうです。ありがとうございます。 ちなみに、この部分だけでは#N/Aに来た時に Do Until Cells(i, 1).Value = "" でつっかえてしまうので、その前に On Error Resume Next を追加したら動きました。
お礼
はい#N/Aを?に変えるのが目的ではありません。 IsError をしりませんでした。 MsgBoxのところにやりたいことを書きなおして、再挑戦してみます。 ありがとうございます。使わせていただきます。