• ベストアンサー

Excelで表示されるメッセージ内容を変更したい

1行目のタイトル行の変更を禁止したくて、シートの保護をしました。 (2行目以降のデータ行はロックを外しています) この場合、タイトル行のセルを選んで書き込みを行なおうとすると“変更しようとしているセルまたはグラフは保護されているため、読み取り専用となっています。保護されているセルまたはグラフを変更するには・・・・”というメッセージが表示されるのですが、このメッセージを、例えば“タイトル行の変更、削除、挿入は出来ません。”等、カスタマイズすることは出来るのでしょうか? 可能であれば、やり方を教えて頂けませんでしょうか? 宜しくお願いいたします。

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

  • ベストアンサー
回答No.2

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

cororon3
質問者

お礼

なるほど!! シートの保護機能は使わずに、一行目を変更しようとしているかどうか判断して、メッセージを出せば良いのですね。 確かにその通りですよね。 シートの保護機能に固執しすぎていました。 ご丁寧な回答ありがとうございました。 チャレンジしてみます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

第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列までに仮定しているが、最右列を指定のこと。 少数テストでは、これで色々なケースをカバーできるようだが。

cororon3
質問者

お礼

どうもありがとうございます。 お礼が遅くなり、申し訳ございません。 私のやりたいことがバッチリできました。 こんなに短いコードでも出来るのですね。 もっと勉強します。 本当にどうもありがとうございました。

回答No.4

私も最初はkokoroneさまのようにシンプルな内容で記述してみたのです が、少々問題がありました。 例えば最初にA2をクリックしてA1までドラッグすると、アクティブセル はA2になりますので条件の対象外になってしまうのです。 そのように操作するケースは少ないとは思うのですが、一応念のために 継ぎ足し継ぎ足しをして長くなってしまいました。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.3

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)
回答No.1

できるできないは別にして、アプリケーションの固定メッセージ を変更してしまっては、後々面倒ですよね。 マクロ(VBA)で代用されてはいかがですか? まずは、考え方をお教えします。 第1行が選択されたかどうか判断します。 第1行が選択された場合、アラートメッセージを表示し、 2行目にアクティブセルを設定します。

関連するQ&A