Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


49738 / 76736 ←次へ | 前へ→

【31901】Re:for ステートメントとIfについて
発言  awu  - 05/12/2(金) 0:28 -

引用なし
パスワード
   > 発想を変えて"#N/A"の文字の時は削除
> するようにしたのですが、型が一致しません。という
> エラーがでてしまいます。

何故エラーになったか知ることが、今後VBAを習得する上で必要と思いますので
解決済みとは思いますが、参考まで。

> Select Case Workbooks("Book1").Worksheets(1).Cells(x, 1)
> Case "#N/A"

で、まず、Valueプロパティが省略されていますので、この場合は、
Cells(x, 1).Value として処理されます。

Valueは、値を取得しますが、セルに表示されている #N/A は、
多分 LookUp関数等を使用した計算式の結果だとすると、そのセルの値は、
"#N/A" ではありません。 あくまでも値は、エラー値です。

セルに「表示」されている内容は、Textプロパティで取得出来ます。

また、セル値タイプをTypeName関数で調べると"Error"を返します。
または、IsError関数に対しては True を返します。

なお、Select Caseを使用していますが、Caseが1つですので、If...Then
ステートメントで充分かと思います。

以上を簡潔に整理して、こんな感じで如何でしょうか。

Sub ge2()
Dim x As Long
With Workbooks("Book1").Worksheets(1)
  For x = 15 To 1 Step -1
    With .Cells(x, 1)
      If .Text = "#N/A" Then .Delete '        または
'      If TypeName(.Value) = "Error" Then .Delete '  または
'      If IsError(.Value) Then .Delete
    End With
  Next x
End With
End Sub

0 hits

【31847】for ステートメントとIfについて L 05/12/1(木) 0:25 質問
【31849】Re:for ステートメントとIfについて かみちゃん 05/12/1(木) 0:33 発言
【31883】Re:for ステートメントとIfについて L 05/12/1(木) 20:28 質問
【31884】Re:for ステートメントとIfについて かみちゃん 05/12/1(木) 20:32 発言
【31892】Re:for ステートメントとIfについて L 05/12/1(木) 21:59 お礼
【31896】Re:for ステートメントとIfについて Kein 05/12/1(木) 23:02 発言
【31901】Re:for ステートメントとIfについて awu 05/12/2(金) 0:28 発言

49738 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free