
VBAでリストの空白行を削除するための適当なコードを探しているのですがどんぴしゃのものが中々見つかりません。ご教授下さい。
ブックBのシートBのリストにはA2~AN●まで値が入っています。
別のブックAからVBAで値を取り出し貼り付けています。
いくつかの方法を試しました。
(1)ブックを開いたときに空白行を削除
Sub Auto_Open() '空白行を削除
Dim lRow As Long
Dim i As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = lRow To 2 Step -1
If Cells(i, 1).Value = "" Then
Range(i & ":" & i).Delete
End If
Next i
Application.ScreenUpdating = True
End Sub
5分以上砂時計のままで結局終わりません。
強制終了させ再度ブックを開くと空白行は削除されているのですが、こんな動作では使うことができません。
(2)ブックAの値を貼り付けた後、空白行を削除し上書き保存する
Sub エクスポート()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range(Cells(5, 7), Cells(79, 46)).Select
Selection.Copy 'コピー
Workbooks.Open Filename:="\\パス\ブックB.xlsm" '貼り付け先ファイルオープン
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '貼り付け
Dim lRow As Long
Dim i As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = lRow To 2 Step -1
If Cells(i, 1).Value = "" Then
Range(i & ":" & i).Delete
End If
Next i
Application.ScreenUpdating = True '空白行を削除
ActiveWorkbook.Save '上書き保存
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
(3)空白行を削除の部分は以下のコードも試しました
Worksheets("SheetB").Range("A1").Select
Set currentCell = Worksheets("sheetB").Range("A1")
Do While Not IsEmpty(currentCell)
Set nextCell = currentCell.Offset(1, 0)
If Not IsEmpty(currentCell) Then 'カレントセルが空白でなく、
If IsEmpty(nextCell) Then '次のセルが空白のとき
nextCell.EntireRow.Delete
End If
End If
Set currentCell = currentCell.Offset(1, 0)
Loop '空白行削除
宜しくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
空白行の範囲選択をする前に、
With ActiveSheet'←できれば、Workbooks("Book1").Worksheets("Sheet1")とかのほうが…
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = lRow To 2 Step -1
If .Range("A" & i) = "" Then
.Range("A" & i) = ""
End If
Next i
End With
これで、見た目空白なら、空白にしています。
元のプログラムを拝借しました(笑
これを、空白行選択する前にやれば
上手くいくかと思います^^
No.3
- 回答日時:
追記です。
http://veaba.keemoosoft.com/2012/12/376/
すみません。空白行が無かった場合にエラーが出ます。
例)
On Error Resume Next
Range("A1:A10").SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
On Error GoTo 0
このようにしたら、エラーは出ないと思います。
この回答への補足
たびたびご回答ありがとうございます。
ご指摘の点を直したのですが、うまくいかず
試しに空白セルを一度選択して数式と値のクリアをしてからマクロを実行すると削除してくれました。
コピー元では対象セルに
=IF(Z6="","",Z6)
のようなIF関数を入れているのですが
関数の結果が""で空白の場合にコピー先で値と認識されているのではと思いました。
どのように直せばいいのでしょうか?
たびたびの補足で申し訳ありませんが宜しくお願い致します。
No.2
- 回答日時:
ブックA,ブックB等しっかり選択されていないのかな?と思います。
例)
With Workbook("ブックA.xls").Worksheets("Sheet1")
.select 'ブックAのSheet1をselectします。
.Range("A1")=”テスト” 'ブックAのSheet1のA1にテストと入力します。
End with
ブック間で色々やる場合、
単に「Range」と記入してしまうと
ブックAなのか、ブックBなのか。判断できなくなり
違うブックで動作してしまっていたりすることが良くあります。
しっかり、ブックAですよ~、Bですよ~としてあげることが一番かもしれません。
(もしかしたら私が言っていることは違うかもしれませんが…)
Withでやるのが面倒だという場合は、
Workbook("ブックB.xls").Activeと入力したり
Workbook("ブックB.xls").selectと入力したりすれば解決するかと思います。
No.1
- 回答日時:
例)
Range("A1:A10").SpecialCells(xlCellTypeBlanks).Select
こうすると、空白セルを選択することができます。
そして、
Selection.EntireRow.Delete
で、選択したセルの行を削除…というのが早いかもしれません。
この回答への補足
ご回答ありがとうございます。
On Error Resume Next
Range("A2:A60000").SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
On Error GoTo 0 'A列から空白行を探し出しその列全体を削除ぶkk
上記のコードをブックBで実行したところうまくいきました。
ところがブックAに以下のように記述し実行したところ削除されませんでした。
どこか悪いのでしょうか?
Sub エクスポート()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range(Cells(5, 7), Cells(79, 46)).Select
Selection.Copy 'ブックAの指定の範囲をコピー
Workbooks.Open Filename:="\\●●~パス~●●\ブックB.xlsm" '貼り付け先ファイルオープン
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False 'ブックBのシートBに値を貼り付け
On Error Resume Next
Range("A2:A60000").SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
On Error GoTo 0 'ブックBのシートBのA列から空白行を探し出しその列全体を削除
ActiveWorkbook.Save '上書き保存
Windows("ブックA.xlsm").Activate
Range("B5").Select 'ブックAに戻りB5をアクティブにする
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
お忙しいところ恐縮ですが宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
このQ&Aを見た人はこんなQ&Aも見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
Excel VBA コンボボックスで空白を削除
その他(Microsoft Office)
-
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
-
4
エクセルVBA ユーザーフォームのtextboxの書式設定って?
Excel(エクセル)
-
5
エクセルVBAでマルチページの切り替え方法の件で
Excel(エクセル)
-
6
EXCELのリストボックスを選択した行が何行目か
その他(プログラミング・Web制作)
-
7
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
8
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
9
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
12
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
13
ラベルを表示したり非表示にしたりしたい
Visual Basic(VBA)
-
14
エクセルVBA/マルチページ/ページ切り替え時
Access(アクセス)
-
15
VB6,リストボックスの特定行の色変更は可能?
Visual Basic(VBA)
-
16
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
17
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
18
EXCEL VBA コンボボックス、テキストボックスが未入力のときメッセージを表示する方法
Excel(エクセル)
-
19
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
20
複数選択のListBoxでClickイベントが拾えません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
数式による空白を無視して最終...
-
ピボットテーブルで空白セルの...
-
Excel:関数が入っているセルに...
-
エクセルでCSVを編集するとき、...
-
Excelで、入力文字の後に自動で...
-
Excel > ピボットテーブル「(空...
-
エクセルで上の行の値を自動的...
-
エクセル 連番が途切れていると...
-
excel2010 空白セルにのみ貼り...
-
空白セル内の数式を残したまま...
-
《Excel2000》SUMPRODUCT関数で...
-
「データ要素を線で結ぶ」がチ...
-
vlookup にて、返す値が、空白...
-
【Excel】 csvの作成時、空白セ...
-
エクセルで空白文字の前後を入...
-
エクセルのグラフで式や文字列...
-
VBA スペースが入力されて...
-
関数TRANSPOSEで空白セルを0に...
-
【Excel】 Ctrl+方向キー で空...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
エクセルでCSVを編集するとき、...
-
Excel > ピボットテーブル「(空...
-
数式による空白を無視して最終...
-
Excelで、入力文字の後に自動で...
-
「データ要素を線で結ぶ」がチ...
-
Excel:関数が入っているセルに...
-
ピボットテーブルで空白セルの...
-
エクセル 連番が途切れていると...
-
空白セル内の数式を残したまま...
-
vlookup にて、返す値が、空白...
-
エクセルで、「複数のセルの中...
-
excel2010 空白セルにのみ貼り...
-
関数TRANSPOSEで空白セルを0に...
-
エクセルのIF関数で、隣のセル...
-
【Excel】 csvの作成時、空白セ...
-
形式貼り付けの「空白を無視す...
-
エクセルで上の行の値を自動的...
-
エクセルのグラフで式や文字列...
-
vlookupの結果が0になるセルと...
おすすめ情報