• ベストアンサー

エクセル2003 並び替えとマクロ

OSはウィンドウズXPです。質門は、 1.シートを保護するとマクロが動かないこと 2.マクロの実行前にブックを新しく保存したいことです。 ワークシートは  B---略-----L---------N -------O   1 所在   コード  所有者  備考   2 東京    1    甲 3 埼玉    2    乙    ***   マクロはボタンで作動するようにして以下のようになってます。 Private Sub 所有者ソート_Click() タイトル = "選択" メッセージ = "所有者で並べ替えます" スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal yesno = MsgBox(メッセージ, スタイル, タイトル) If yesno = vbYes Then 上 = 5 左 = 2 右 = 25 '右端 25=X列 下 = Range(Cells(上, 左), Cells(上, 左)).End(xlDown).Row Range(Cells(上, 左), Cells(下, 右)).Select Selection.Sort _ Key1:=Range("N1") _ , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin End If End Sub B列からX列までデータがあり、VLOOKUP関数でリストから参照させたりしてます。この関数の入ったセルは変更したくないのでロックしてます。保護したまま並び替えできるとベストですが、できますか? さらに並び替えのミスで(たとえば選択範囲がN列までになってしまい備考欄が誰のかわからなくなった等)もとに戻したいとき、マクロだと"元に戻す"がきかないので、作業前の状態を保存しておきたいです。 ちなみにエクセルは初心者、マクロは初心者以下です。 素直にマクロを使わずにやったほうがよいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

作業前の状態を保存しておきたいのなら、そのシートは並べ替えしないで複製したシートで並べ替えればいいのでは? シート保護のパスワードが仮にXXXXとした場合、以下でお試しください。 Sub test1() ActiveSheet.Copy After:=ActiveSheet Set ns = ActiveSheet With ns .Unprotect Password:="XXXX" タイトル = "選択" メッセージ = "所有者で並べ替えます" スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal yesno = MsgBox(メッセージ, スタイル, タイトル) If yesno = vbYes Then 上 = 5 左 = 2 右 = 25 '右端 25=X列 下 = .Range(.Cells(上, 左), .Cells(上, 左)).End(xlDown).Row .Range(.Cells(上, 左), .Cells(下, 右)).Sort _ Key1:=Range("N1") _ , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin .Protect Password:="XXXX" End If End With End Sub

barnard
質問者

お礼

シートをコピーするべきでしたね。 単純なことに頭がまわらない・・・・ どうもありがとうございました。 わざわざ書いていただいて感謝します。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

マクロが実行している間は、シートの保護が無くても大丈夫なはずなので SUB ActiveSheet.UnProtect : ActiveSheet.Protect END こうやって、マクロの開始前にシートの保護を解除、マクロの終了直前に シートの保護を設定すればいいです。詳細はVBAヘルプの「PROTECT」と 「UNPROTECT」を参照してください。

barnard
質問者

お礼

ありがとうございました。

関連するQ&A