• ベストアンサー

エクセル マクロ 入力制限について

検索で探したのですが、うまくヒットしないため、質問させていただきます。 エクセルのセル入力制限についての質問です。 D1セルが空白でなかったら、A1・B1・C1に入力できないようにする と言う条件です。 それを、D1セルだけでなく、行すべてに適用したいのですが、 (D2 に入力されていたら、A2・B2・C2を入力できなくする) マクロで処理できるでしょうか? マクロ実行は、オープンしたときに実行するようにしたいと考えております。 ご教授お願いします。

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

マクロを使わなくてもできると思います。 A:Dを範囲選択→データ→入力規則→入力値の種類をユーザー定義にし数式として「=$D1=""」と入れます。 あえてマクロでするとなると以下の様になります。 シートの見出しで右クリック→コード表示で以下を貼り付け Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <= 3 Then If Range("D" & Target.Row).Value <> "" Then   MsgBox "入力できません"   Application.EnableEvents = False    Application.Undo    Application.EnableEvents = True End If End If End Sub

jimuinnD
質問者

お礼

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

関連するQ&A

  • Excelマクロ 入力の有無を判定するマクロを組みたい

    はじめまして。 マクロの初心者です。 エクセルマクロを利用して、セルに何か入力(文字でも数値でも)がある場合の判定をしたいのですが、うまくいきません。 具体的には、 ・(A1セルが空白で)B1からC10セル(10個のセル)のいずれかのセルに何か入力された場合 → D1セルに"○"を出力。 ・(A1セルが空白で)B1からC10セル(10個のセル)のいずれかのセルに何も入力がない場合 → D1セルは"(空白)"。 ・但し、大前提として、A1セルに"×"が入力されている場合 → D1セルに"×"を出力。 (B1からC10セル(10個のセル)のいずれかのセルに何か入力されている場合でも、A1セルが"×"ならばD1セルは"×"とする) としたうえで、同様の判定を ・A11セルおよびB11からC20を判定しD11セルに結果を出力、 ・A21セルおよびB21からC30を判定しD21セルに結果を出力、 … と繰り返して、A100セルまで実行させたいと考えています。 (D1、D11、D21、D31、D41、D51、D61、D71、D81、D91の10個のセルに"○"、"×"、"(空白)"の結果を出力したいです) 過去の投稿や解説書などを参照にしているのですが、なにぶん本当に初心者のためうまくいきません、、、 どなたかお力添えをお願いします。

  • エクセル マクロを自動実行

    仕事で使っている書式で、A1に「あいうえお」と入力すると、A2「あ」、B2「い」、C2「う」、D2「え」、E2「お」とMID関数で振り分け、入力後、A行を「表示しない」と「再表示」するマクロをボタンで実行するようにしています。 そこで、 この書式には必ず入力しなければならない項目があるので(非表示しない行のセル)、この項目に入力したら行の非表示マクロを実行し、空白なら行の再表示マクロを実行出来るようにしたくて調べているのですが見つかりません。 1クリックの手間を省く方法をご存知の方ご教示ください。 宜しくお願いします。

  • EXCEL 指定範囲内の空白セルに特定数だけ文字を入力するマクロ教えてください。 

    マクロ初心者です。 指定範囲内の空白セルに特定数だけ文字を入力するマクロを考えていますが、まったくわかりません。どなたか教えていただけますか? 詳細内容 (1)下記のような空白セルを含む範囲内        A B C D       1  A君       2       3A君  B君       4  C君  (2)別セルでA君に1追加するとA君が表示上追加される        A B C D       1  A君  A君←どこでも空白セルならいい       2       3A君  B君       4  C君 

  • Excelでのマクロについての質問

    ひとつの例ですが A1 佐藤 A2 山田 A3 田中 A4 高橋 A5~A10 空白 B1 山下 B2 田代 B3 吉田 B4~B10 空白 と元のデータが入力されているとします A1~A10,B1~B10に入力されるセル数は変化します 例えばA4~A7にデータがあり、B1~B10は空白という場合もあります ただし必ず上から順に入力されているとします C1~C10、D1~D10には [C1] =IF(A1<>"",A1&"君",""),[C2] =IF(A2<>"",A2&"君","") ・・・ [D1] =IF(B1<>"",B1&"君",""),[D2] =IF(B2<>"",B2&"君","") ・・・ というように元のデータを 加工するための数式が入力されています マクロが登録されているボタンを押すと E1から下方向へC1,C2,C3,C4,D1,D2,D3,(以後空白)と C1~C10、D1~D10の順に空白を除いた「値」が入力されるよう マクロを組むにはどうすればいいでしょうか

  • エクセルで必須入力

    A列のどこかに入力があるとその行のB~Eまでを必須入力としたいのですが 良い方法はありますでしょうか。 マクロでは無く、できれば関数で簡単にできると助かります。 例A1のセルに入力があるとB1、C1、D1、E1を必須入力とする。 保存時に空白だとメッセージ等で警告を出すか、保存できないようにする。

  • 検索の実行で、ヒットした行のA列の番号を、セルB3に自動入力するマクロ

    検索の実行で、ヒットした行のA列の番号を、セルB3に自動入力するマクロを教えてください。 エクセルの6行目から約19000行目まで、A列には1からの番号、B列に薬名、C列に剤形、D列にコードが入力されている薬台帳があるのですが、この台帳から薬名を検索して、最初にヒットしたA列の番号をセルB3に表示したいのです。 どなたかよろしくお願いします。

  • エクセルでの連番の処理

    お世話になります。 1行目に入力されたデータをルールに沿って2行目以下にどんどん追加していきたいと思っています。 まずD1、E1のセルに数字を入れます。 例:D1に3、E1に25 を入れてマクロを実行するとD列の2行目以下に3,4,5,6…25と連番で入力出来るようにしたいのです。 この例ではD列は24行目まで入力されています。そこで2行目から24行目までのA,B,C列にはそれぞれ1行目のA,B,C列と同じデータを入力します。なおA,B,C列は数字、文字列どちらもあります。空白の場合もあります。 この状態でA~E列の1行目のデータを変更し、仮にD1を2、E1を15としたとします。ここで再度マクロを実行すればD25に2、そして順に連番が入りD38に15が入るようにします。 同時に25行目から38行目までのA,B,C列にはそれぞれ1行目のA,B,C列と同じデータを入力します。 これの繰り返しです。 つまり2行目以下のD列で空白の行以下にどんどん連番を入れていく具合です。 前提としてD1、E1は整数しか入りません。またE1の数字はD1より大きいです。ただD1,E1に同じ数字が入った場合、その数字の1行分だけが入力されるようにします。 以上の処理が自動化できるマクロはできますか? アドバイス願います。

  • Excelでのマクロ作成について

    次のようなマクロをExcelで作りたいのですが上手くできませんでした。みなさんのお力をお借りしたいと思い質問しました。 [質問内容]       A        B        C 1 20030303120000 2 3 20030406120000 4 5 20030512120000 6 7 このようなシートで、セルA1の内容を「03/03/2003」に変更して行2を削除する。(セルの内容ではなく行そのものを削除する。) この作業を繰り返して次のようなシートにする。      A        B        C 1 03/03/2003 2 04/06/2003 3 05/12/2003 4 5 ひとつのマクロを繰り返し実行するのでも構いませんが、数が多いのでできれば100行程度を一度に実行できれば助かります。 よろしくお願いします。

  • エクセルで連番をマクロで

    こんにちは いつもお世話になっています。 Windows7、エクセル2010で教えてください。  B3から仮にB100まで文字列があるとします、空白セルはありません。 この状態でA3からA100まで1から始まる連番をマクロで実行したいのです。 実際はB列のデータの最終行は不定です。つまり、B列にデータがなくなるまで(空白セルになるまで)A列に連番をつけたいのです。現在はA3,A4に1,2と入力し、オートフィルで該当セルを選択し「予測」で連番をつけています。 マクロ記録ではB列にデータがなくなる判断ができなくて作れません。 この作業が頻繁にあるものですからマクロができれば助かります。 よろしくお願いいたします。

  • Excel 空白行を上に詰めるマクロ

    関数を使用して、sheet1からsheet2に必要なデータを抜き取りました。 sheet2のセルには関数が入っています。 sheet2の抽出データには1行単位(まれに2~3行続けて)空白が発生します。 この行を削除し、かつ上に詰めて表示をしたいのですが、下記の条件で実行可能でしょうか? (例) sheet1 ⇒ sheet2   A   B   C     A  B  C 1 あ  い  う   1 あ  い  か 2        か   2 (空白行) 3 き  く   け    3 き  く  し   4 こ  さ   し   4 (空白行) ●2行目、4行目を削除し、且つ5行目以降に入力されている関数は削除したくない ●空白行削除のマクロは自動?(sheet1のデータを変更したら)で実行できるようにしたい よろしくお願いします。