Excelのセルにフルパス名を表示する方法とセルの編集制限について

このQ&Aのポイント
  • Excelのセルにダイアログボックスで指定したファイルのフルパス名を表示する方法について解説します。
  • セルの中にフルパス名全体が入りきらず、表示が切れてしまう場合の対処法についても説明します。
  • セルの編集を制限してフルパス名の直接編集を防ぐ方法についても紹介します。
回答を見る
  • ベストアンサー

Excel 選択はできるが変更できないようにしたい

Excelのシートのあるセルに、 ダイアログボックスでユーザーが指定したファイルの フルパス名を表示していますが、 ダイアログボックスでのみ選択できて、 セルの値を手で直接編集はできないようにしたいが、 セルは選択できて上部の数式バーに セルの値が表示されるようにしたいのですが、 このようにすることはできるでしょうか。 (Windows7, Excel2010) セルの中にフルパス名全体が入りきらず、 フルパス名全体を確認することができません。 セルからはみ出して表示するのは避けたいです。 書式設定の「折り返して表示する」では、 ファイルによって1行になったり2行になったりして 見た目が変わってしまいます。 また、「縮小して全体を表示する」では、 文字が小さすぎて読み辛くなってしまいます。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8512/19351)
回答No.4

(b)は「セルをロックしてシート保護」で出来ます。 なので、aもbもcも同時に実現可能です。

yam2012
質問者

お礼

(b)のセルをロックしてシートの保護をするときに 「ロックされていないセル範囲の選択」だけでなく 「ロックされたセル範囲の選択」もチェックして シートの保護をすることにより (b)のセルを選択できるが編集できないように することができました。 ありがとうございました。

その他の回答 (3)

  • chie65535
  • ベストアンサー率43% (8512/19351)
回答No.3

>a)入力セル以外のセルは「選択も編集もできないセル」 >b)ダイアログの結果を表示する入力セルは「選択はできるが編集できないセル」 >c)上記以外の入力セルは「選択も編集もできるセル」 >にしたかったのですが、 >「ロックされたセル範囲の選択」が、 >チェック状態では、a)が選択できてしまいます。 >未チェック状態では、b)が選択できなくなってしまいます。 >この3つの状態のセルを実現することはできないでしょうか。 a)は可能ですが、VBAでイベントプロシージャを記述する必要があり、非常に複雑になります。 「選択も編集も出来ないセル」は「選択出来ないセル」で充分です。選択出来ない状態では編集は不可能です(編集するには、そのセルを「選択」出来なければならないので) 以下ページの手順に従ってイベントプロシージャを記述する準備をして下さい。 http://kabu-macro.com/word/a-z/selectiion_change.html 上記ページの「これでSelectionChangeを使用する準備が整いました。」の所まで作業したら、以下のコードを入力してみて下さい。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static LastCell As Range Dim Flags As Boolean Flags = False Flags = Flags Or Not Application.Intersect(Target, Range("A20:C40")) Is Nothing Flags = Flags Or Not Application.Intersect(Target, Range("B20:D30")) Is Nothing Flags = Flags Or Not Application.Intersect(Target, Range("E1:F30")) Is Nothing Flags = Flags Or Target.Row < 10 Flags = Flags Or Target.Column < 5 Flags = Flags Or Target.Row > 200 Flags = Flags Or Target.Column > 20 If Flags = True Then If Not LastCell Is Nothing Then LastCell.Activate Else Set LastCell = ActiveCell End If End Sub この例では「A20~C40」「B20~D30」「E1~F30」「1~9行すべて」「A~D列すべて」「201行以下すべて」「U列以降すべて」の範囲を「選択不可」にしています。 この例を参考に「カーソルを行かせたくない場所すべて」をコードに書いて下さい。 例えば「A4」「B8」「C10~D12」の3箇所を「選択出来ない場所」にしたい場合は Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static LastCell As Range Dim Flags As Boolean Flags = False Flags = Flags Or Not Application.Intersect(Target, Range("A4")) Is Nothing Flags = Flags Or Not Application.Intersect(Target, Range("B8")) Is Nothing Flags = Flags Or Not Application.Intersect(Target, Range("C20:D20")) Is Nothing If Flags = True Then If Not LastCell Is Nothing Then LastCell.Activate Else Set LastCell = ActiveCell End If End Sub のようにします。 また「2行目と4行目」と「101行目以降」を「選択出来ない場所」にしたい場合は Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static LastCell As Range Dim Flags As Boolean Flags = False Flags = Flags Or Target.Row = 2 Flags = Flags Or Target.Row = 4 Flags = Flags Or Target.Row > 100 If Flags = True Then If Not LastCell Is Nothing Then LastCell.Activate Else Set LastCell = ActiveCell End If End Sub のようにします。 なお、このプログラムは「シートの保護」や「セルのロック」とは無関係に動作します。 ですので、一旦、このプログラムを組み込むと「選択禁止にしたセルを、2度と選択出来なくなる」ので注意して下さい。 「選択禁止にしたセルの値を修正する必要が出た」などで、このプログラムを無効にしたい場合は Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static LastCell As Range Dim Flags As Boolean 'このプログラムを無効にする命令 Exit Sub Flags = False Flags = Flags Or Not Application.Intersect(Target, Range("A20:C40")) Is Nothing Flags = Flags Or Not Application.Intersect(Target, Range("B20:D30")) Is Nothing Flags = Flags Or Not Application.Intersect(Target, Range("E1:F30")) Is Nothing Flags = Flags Or Target.Row < 10 Flags = Flags Or Target.Column < 5 Flags = Flags Or Target.Row > 200 Flags = Flags Or Target.Column > 20 If Flags = True Then If Not LastCell Is Nothing Then LastCell.Activate Else Set LastCell = ActiveCell End If End Sub のようにコードを書き換えてからセルを編集して下さい。

yam2012
質問者

お礼

教えていただきました方法で、 指定したセルは選択と編集はできなくなり(c)、 指定したセル以外は選択と編集ができる(a)ようになりましたが、 この状態で、選択はできるが編集ができないセル(b)も 混在させることは無理ということですね。 ありがとうございました。

  • chie65535
  • ベストアンサー率43% (8512/19351)
回答No.2

追記。 「シートの保護」を行なう際に「ロックされたセル範囲の選択」のチェックは「外さない」で下さい。外すと「選択不可」になって「数式バーで値を見る」のが出来なくなります。

yam2012
質問者

お礼

回答ありがとうございます。 「特定のセルを編集禁止」すると、 「ロックされたセル範囲の選択」を未チェックにして 「シートの保護」をした時は、ロックされたセルはすべて 編集禁止になり、セルの選択ができなくなってしまいます。 「ロックされたセル範囲の選択」をチェックにして 「シートの保護」をした時は、ロックされたセルはすべて 編集禁止になり、セルの選択ができてしまいます。 質問の内容の表現があまりよくなかったのですが、 したかったことは、 ダイアログボックスで選択したフルパスを表示するセルは、 編集できないが選択できるようにして、 ダイアログボックスで選択したフルパスを表示するセル以外の ユーザーが入力するセルは、 選択も編集もできるようにしたかったのですが 可能でしょうか。

  • chie65535
  • ベストアンサー率43% (8512/19351)
回答No.1

ご参考。 http://www.atmarkit.co.jp/ait/articles/0709/28/news153.html 上記の方法で「特定のセルを編集禁止」にします。 なお「マクロ等でセルに値をセットする際」には、マクロで「シートの保護の解除」をした上で値をセットし、値のセットが終わったら、マクロで「シートの保護」をやり直すようにして下さい。 シートが保護された状態で、セルがロックされている時は、手動で値を書き換える事は出来ないのはもちろん、マクロ等を使った場合もセルに値をセット出来ません。

yam2012
質問者

お礼

回答ありがとうございます。 質問の内容の表現があまりよくなかったのですが、 a)入力セル以外のセルは「選択も編集もできないセル」 b)ダイアログの結果を表示する入力セルは「選択はできるが編集できないセル」 c)上記以外の入力セルは「選択も編集もできるセル」 にしたかったのですが、 「ロックされたセル範囲の選択」が、 チェック状態では、a)が選択できてしまいます。 未チェック状態では、b)が選択できなくなってしまいます。 この3つの状態のセルを実現することはできないでしょうか。

関連するQ&A

  • EXCELでセルの書式設定ダイアログボックスが出ません。

    私はEXCEL2000です。 人からもらったファイルなんですが、目的のセル上で右クリックして、セルの書式設定をクリックしてもダイアログボックスが出ません。 変更するためになんとか見つけたのが、編集-クリア-書式で一度書式をクリアするか、又は不思議なのですが、セルを白で塗りつぶしたりすれば、書式設定のダイアログボックスが出るようになります。 このセルにはいったいどんな設定がしてあるのでしょうか?

  • Excel特定文字のある行に色をつけたい

    Excel2010です。 特定文字を含む行に色をつけたいのですが上手くいきません。 色々調べてみたのですが、思い通りの設定になりません。 【条件付き書式】にて【数式を使用して、書式設定するセルを決定】から【=countif($C2,”*コース*”)】と入力し【書式】にて塗りつぶしを選択しているのですが上手くいきません。 条件としては ○○コース(○回目)と書かれている行に色を付けたい。です ですが上記の設定をした場合、選択してあるセルのみ色がついて行に色はついてません。 他の行にも同じように○○コースとあるのに色が着かず、そのセルのみ色が着いてます。 試にその色が着いているセルから『コース』という文字を外しても色が着いたままです。 シート全体を選択して上記、数式を入力した場合。 ○○コースと書かれている行の上の行が色付けされてしまいます。 図のような出来上がりにするには、どう設定したらいいのでしょうか?

  • Excel2007 条件付き書式の設定について

    よろしくお願いします。 列はAからG列まであり、行は1から10行まであるとします。 例えば2Fの値として特定の文字列が入力された場合に、 その行全体をマスク(色)したいのですが、条件付き書式 を設定するときに選択されていたセル(1つ)のみしか反映 されません。(行全体を指定しても反映しない) 方法としては、「数式を使用して、書式設定するセルを決定」 の「次の数式を満たす場合に値を書式設定」に 「=2f="文字列"」のように入力して書式設定し、 反映して欲しい行全体を適用範囲として選択しています。 Excel2003ではできていた(はず)のですが。 アドバイスのほどよろしくお願いします。

  • エクセル

    エクセルでセル内で任意のところで改行し、2行に 表示したいのですが、セルの書式設定→配置では折り返し、もしくは縮小して全体を表示になります。この方法じゃなくて、改行して表示する方法はないんでしょうか?どなたかご存知ないですか?

  • Excelでセル内の文字列を全て表示したい。

    Excel2000を使って、ブックA(入力用シート)の特定のセルに入力されている文字列をブックB(出力用テンプレート)の特定のセルに表示したいのですが、セルの大きさが異なるため、全体を表示できません。セルの書式設定で「折り返して全体を表示する」にすると、結局全部の文字列は表示されませんし、「縮小して全体を表示する」にすると1行になって縮小されてしまい、小さすぎて読めません。両方同時に指定できれば良いのですが不可能なようなので、VBAや関数、その他機能を使って実現できないものかと考えております。 何か良いお知恵をお貸し頂ければ有難いのですが。

  • Excel 条件付き書式◆ 同じ行の特定のセルを指定するには

    A列には、ずらーっと、日付の数値が入っています。 B列には、「その日の行動スケジュール」の文字列が入っています。 ”今日”になったら、その日付に該当するB列の「行動スケジュール」だけ文字の色を変えたいと思いました。 このとき、列全体を範囲指定して、「条件付き書式」を設定しようと思ったのですが、数式の書き方がわかりません。 まず、B列のBのところをクリックして列全体を指定した上で、「条件付き書式」の設定のダイアログを出し、「数式が」を選択すればいいだろうというところまではわかります。 しかし、数式において、どのように記述すると、”B列の特定のセルと同じ行にあるA列のセル”だけを選択できるようになるのかがかわかりません。 おそらく、下の●のところに、同じ行にあるA列のセルだけを指定するための記号が入ると思うのですが、手本がどこにも見つかりません。 =●●=today()

  • Excel97以降でセルの「選択範囲内で中央」を簡単に!

    ご存じかと思いますが、Excel97以降で、選択範囲内でセルの「選択範囲内で中央」書式を適用するには、「セルの書式設定」ダイアログから選ばないといけません。 結合すると何かと不便なことが多く、「選択範囲内で中央」書式を多用しているのですが、コマンドボタンもなく、マクロで対応しようとしていますが、。よくわかりません。 この問題を解決する良い方法はありませんか。

  • エクセルで二つ困っています

    二つ教えてください 一つ目は、エクセルで列がA列からT列まで有るのですが、その内のF~J列はどれか一つしか選択できないようにするにはどうすればいいですか?うまく書けないのですが、例えばF列目に◎を選択したら、残りのG~J列には何も出ない様にしたいということです。 二つ目は、行が1行から100行まであるのですが、その内、1行から10行までは隠したいデータなので行だけを非表示にしたのですが、再表示で行が出てこなくなってしまいました。通常は名前ボックスにA1と入れて書式の行の再表示をすれば出てくると思うのですが出てきません。おかしいのは通常は例えばA列全体をクリックすると名前ボックスにはA1が表示されてA1があることになっているはずですが、今の状態はA10しか表示されません。でも非表示の行のデータを参照して表示されているところの数式は計算は出来ています。非表示の所のデータを修正したいのに表示出来なくて困っています。何をしてしまったか全く記憶に無いのですが、ファイルを保存して、次の日開いたらこの様になっていました。 どうか解決方法を教えてください。

  • Excelの数式が表示されない

    Excel2007を使っています。 2000までは、セルに数式を入れると上部のバーに数式が出たのですが、 2007では表示されません。 例えばセルに「100」と入っているとき、2000では「=50*2」とか「=A3+B5」というように入力した数式が見えるようになっていました。 2007になってから、数式バーがなくなったのでしょうか。 数式を表示させるにはどうしたらいいでしょうか。

  • Excel 2016 で一つのセル内で改行したい

    Excel で一つのセル内で改行する方法をお願いいたします 列と行を広くして一つのセル内に複数行記入したいのです 書式設定では 折り返して全体を表示する         縮小して全体を表示する        セルを結合するが有りますが        セル内での改行が有りません 前の文字をスペースで送ると改行らしき事は出来るのですが文字の並びがズレて来るのでよろしくお願いいたします

専門家に質問してみよう