Excel VBA質問箱 IV

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

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


12116 / 76734 ←次へ | 前へ→

【70144】Re:列が空白ならば削除したい
回答  UO3  - 11/10/17(月) 11:38 -

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

オートフィルターによる処理案です。
2行目がタイトル行、かつ、2行目が結合されている列は選択できません。
(選択されればエラーメッセージをだして中断します)

Sub SampleA()
'オートフィルター
  Dim myA As Range
  Dim myR As Range
  Dim lCell As Range
  Dim z As Long
  Dim i As Long
  Dim j As Long
  Dim k As Long
  Dim v As Variant
  Dim w() As Variant
  Dim vCols As Variant
  Dim allB As Boolean
  Dim ct As Variant
  
  With ActiveSheet.UsedRange
    Set lCell = .Cells(.Cells.Count)
  End With
  vCols = checkCols(lCell.Column)
  If Not IsArray(vCols) Then
    MsgBox "タイトル行が結合されている列は選択できません"
    Exit Sub
  End If
  
  Application.ScreenUpdating = False
  
  Set myA = Range("A2", lCell)
  'オートフィルター設定が残っていれば、いったんリセット
  If ActiveSheet.AutoFilterMode Then _
      ActiveSheet.AutoFilterMode = False
  myA.AutoFilter
  
  For Each ct In vCols
    myA.AutoFilter Field:=ct, Criteria1:="="
  Next
      
  Set myR = Intersect(ActiveSheet.AutoFilter.Range, ActiveSheet.AutoFilter.Range.Offset(1))
  If Not myR Is Nothing Then myR.EntireRow.Delete
  
  myR.AutoFilter
  Set myA = Nothing
  Set myR = Nothing
  
  Application.ScreenUpdating = True
  
  MsgBox "処理が完了しました"
  
End Sub

Private Function checkCols(mCols As Long) As Variant
  Dim a As Range, b As Range
  Dim k As Long
  Dim v() As Variant
  Dim mc As Boolean
  ReDim v(1 To mCols)
  For Each a In Selection.Areas
    For Each b In a.Rows(1).Cells
      k = k + 1
      v(k) = b.Column
      If Cells(2, b.Column).MergeCells Then mc = True
    Next
  Next
  If mc Then
    checkCols = False
  Else
    ReDim Preserve v(1 To k)
    checkCols = v
  End If
End Function
4 hits

【70129】列が空白ならば削除したい ごん 11/10/17(月) 7:47 質問
【70132】Re:列が空白ならば削除したい UO3 11/10/17(月) 9:40 発言
【70136】Re:列が空白ならば削除したい UO3 11/10/17(月) 10:11 発言
【70141】Re:列が空白ならば削除したい UO3 11/10/17(月) 11:06 回答
【70145】Re:列が空白ならば削除したい ごん 11/10/17(月) 11:42 質問
【70144】Re:列が空白ならば削除したい UO3 11/10/17(月) 11:38 回答
【70146】Re:列が空白ならば削除したい ごん 11/10/17(月) 11:48 質問
【70148】Re:列が空白ならば削除したい UO3 11/10/17(月) 11:57 発言
【70149】Re:列が空白ならば削除したい UO3 11/10/17(月) 12:48 回答
【70151】Re:列が空白ならば削除したい ごん 11/10/17(月) 13:57 発言
【70156】Re:列が空白ならば削除したい UO3 11/10/17(月) 17:40 回答
【70159】Re:列が空白ならば削除したい ごん 11/10/18(火) 9:06 お礼
【70166】Re:列が空白ならば削除したい UO3 11/10/18(火) 10:27 回答
【70150】Re:列が空白ならば削除したい kanabun 11/10/17(月) 12:53 発言
【70152】Re:列が空白ならば削除したい ごん 11/10/17(月) 15:59 お礼

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