Excel VBA質問箱 IV

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

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


11743 / 76734 ←次へ | 前へ→

【70523】Re:削除
発言  UO3  - 11/11/24(木) 15:26 -

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

こんにちは

既に皆さんからコメントがありますが、行を削除する場合は
【下から攻める】が定番です。

ところで、不要な行を削除するという方式ではなく【必要な行を残す】という発想で。
ループ回数も若干少なくなっています。

Sub Sample()
  Dim k As Long
  Dim x1 As Variant
  Dim x2 As Variant
  Dim x3 As Variant
  Dim myA As Range
  Dim myR As Range
  Dim v As Variant
  
  With ActiveSheet.UsedRange
    Set myA = Range("A1", .Cells(.Cells.Count))
  End With
  
  ReDim v(1 To myA.Rows.Count)
  For Each myR In myA.Rows
    x1 = Application.Match("名称", myR, 0)
    x2 = Application.Match("工事番号", myR, 0)
    x3 = Application.Match("小計", myR, 0)
    If Not IsNumeric(x1) And Not IsNumeric(x2) And Not IsNumeric(x3) Then
      k = k + 1
      v(k) = WorksheetFunction.Index(myR, 1, 0)
    End If
  Next
  
  ReDim Preserve v(1 To k)
  Cells.ClearContents
  Range("A1").Resize(k, myA.Columns.Count).Value = _
    WorksheetFunction.Transpose(WorksheetFunction.Transpose(v))
  Set myA = Nothing
  
  MsgBox "完了"
  
End Sub

3 hits

【70516】削除 next 11/11/23(水) 13:24 質問
【70517】Re:削除 Abyss 11/11/23(水) 15:47 発言
【70518】Re:削除 Blue 11/11/23(水) 16:09 回答
【70523】Re:削除 UO3 11/11/24(木) 15:26 発言

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