こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAで空白セルを削除する方法

みなさん教えてください。

今エクセルVBAで、下記のようにのA列に空白セルがある場合にそのセルを削除し、
空白セルが無い場合何もしないと言うマクロを作っています(下記のように自動記録し
ました)。

しかし、作成したマクロは、下記のようにA列に空白セルがない場合はエラーが出てし
まいます。

空白セルが無い場合エラーが出ない方法を教えて頂けないでしょうか。

よろしくお願いします。

<マクロ>
Sub Macro1()


Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.SpecialCells(xlCellTypeBlanks).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp


End Sub

<データ>

---------
1
2
1

1
1
3
4



(以降約300行続きます)

投稿日時 - 2011-02-26 21:17:12

QNo.6552546

すぐに回答ほしいです

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

「A列に空白セルがある場合にそのセルを削除し、
空白セルが無い場合何もしないと言うマクロ」
というが、なにか余計なことをしている。

Sub Macro1()

maxrow = Cells(Rows.Count, 1).End(xlUp).Row

For i = maxrow To 1 Step -1
If Range("A" & i).Value = "" Then
Range("A" & i).Delete Shift:=xlUp
End If
Next

End Sub

のようなことをしたいのかな?

投稿日時 - 2011-02-26 21:47:29

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(5)

ANo.5

すいません。余計なものが入っていました。
On Error GoTo LINE  (1)
LINE:  (2)
です。

投稿日時 - 2011-02-26 23:34:37

ANo.4

>A列に空白セルがない場合はエラーが出てしまいます。
Selection.SpecialCells(xlCellTypeBlanks).Selectの
ところでエラーが出ると思います。
違っていたら無視して下さい。

Sub Macro1()
Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
On Error GoTo LINE:  (1)
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
LINE::  (2)
End Sub

(1)、(2)を追加すれば、エラーが出た時に(1)から(2)に処理がとびます。
Application.CutCopyMode = Falseの位置をずらしています。

投稿日時 - 2011-02-26 23:25:17

ANo.3

Sub Macro1()
d = Range("a65536").End(xlUp).Row
Range("A2:A" & d).Select
On Error GoTo err
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
Exit Sub
err:
MsgBox "空白セルなし"
End Sub
---
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
の部分は、この質問の場合意味不明だが。何か省いたのか?

投稿日時 - 2011-02-26 23:03:15

ANo.1

空白セルの有無を事前に計算して,分岐しましょう。

if application.worksheetfunction.countblank(activesheet.usedrange.columns("A:A")) = 0 then exit sub

投稿日時 - 2011-02-26 21:28:49

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-