- ベストアンサー
VBAで空白がない所でコード走るとエラーが出る
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラーをトラップして無視する方法もありますが 私だったら、そもそもエラーの起きない以下のコードにします。 Sub sample() Dim tgRng As Range Dim ChkCell As Range Dim sw As Boolean Set tgRng = Range("B1:F3") sw = False For Each ChkCell In tgRng If ChkCell.Value = "" Then sw = True Exit For End If Next If sw = True Then tgRng.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft Else MsgBox "空白セルはありません" End If End Sub
その他の回答 (1)
- kkkkkm
- ベストアンサー率66% (1734/2604)
変数名は実際のものに変換してください。 Range(Cells(i, sCol), Cells(i, eCol)).Select を外して On Error Resume Next Range(Cells(i, sCol), Cells(i, eCol)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft On Error GoTo 0 ↑「ツール」「オプション」の全般タブの「エラートラップ」が「エラー発生中に中断」以外になっていると有効 もしくは Range(Cells(i, sCol), Cells(i, eCol)).Select はそのままで If Application.WorksheetFunction.CountBlank(Selection) > 0 Then Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End If で試してみてください。 あと Row=1 のままなので一行目しか対象になっていないと思いますから以降の行の指定はRowではなくiでいいのではないでしょうか。