Excel VBA質問箱 IV

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

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


10249 / 13646 ツリー ←次へ | 前へ→

【22830】文字のないセルの削除 ひなこもち 05/3/4(金) 15:52 質問[未読]
【22832】Re:文字のないセルの削除 G-Luck 05/3/4(金) 16:17 発言[未読]
【22835】Re:文字のないセルの削除 Jaka 05/3/4(金) 16:51 回答[未読]
【22837】Re:文字のないセルの削除 ひなこもち 05/3/4(金) 17:15 質問[未読]
【22840】Re:文字のないセルの削除 Jaka 05/3/4(金) 17:54 発言[未読]
【22841】Re:文字のないセルの削除 G-Luck 05/3/4(金) 18:04 発言[未読]
【22915】Re:文字のないセルの削除 ひなこもち 05/3/7(月) 13:56 お礼[未読]

【22830】文字のないセルの削除
質問  ひなこもち  - 05/3/4(金) 15:52 -

引用なし
パスワード
   こんにちは。お世話になります。
過去ログから下記のコードを参照して使っているのですが、
うまく削除してくれません。


  Dim mrg As Range
  On Error Resume Next
  Set mrg = Range("G3:G30").SpecialCells(xlCellTypeBlanks)
  If mrg Is Nothing Then Exit Sub
  On Error GoTo 0
  mrg.Delete 'Shift:=xlUp
  Set mrg = Nothing

複数シートでA,B列それぞれ空白(文字列の入ってない)セルを削除したいのですが、どこを修正すれば良いのか分かりません。
みなさまのご助力お願いいたしますm(__)m

【22832】Re:文字のないセルの削除
発言  G-Luck  - 05/3/4(金) 16:17 -

引用なし
パスワード
   ▼ひなこもち さん:
私の環境では、正常に動きます。

Rangeの前に、Thisworkbook.Worksheets("Sheet1").
として、対象を意識されてはどうですか?
現状ですと、シート上に書くか、標準モジュール上に書くかで、動作が変わります。

後、F8、でワンステップずつ実行して、どこが悪いのかを検証されると、問題が見つけやすいですよ。

【22835】Re:文字のないセルの削除
回答  Jaka  - 05/3/4(金) 16:51 -

引用なし
パスワード
   こんにちは。

  Dim mrg As Range,ws as worksheet
  For each ws in thisworkbook.sheets
>  On Error Resume Next
           '↓A1:B??
  Set mrg = ws.Range("G3:G30").SpecialCells(xlCellTypeBlanks)
>  If mrg Is Nothing Then Exit Sub
>  On Error GoTo 0
>  mrg.Delete 'Shift:=xlUp
>  Set mrg = Nothing
  next

【22837】Re:文字のないセルの削除
質問  ひなこもち  - 05/3/4(金) 17:15 -

引用なし
パスワード
   G-Luck様、Jaka様ご返信ありがとうございます。
1行ずつ検証しながら実行したのですが、
ひっかかってしまいました…(T_T)

Jaka様のコード早速試してみます。

返信を待つ間に、別の手段として、「A列が空白の列は削除」
と言うコードを考えていたのですが、★のところで「型が一致しません」
というエラーが出てしまい、またまた行き詰ってしまいました。
マクロの記録を参考にしたのですが、この場合はどうすればいいのでしょうか?
宜しくご教示下さいm(__)m


Sub Delete_6()

Dim s As Worksheet
For Each s In ActiveWorkbook.Worksheets
n = 1
 If s.Cells(n, 1) = "" Then
  Rows("n : n").Select ★
  Selection.Delete Shift:=xlUp
  n = n + 1
 End If


Next
End Sub

無知ですみません。

【22840】Re:文字のないセルの削除
発言  Jaka  - 05/3/4(金) 17:54 -

引用なし
パスワード
   Sub Delete_6()
Dim s As Worksheet, n as long
For Each s In ActiveWorkbook.Worksheets
 For n = 1 To A列の最終行
   If s.Cells(n, 1) = "" Then
    s.Rows(n).Delete 'Shift:=xlUp
             '↑ 削除すると勝手に上に詰められるから、
             '無しでいいです。あってもいい行けど
   End If
 Next
Next
End Sub

【22841】Re:文字のないセルの削除
発言  G-Luck  - 05/3/4(金) 18:04 -

引用なし
パスワード
   ▼ひなこもち さん:
>Sub Delete_6()
>
>Dim s As Worksheet
>For Each s In ActiveWorkbook.Worksheets
> n = 1
> If s.Cells(n, 1) = "" Then
>  Rows("n : n").Select ★
>  Selection.Delete Shift:=xlUp
>  n = n + 1
> End If
>
>
>Next
> End Sub

まず、上記コードについて、
>  Rows("n : n").Select ★
は、「n:n」という文字になってしまいます。
おそらく、お望みは、

Rows(n & ":" & n).Select
でしょう。

次に
Dim mrg As Range
  On Error Resume Next
  Set mrg = Range("G3:G30").SpecialCells(xlCellTypeBlanks)
  If mrg Is Nothing Then Exit Sub
  On Error GoTo 0
  mrg.Delete 'Shift:=xlUp
  Set mrg = Nothing

について、望みの動作は、G3:G30の中の空白セルを削除ですか?
それとも、複数シートでA,B列それぞれ空白(文字列の入ってない)セルを削除したいですか?

下記のようにして、一行ずつ実行してください。削除前に削除される範囲を、Excelで確認できます。望みの範囲ですか?

  mrg.Select
  mrg.Delete 'Shift:=xlUp

【22915】Re:文字のないセルの削除
お礼  ひなこもち  - 05/3/7(月) 13:56 -

引用なし
パスワード
   Jakaさん、G-Luckさんご指導ありがとうございます。
いろいろ試してみたのですが、思うとおりの結果には
至りませんでした。
せっかくご指導頂いたのですが、方法を変えてみます。
すみませんでした。

また質問させていただくと思いますが、このトピックは
ひとまず閉じさせて頂きます。
本当に申し訳ありません。

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