- ベストアンサー
Excel セルをクリックするだけで入力
セルをクリックするだけで決まった規則の入力ができないでしょうか? 現在、入力規則のリストを使用して「 」(←空白)と「○」の2種類の入力を選択してしています。 これを空白のセルをクリック(選択)するだけで「○」が入力され、もう一度クリック(選択)すると空白になるような入力ができないでしょうか? 良い知恵をお持ちの方がいらっしゃいましたら是非、お願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
jindonです >この動作を行う、セルの範囲を決めるにはどのようにしたらよいのでしょうか? Target.Row で行を指定 Target.Column で列を指定します。 例:全てコード中の With Target のすぐ下に.. 1. 絶対位置を指定する(A1を想定) If .Row=1 And .Column=1 Then.... Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Row=1 And .Column=1 Then If .Value = "○" Then .Value = "" Else .Value = "○" End If End If End With End Sub 2. 列を指定(A列を想定) If .Column=1 then.... Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Column=1 Then If .Value = "○" Then .Value = "" Else .Value = "○" End If End If End With End Sub 3. 指定した列以外(A列を想定) If .Column<>1 then.... Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Column<>1 Then If .Value = "○" Then .Value = "" Else .Value = "○" End If End If End With End Sub And と Or を使用して範囲を指定できます。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
リストボックスとClickイベント利用。 (1)リストボックスを(例えば)Sheet1上に1つはりつける(コントロールツールボックスから)。 (2)リストボックス(エディトモードで)内で、マウスの右クリック。 (3)プロパテイをクリック。 (4)ListFillRangeの行に例えば G1:G6といれる。プロパティボックスをXで脱出。 項目選択肢5+空白1の場合。 (5)シートのG1:G6に例えば 東京 大阪 名古屋 福岡 札幌 (空白) を入力する。 (6)リストボックス(エディトモードで)内で、マウスでダブルクリック。 (7)VBE画面になり Private Sub ListBox1_Click() End Sub と出るから、中間の行に下記コード1行をいれる。結果 Private Sub ListBox1_Click() ActiveCell = ListBox1.List(ListBox1.ListIndex) End Sub (8)デザインモードを脱する。 (9)Sheet1に戻り、 値をセットしたいセルをクリックしておいて、リストボックスのどれかを選択してクリックすると、その値がセットされる。 (10)消したい時は、消したいデータが入っているセルをクリックして、リストボックスの6番目の空白をクリックすると、消したいデータが入っているセルは空白になります。
お礼
私の書き方が悪かったでしょうか、ちょっと内容が違っていまして、たった2種類の選択なので、いちいち(1)セルをクリック(2)ドロップダウンを開く(3)選択するという作業が面倒なので、1クリックで○と空白が入力できないかなと思ったわけです。 でも、他に使えそうなので感謝です。ありがとうございます。
- jindon
- ベストアンサー率43% (50/116)
#3さんの仰るとおりだと思いましたので、 ダブルクリック時に作動するということで、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Value = "○" Then .Value = "" Else .Value = "○" End If End With End Sub エクセル画面より Alt+F11 でVBEを起動して左側画面より該当シートのアイコンをダブルクリックして、 右側画面の空白部分にコピー+ペーストして下さい。
補足
ありがとうございます。皆さんのを試したのですが、一番jindonさんのものが、使いやすく便利でした。(^^) ところで、この動作を行う、セルの範囲を決めるにはどのようにしたらよいのでしょうか?
- ssssssssss
- ベストアンサー率23% (24/103)
VBA(シートオブジェクトのSelectionChangeイベント)を使用すれば、ご希望の要件が満たせると思います。 ただ、この方法でいくと、普通にセルを選択したい場合との切り分けにちょっと一考が必要ですね。 → ○は指定した列のみ とか。
お礼
ご提案ありがとうございます。 お陰様でjindonさんが、良い案を出してくれました。 確かにセルを移動しただけで入力されるので、ちょっとコツが必要で選択だけでは使いにくかったです。 本当にありがとうございます。
- potedora
- ベストアンサー率47% (66/140)
該当のシートでSelectionChangeイベントに処理を書けば できます。 例としてA1が該当セルの場合の例を書きます。 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Target.Column = 1 And Target.Row = 1 Then If Target.FormulaR1C1 = "○" Then Target.FormulaR1C1 = "" Else Target.FormulaR1C1 = "○" End If End If End Sub イベントはメニューのシート/マクロ/Visual Basic Editorを起動して、 プロジェクトウィンドウの該当シートをダブルクリック して出てきたウィンドウの左上のGeneralを Worksheetに変更して右上のコンボボックスをSelectChangeにすれば表示されます。
お礼
ありがとうございます。 上手く行ったのですが、jindonさんのダブルクリックの入力が一番使いやすかったのでそちらを1位にしてしまいました。 本当にありがとうございます。
- masatoshi5352
- ベストアンサー率12% (26/214)
クリックだけでやってしまうと困らないですか? 普通に入力したいのに○が入る事に成らないですか?
お礼
確かに。ちょっと使いにくかったです。(^^;
お礼
ありがとうございます。お陰様で大変良い物が出来ました。(^^) 使用する人が大変気に入っておりました。 本当にありがとうございます。