次の方法で共有

データの入力規制について

Anonymous
2022-03-31T08:25:05+00:00

O4からO53(増減します)の範囲をデータの入力規制を使って、空白セルのみ入力可能で、入力済セルへの再入力は「注意」としたいです。

O4が入力済みならQ4に文字を表示させ、ユーザー設定の数式に「=Q4=""」とやってみたのですが、空白セルまで「注意」となってしまいます。

変更履歴が使えたら可能かとも思ったのですが、変更履歴をリアルタイムで指定セルに出力させる方法が分かりません。

何か良い方法はないでしょうか?

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2022-04-01T02:06:37+00:00

    「データの入力規則」のことを言っているのだという前提ですが、まず最初の一行については、空白セル(未入力)か入力済みかにかかわらず適用されるから無理です。

     次は「O4が入力済みならQ4に文字を表示」というのは、Q4に"=O4"と入力ということですか? その上でO4のデータの入力規則の[入力値の種類]を「ユーザー設定」にして…ということでしょうか。

     最後の変更履歴はよくわかりませんが到底できるとは思えません。

     VBAを使えばできますが。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. ひまじん 17,185 評価のポイント
    2022-04-04T15:19:28+00:00

    こんにちは。横合いから失礼します。

    既に、VBA(マクロ)で対処する場合の適切な回答が寄せられていますので、もう解決済みかもしれませんが、慣れていないと時間が掛かって苦戦する場合もあるかと思います。

    なので、遅ればせながら、最初の質問内容に沿って VBA(マクロ)を使わない方法も考えてみました。

    もう必要ないということでしたら、全て読み飛ばしてください。

    考え方としては、入力したデータの確定方法を Enterキー押下ではなくマウスのクリックに変えることが主眼になります。

    以下では、その設定方法や操作方法を細かく書いてみました。

    ※以下、O(英大文字の「オー」)と Q(英大文字の「キュー」)の表示が紛らわしいのでご注意ください。

    <設定方法>

    1. O4セルから O53セルの範囲に「データの入力規則」を設定します。
      (ここは質問文に書かれている通りの設定かと思いますが、念のため少し細かく書いています。)
      ・まず O4セルを選択した状態で、リボンの「データ」タブから「データの入力規則」を開き、以下のように設定します。
      「入力値の種類」:「ユーザー設定」
      「数式」: =Q4=""
      ・O4セルの設定が終わったら、これを O53セルまでコピーします。
    2. Q4セルから Q53セルに数式を設定します。
      ・まず Q4セルに以下の数式を入力(あるいはコピー・貼り付け)します。
      =IF(O4="","","注意")
      ・Q4セルの入力が終わったら、これを Q53セルまでコピーします。

    ※最初の質問文を読む限り、 O列に何か入力されたら Q列に「注意」と表示させたいというように読めましたので、こういった形にしてみました。

    <操作方法>

    ※以下、O4セルについて書いていますが、他のセル( O5セルから O53セルまで)についても同様に操作してください。

    • O4セルが空白だった場合。
      O4セルに何かを入力したら、Enterキーを押して確定せずに、マウスで他のセルをクリックすることで確定させてください。
      マウスでクリックするセルは他のどのセルでも(何かが入っていても)構いません。

    日本語IME を使った全角文字など(漢字など)の入力の場合も、マウスで他のセルをクリックすることで、IME の入力とセルへの入力を両方とも確定させてください。
    ノートPC などで、タッチパッドなどをお使いの場合は、他のセルをタップすることで入力を確定させてください。

    確定後、O4セルの内容は入力した内容に書き換えられ、Q4セルには 「注意」 という文字列が表示されます。

    もし、間違って Enterキーを押して図1のようなメッセージが表示された場合は、「再試行」ボタンを押してやり直してください。(図1のメッセージ内容を変えることも出来ますが、取り合えずそのままにしています。)
    ・図1
    画像

    • O4セルに何かが入力されていた場合。
      この場合、Q4セルには 「注意」 が表示されているはずなので、O4セルの入力をどんな形で確定させようとしても、図1のようなメッセージが表示され、O4セルの内容の変更は出来ません。
    • O4セルの内容を削除した場合。
      (「データの入力規則」が設定されていても、Deleteキーなどによりセル内容の削除だけは出来ますので。)
      この場合、Q4セルの表示も空白(空白の文字列)となるので、以降は O4セルへの入力(内容の書き換え)が出来るようになります。
      以降は、『O4セルが空白だった場合。』に書いている操作方法に従ってください。

    以上です。

    こういったように操作方法を細かく書くと長くなりますが、肝心なのは、入力をマウスのクリックなどで確定するということです。

    VBA(マクロ)で処理するのがベストかとは思いますが、簡単な方法ですので、お試しになってみてはいかがでしょう。

    ・Windows11 と Excel2021

    ・Windows10 と Excel2016

    の組み合わせで動作確認しています。

    ご参考になれば幸いです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2022-04-02T06:34:44+00:00

    確認ですがVBAでのプログラミング経験はありますか? まったく無い方にここで初歩から説明するというのはさすがに勘弁願います。

     ひとまず(他にもやり方はあるでしょうが)考え方の骨子を書きます。

    1. 入力用セル(O4:O53)があるシートAと、入力用セルに対応するセルのあるシートBを用意する。
    2. Aのシートモジュールの WorkSheet_Change イベントプロシージャでO4:O53の変化を検出したら、Bの対応セル(アドレスはAと同じ方がコードが簡潔になると思います)が空白(初期状態)であればAに入力された値と同じものを書いて終了。
    3. Bの対応セルが空白でない(対応するAのセルが入力済み)なら上書き確認をし、Yesならば終了。
    4. 上書き確認でNoならばBの対応セルの値をAのセルに書く。

     ポイントは最後の処理のためにイベントプロシージャを「再帰処理」にする必要があることです。

     なおシートBは非表示にした方が見た目的によいかと思います(単なる好みかもですが)。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2022-04-02T00:19:28+00:00

    回答ありがとうございます。

    >次は「O4が入力済みならQ4に文字を表示」というのは、Q4に"=O4"と入力ということですか? その上でO4のデータの入力規則の[入力値の種類]を「ユーザー設定」にして…ということでしょうか。

    はい、そうです。

    >最後の変更履歴はよくわかりませんが到底できるとは思えません。

    校閲タブにある変更履歴の記録(レガシー)の事です。デフォルトでは表示されていないです。

    >VBAを使えばできますが。

    VBAで下記の方法を教えていただけないでしょうか?

    O列の空白セルのみ入力可能で、入力済セルは再入力(データの上書き)時に確定のエンターキーを押すと「上書きしても大丈夫でしょうか?」&YES,NOとメッセージを表示させ、

    YESなら上書きでNOなら上書きしないようにしたいです。

    よろしくお願いいたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません