Excel VBA質問箱 IV

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

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


424 / 13645 ツリー ←次へ | 前へ→

【80382】ワークシートをコピーし空白行を削除したい。 nonchan 19/2/6(水) 17:25 質問[未読]
【80383】Re:ワークシートをコピーし空白行を削除し... マナ 19/2/6(水) 18:28 発言[未読]
【80384】Re:ワークシートをコピーし空白行を削除し... nonchan 19/2/6(水) 21:23 回答[未読]
【80386】Re:ワークシートをコピーし空白行を削除し... マナ 19/2/7(木) 19:13 発言[未読]
【80399】Re:ワークシートをコピーし空白行を削除し... nonchan 19/2/10(日) 9:20 お礼[未読]
【80401】Re:ワークシートをコピーし空白行を削除し... マナ 19/2/10(日) 9:41 発言[未読]

【80382】ワークシートをコピーし空白行を削除した...
質問  nonchan E-MAIL  - 19/2/6(水) 17:25 -

引用なし
パスワード
   初めて質問します。VBA初心者です。

【やりたい事】
ワークシート「テンプレート」をコピーし、「WBSリスト」にある名前をワークシート名に
して、空白行を削除した後、「WBSリスト」にある全部の名前のワークシートを作成
する。

【やってみた事】
1.ワークシート「テンプレート」をコピーし、「WBSリスト」にある名前をワークシート名に
 して、「WBSリスト」にある全部の名前のワークシートを作成する。
     ↓
Sub 経費予算資料作成()
  Application.ScreenUpdating = False
  
  Dim i As Long
  For i = 2 To Sheets("WBSリスト").Cells(Rows.Count, "A").End(xlUp).Row
    Sheets("テンプレート").Copy after:=Sheets(Sheets.Count)
    ActiveSheet.Name = Sheets("WBSリスト").Cells(i, "A")
    Range("A1") = Sheets("WBSリスト").Cells(i, "A")
  Next i

End Sub
     ↓
これは上手くいきました。

2.アクティブなワークシートの空白行を削除する。
     ↓
Sub test空白行を削除する()
  Application.ScreenUpdating = False
  
  Dim j As Long
  For j = 630 To 2 Step -1
    If Range("R" & j).Value = "空白行" Then
      Rows(j).Select
      Selection.Delete shift:=xlUp
    End If
  Next j
End Sub
     ↓
これも上手くいきました。

3. 1.+2.ワークシートを作成したら、空白行を削除して
 次のワークシートを作成する。
     ↓
Sub test経費予算資料作成空白行削除()
  Application.ScreenUpdating = False
  
  Dim i As Long
  For i = 2 To Sheets("WBSリスト").Cells(Rows.Count, "A").End(xlUp).Row
    Sheets("テンプレート").Copy after:=Sheets(Sheets.Count)
    ActiveSheet.Name = Sheets("WBSリスト").Cells(i, "A")
    Range("A1") = Sheets("WBSリスト").Cells(i, "A")
    
      Dim j As Long
      For j = 630 To 2 Step -1
         If Range("R" & j).Value = "空白行" Then
           Rows(j).Select
          Selection.Delete shift:=xlUp
      End If
    Next j
   
  Next i
End Sub
    ↓
失敗しました!!

1.と2.を合体させることができません。
3.のプロシージャの訂正、或いは何かいい方法はないでしょうか。

よろしくお願いいたします。
以上 

【80383】Re:ワークシートをコピーし空白行を削除...
発言  マナ  - 19/2/6(水) 18:28 -

引用なし
パスワード
   そもそも空白行の削除は
テンプレートで最初に1回だけ
でよいのでは?

【80384】Re:ワークシートをコピーし空白行を削除...
回答  nonchan E-MAIL  - 19/2/6(水) 21:23 -

引用なし
パスワード
   マナさん。ありがとうございます。

テンプレートには合計600行あって、そのテンプレートには
vlookup関数が仕込んであり、他のデータベースから引っ張って
きたデータを検索するようになっています。
ちょっと説明しづらいのですが、

「WBS001] 「WBS002」「WBS003」 〜 [WBS030」
というふうに30コのワークシートができて、それぞれ
データが最大600行、少ないものでは30行程度のワークシート
ができあがります。
600行びっしりデータがあるワークシートと空白行がいっぱい
あるワークシートとが出来上がってしまうのです。

空白行を削除するマクロでワークシートひとつづつ消してい
けばいいのですが、それでは手間がかかってしまうので、
複数のワークシートの空白行を一度に削除できるマクロを
作成したいと思ったのです。

わかりにくい説明で大変申し訳ありません。
よろしくお願いいたします。

▼マナ さん:
>そもそも空白行の削除は
>テンプレートで最初に1回だけ
>でよいのでは?

【80386】Re:ワークシートをコピーし空白行を削除...
発言  マナ  - 19/2/7(木) 19:13 -

引用なし
パスワード
   ▼nonchan さん:

>テンプレートには合計600行あって、そのテンプレートには
>vlookup関数が仕込んであり、他のデータベースから引っ張って
>きたデータを検索するようになっています。

理解しました。

>失敗しました!!

コードを見た感じでは、問題ないように思えますが。
失敗とは、削除されないということでしょうか。

ステップ実行とか試してみましたか。

【80399】Re:ワークシートをコピーし空白行を削除...
お礼  nonchan E-MAIL  - 19/2/10(日) 9:20 -

引用なし
パスワード
   マナさん
お返事ありがとうございます。
再度実行してみたのですが、うまくいきました!
面倒おかけして、すみませんでした。
行を削除するマクロが、異様に時間がかかってしまっていた
せいか、ものすごく時間がかかって止まったように見えて
しまっていただけでした。
時間を短くする処理の仕方を改めて考えようと思います。

本当に申し訳ありませんでした。
ありがとうございました。
助かりました!


▼マナ さん:
>▼nonchan さん:
>
>>テンプレートには合計600行あって、そのテンプレートには
>>vlookup関数が仕込んであり、他のデータベースから引っ張って
>>きたデータを検索するようになっています。
>
>理解しました。
>
>>失敗しました!!
>
>コードを見た感じでは、問題ないように思えますが。
>失敗とは、削除されないということでしょうか。
>
>ステップ実行とか試してみましたか。

【80401】Re:ワークシートをコピーし空白行を削除...
発言  マナ  - 19/2/10(日) 9:41 -

引用なし
パスワード
   ▼nonchan さん:

>時間を短くする処理の仕方を改めて考えようと思います。

オートフィルタを使うと良い気がします。
まずは手作業で期待通り削除できることを確認してはどうでしょうか。

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