|
▼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
|
|