Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
範囲指定し、左列の行削除
投稿日時: 22/01/07 09:20:49
投稿者: eco2019

マウスで範囲を選択し、左列の空白行セルがあれば、削除したいです。
 
A列に文字が入力されていれば下記でもいいのでしょうが、その先が分かりません。
 
Range("A1:A100").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 
範囲指定した左の列の取得を上記を変えていけばよいのでしょうね。。
 
宜しくお願い致します。

回答
投稿日時: 22/01/07 09:56:03
投稿者: めんたん

とびとびの範囲を指定することも考慮するとこんな感じです。
 
For Each a In Selection.Areas
    For Each c In a.Columns(1)
        MsgBox "選択範囲の左列は " & c.Address(0, 0)
    Next
Next

投稿日時: 22/01/07 09:57:44
投稿者: eco2019

めんたんさん、有難うございます。
 
すみません、最後の削除の仕方もできなくて。
 
Range(a.Columns(1).Cells).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

投稿日時: 22/01/07 10:22:47
投稿者: eco2019

この部分をどうするのかが分かりません。→〇〇〇.SpecialCells(xlCellTypeBlanks).EntireRow.Delete

回答
投稿日時: 22/01/07 10:37:14
投稿者: めんたん

複数範囲の削除の場合、意図しないことになりますね。
削除は下から、が原則ですからね。
意外と面倒だった。。
ちょっと考えてみます。
それと空白セルがない場合のことも考慮しないとエラーで止まりますね。

投稿日時: 22/01/07 11:37:30
投稿者: eco2019

複数範囲なんですが、最終的には、一番、左の列の空白行からが削除できればと思っています。
有難うございます。複雑になって申し訳ございません。

回答
投稿日時: 22/01/07 11:39:46
投稿者: WinArrow
投稿者のウェブサイトに移動

質問をもう少し丁寧に悦明しましょう。
 
削除したいのは、列ですか?行ですか?
 
コードを見ると行を削除するように思えます。
 
選択した範囲の中の左側列の中に空白セルがあり、
その行を削除する・・・
EntireRowを指定すると
選択した範囲外に存在するセルも削除されますが・・・・
 
↓こんな感じかな?
With Selection
 行TOP = .Row
  行MAX = .Ros.Ccount
  For Rowx = 行MAX To 行Top Step -1
      If .Cells(RowX,1).Value = "" Then
         .Cells(RowX,1),EntireROw.Delete
       End If
  Next
End With

回答
投稿日時: 22/01/07 11:52:43
投稿者: めんたん

とびとびの範囲で削除しようとするとselectionの範囲もずれてしまうので
Unionメソッドを使っていったん1つのRangeにしてからまとめて削除がいいかな。
 
Dim a As Range, c As Range
Dim myRange As Range
 
For Each a In Selection.Areas
    For Each c In a.Columns(1).Cells
        If c.Value = "" Then
            If myRange Is Nothing Then
                Set myRange = c
            Else
                Set myRange = Application.Union(myRange, c)
            End If
        End If
    Next
Next
 
myRange.EntireRow.Delete

投稿日時: 22/01/07 13:01:09
投稿者: eco2019

すごいです。削除したいのは行です。
 
 WinArrowさん、めんたんさん、どうも有難うございます。