| 
    
     |  | ▼Hirofumi さん: こんにちは。ご回答ありがとうございます!
 ご教示いただいた手法で整列そのものはできたのですが、新たな問題が出てしまいました。
 
 実はワークシートの任意の検索行を削除するコマンドボタンを作ってあります。
 
 検索キーは社員番号です。
 
 しかし、今回教えていただいたコードを実行し、整列させるとこの削除コマンドが検索行を正しく削除してくれなくなってしまいました。
 この削除コマンドの概要を下記に記します。
 今回の整列コマンドとの整合性についてご教示お願いします。
 
 ●削除コマンド
 
 A列  B列  C列    D列  E列  F列  ←列番号
 職務 氏名 社員番号 点数A 点数B 点数C ←見出し
 S  ○○ ○○○○  ○   ○   ○
 M  ○○ ○○○○  ○   ○   ○
 S  ○○ ○○○○  ○   ○   ○
 S  ○○ ○○○○  ○   ○   ○
 M  ○○ ○○○○  ○   ○   ○
 M  ○○ ○○○○
 J  ○○ ○○○○
 J  ○○ ○○○○
 S  ○○ ○○○○
 
 これと同様のシートが1月〜12月まであります。
 
 ユーザーフォームにて、削除したい社員番号を入力し、それを検索キーとして、検索します。
 
 ある1枚のワークシート”上期”上でその番号を検索したらその検索番号を含む行について、上期及び他の12枚のシートに対して一斉に削除を行えるように下記ボタンを作成しています。(ponponさんからアドバイスいただきました。)
 
 ※なお、上期シートにはチェックボックスオブジェクトもあるので、上期シートにはオブジェクトの削除も含まれます。
 
 Private Sub 職務変更削除ボタン_Click()
 
 Dim myRow As Variant
 Dim ans As Variant
 Dim i As Integer
 
 If Me.検索番号TextBox1.Text = "" Then
 MsgBox "検索番号を入力してください。"
 Else
 With Worksheets("上期")
 myRow = Application.Match(Val(Me.検索番号TextBox1.Text), .Range("C:C"), 0)
 If IsError(myRow) Then
 MsgBox "既に削除されています。"
 検索番号TextBox1.Text = ""
 Exit Sub
 End If
 
 ans = MsgBox("削除してもよいですか?", vbYesNo)
 If ans = vbYes Then
 
 .Cells(myRow, "C").EntireRow.Delete shift:=xlUp
 For Each chcB In .CheckBoxes
 If Cells(myRow, "C").Offset(0, 17).Top = chcB.Top Then
 chcB.Delete
 End If
 Next
 
 For i = 1 To 12
 Worksheets(i & "月").Cells(myRow, "C").EntireRow.Delete shift:=xlUp
 Next
 
 Else
 Exit Sub
 End If
 
 End With
 End If
 
 End Sub
 
 |  |