- ベストアンサー
Excelで表示されるメッセージ内容を変更したい
1行目のタイトル行の変更を禁止したくて、シートの保護をしました。 (2行目以降のデータ行はロックを外しています) この場合、タイトル行のセルを選んで書き込みを行なおうとすると“変更しようとしているセルまたはグラフは保護されているため、読み取り専用となっています。保護されているセルまたはグラフを変更するには・・・・”というメッセージが表示されるのですが、このメッセージを、例えば“タイトル行の変更、削除、挿入は出来ません。”等、カスタマイズすることは出来るのでしょうか? 可能であれば、やり方を教えて頂けませんでしょうか? 宜しくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Excelのシステムメッセージは変更できないと思いますので、次のよう なシートモジュールで代用されたらいかがでしょうか。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng For Each rng In Selection If rng.Row = 1 Then Select Case Selection.Rows.Count Case Is = 65536 Cells(2, Selection.Column).Select Case Else Selection.Offset(1, 0)(1).Select End Select MsgBox "タイトル行を含む範囲は選択できません。", , "選択禁止!" Exit Sub End If Next End Sub
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
第1行を指定しているか、なら 簡単に1行で Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.Intersect(Target, Range("A1:k1")) Is Nothing Then Else MsgBox "第1行範囲指定禁止" Range("A2").Select End If End Sub 上記コードは、K列までに仮定しているが、最右列を指定のこと。 少数テストでは、これで色々なケースをカバーできるようだが。
お礼
どうもありがとうございます。 お礼が遅くなり、申し訳ございません。 私のやりたいことがバッチリできました。 こんなに短いコードでも出来るのですね。 もっと勉強します。 本当にどうもありがとうございました。
- misatoanna
- ベストアンサー率58% (528/896)
私も最初はkokoroneさまのようにシンプルな内容で記述してみたのです が、少々問題がありました。 例えば最初にA2をクリックしてA1までドラッグすると、アクティブセル はA2になりますので条件の対象外になってしまうのです。 そのように操作するケースは少ないとは思うのですが、一応念のために 継ぎ足し継ぎ足しをして長くなってしまいました。
- kokorone
- ベストアンサー率38% (417/1093)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell.Row = 1 Then MsgBox ("タイトル行は変更できません。") Range("A2").Select End If End Sub 試してみました。
- kokorone
- ベストアンサー率38% (417/1093)
できるできないは別にして、アプリケーションの固定メッセージ を変更してしまっては、後々面倒ですよね。 マクロ(VBA)で代用されてはいかがですか? まずは、考え方をお教えします。 第1行が選択されたかどうか判断します。 第1行が選択された場合、アラートメッセージを表示し、 2行目にアクティブセルを設定します。
お礼
なるほど!! シートの保護機能は使わずに、一行目を変更しようとしているかどうか判断して、メッセージを出せば良いのですね。 確かにその通りですよね。 シートの保護機能に固執しすぎていました。 ご丁寧な回答ありがとうございました。 チャレンジしてみます。