• ベストアンサー

Excel2010 列に入力禁止の×印を

カテゴリが違っていたので変更しました。 複数列(8列で隣接していません。)あるセルに〇印が入力されていると、同じ行の他の列には入力できないように、×印を表示させる方法はありませんか。 ×印のみでセルにロックを掛けるわけではありません。〇印の列はその行では一か所のみで、固定ではなく入力される列は任意です。

noname#194986
noname#194986

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! VBAになってしまいますが、一例です。 >複数列(8列で隣接していません。) とありますので、とりあえず A・C・E・G・I・K・M・O列に表示するとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストして 上記列に「○」を入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim i As Long, j As Long, k As Long, M As Long, myArray '仮に A・C・E・G・I・K・M・O 列を指定する場合 myArray = Array(1, 3, 5, 7, 9, 11, 13, 15) '←ここで列番号を指定する。 i = Target.Row j = Target.Column For k = 0 To UBound(myArray) If j = myArray(k) Then M = M + 1 End If Next k If Selection.Count = 1 And M > 0 Then For k = 0 To UBound(myArray) If Cells(i, j) = "○" Then If j <> myArray(k) Then Cells(i, myArray(k)) = "×" End If End If Next k End If End Sub 'この行まで ※ 「○」が入力されたセル以外は「×」が表示されるだけで、入力は可能です。 外していたらごめんなさいね。m(_ _)m

noname#194986
質問者

お礼

早速回答ありがとうございます。 確認するとまったく意図するところで感謝します。ありがとうございました。 実際には次の通りですが、他の列があるので次のように記述しましたがうまくいきません。何分VBAに詳しくないのでご面倒をおかけしますがよろしくお願いします。 I M Q U Y AC AG AK myArray = Array( 9, 13, 17, 21, 25, 29, 33, 37) myArray = Array(10, 14, 18, 22, 26, 30, 34, 38) myArray = Array(11, 15, 19, 23, 27, 31, 35, 39) myArray = Array(12, 16, 20, 24, 28, 32, 36, 40)

関連するQ&A

  • <Excel>列や高さを固定して入力

    こんにちわ。タイトルの件で質問します。 表を作成しているうちに、勝手に列や高さが変わってしまうことが度々有ります。 固定した状態で文字入力をすることは可能でしょうか? ちなみに私なりに調べた結果です。 (1)某Excelのサイトでは "列幅や、行の高さは、データを入力した時点では自動的に変更されません。" と御返答いただいたのですが、やはり勝手に変わってしまいます。 (2)こちらのサイトの質問の参照。 "ツール→保護→シートの保護 とやれば、変更できなくなります。 入力する個所は、あらかじめセルの書式設定→保護でロックのチェックをはずしておかなければなりません。" 固定した状態で入力をしたいのです。。。 Excelのバージョンは 2002 SP-2 です。 御回答お待ちしております。

  • Excel2007での行、列の同時固定について

    2003での解説はあるのですが、2007では単純に枠の固定を選択する項目がなく、行または列どちらかの選択肢しかないのですが。 表示タブのウインドウ枠の固定、以外からの操作方法はありますか? これだと、先頭行と先頭列どちらか一方しかなく、任意の行、列の固定はできないことになりますが・・・。 2003として使用することも出来るらしい、という説もあるのですが、2003に変更しないとムリでしょうか。

  • EXCEL2007で行の高さと列の幅を固定する方法を教えて下さい。

    EXCEL2007で行の高さと列の幅を固定する方法を教えて下さい。 但し、セルへの文字の入力・変更はできるようにしたいです。 本当に困っています。 よろしくお願いします。

  • Excel2000の列の書式を固定したい

    Excel2000で表作っています。 その中の1列が複数行になる文章のデータです。 その文章全体を表示させると表の形が崩れるため、セルの書式設定で  [ ]折り返して全体を表示する => セルの高さが一定になるように。  [レ]縮小して全体を表示する => 左右のセルが空白の場合、そちらに表示されないように。 としています。 一番上の列のアルファベットを選択して上記設定を行っても、新たにデータ(文章)を入力すると、 そのセルは「折り返して全体を表示する」がONになり、その都度設定し直さなければなりません。 その列の書式を固定して、いちいち設定しなくてもよい方法はありませんか? 「補足」 このデータはコメント的なデータです。 当初セルのコメントとして入力していましたが、将来的にデータを取り出して加工したりする場合、 (例えばテキストとして出力する場合)コメントでは取り出せないため、このようにしています。 もっと良い提案があれば、あわせてお願いします。

  • (Excel VBA)またまた困っています・・・ o...rz

    どうもrozzerです。 またもや高くそびえ立つVBの壁に激突して死にかけてしまっています・・・orz 今度は単純なマクロだと高を括っていたので鼻歌交じりでマクロを組んでいたのですが どうも如何せん上手くいきません! もう死にたいです! 現在エクセルで、とある業務で使うデータベースをマクロを組み最適化を図っています。 まず A列の2行目から任意の行に(10行までしかなかったり、1000行まであったりとランダムにあるとする)、任意の整数値があるとします。 その値の合計を、セル【B1】に表示させたいのです。 ですが、ここで問題なのですがセル【B1】に入力される式はSUM等の関数式ではなく、ただの「数値」として表示させたいのです。 つまりA列の2行目から任意の行(最終行まで)に入力されている整数値に、後々、変更があった場合に【B1】に表示されている値が、一番初めに合計の値をはじき出した値から変化しない様にしたいのです。 そして今度はセル【C1】に、A列の2行目から任意の行(最終行)までの合計値を「SUBTOTAL」関数[=subtotal(9,C1:**)]を入力したいのです。 ここまでの動作をマクロ化したいのですが、どうも如何せんどうも如何せん上手くいきません! もう死にたいです! 何卒、ご教授頂けましたら幸いで御座います。

  • Excel関数で”○”印を検索

    連続したセル(列、行)に”○”印があるセルの数を検索したい。 具体的に言いますと! Excelの表で、行事に参加する人は”○”、不参加は”×”印で表された表があります。 この表の中に、”○”が幾つあるかを検索する、関数は何がよいか教えてください。

  • 行に印のある列を残し他は列削除

    上段の表の1行目の"●"印の列のみ表示し1行目空白は列削除し下段の表にしたいのですがどなたかVBAコードが解る方宜しくお願いします。

  • エクセルのウィンドウ固定と列、行をまとめる

    エクセルのウィンドウ枠の固定で列、行の固定ができますよね。 A列固定やA列と1行目を同時に固定などはできるのですが、例えば A列とZ列を固定し、B~Y列のみをスクロールするようなことはできるのでしょうか。。 また以前ちらっとだけ見たことがあるですが、複数の行を1つにまとめて表示するという手法です。ちなみにセルの結合ではありません。うろ覚えなのですが、例えば1行目から5行目までをまとめて1行にします。(1行目に格納されているような感じでした)そして、1行目のところに十字マークのようなものがあり、それをクリックすると1行目から5行目までがすべて表示されるというものです。 わかりづらい質問ですが、よろしくお願いします。

  • Excel:数値1を入力すると10000になる

    Excel2002 で、webページの表(すべて文字列データ)を貼り付け、 連番を振るために表の途中に列を挿入して一番上の行に 1 を入力したところ、左揃えで10000 と表示されました。 次のセルに =[上のセル番地]+1 とすると 左揃えで 10001 と表示されます。 セルの書式設定を見ると、標準・左揃えになっています。 なぜ 1 を入力しただけで 10000 になってしまうのでしょうか? たいへん不思議です。よろしくお願いします。

  • あるセル列内に任意の文字列があった場合の自動処理

    VBAを利用して、あるセル列内にある文字列があった場合に その文字列が存在した行のAセルからCセルまで自動的に 背景色をグレーにしてくれるような動きをしたいです。 簡単に言うと、「作業完了」の文字列があったらその行をグレーするイメージです。 参考例として、セルC列に対してその列内のあるCセル列に 文字列"@"が入力された場合、その行のA行からC行まで 自動的に背景色を変更したいです。 また、"@"が入力されていない場合は、元の背景色に戻るようにしたいです。 ■ 例1:C2に"@"が入力されるパターン 【入力前】  | A | B | C | -+---+---+---+- 1|   |   |   | -+---+---+---+- 2|   |   |   | ← 当然何も変化なし -+---+---+---+- 3|   |   |   | -+---+---+---+- 【入力後】  | A | B | C | -+---+---+---+- 1|   |   |   | -+---+---+---+- 2|////|////|/@/| ← ← C2に"@"が入力されるとA2~C2までの背景色をグレーに変更。 -+---+---+---+- 3|   |   |   | -+---+---+---+- 【削除】  | A | B | C | -+---+---+---+- 1|   |   |   | -+---+---+---+- 2|   |   |   | ← C2の"@"を消すと入力前に戻る。(元通り) -+---+---+---+- 3|   |   |   | -+---+---+---+- 任意の文字列をきっかけに自動実行するようには出来たのですが それから先がさっぱりで困っています、、、。 よろしくお願いします。

専門家に質問してみよう