質問: excelでセルの機能付与について質問です 見てくださってありがとうございます. 早速質問ですが,excelで表を作成した際に,ひとつのセルにクリックするたびに内容が変わる機能をつけたいのですが,どのようにすれば良いかわかりません.どなたか教えてください.よろしくお願いします. イメージとしまして,クリックするたびにセルに書かれている内容が[小→中→大→小]の様にループさせたいです.因みにexcel2007です.
回答: エクセルには 「セルをクリックすると内容が変わる」 という不便な機能はありませんので、 この機能が欲しいと思ったらvbaを使って自作する必要があります。 ですが、vbaの起動タイミングとして用意されているのは あるセルをクリックしたら、で考えると ・ダブルクリックしたら ・右クリックしたら ・フォーカスが移動したら 主にこの三つです。 例えば「a1をクリックしたら」としたい場合、 ・a1セルをダブルクリックしたら ・a1セルを右クリックしたら ・他のセルからa1セルにフォーカスを移したら と言うことです。 で、これをごく簡単に書いてみると private sub worksheet_beforedoubleclick(byval target as range, cancel as boolean) if target.address = "$a$1" then select case target case "小" target = "中" case "中" target = "大" case "大" target = "小" case else exit sub end select else exit sub end if end sub 以上、ダブルクリックの場合。 右クリックに反応させるなら、1行目を private sub worksheet_beforerightclick(byval target as range, cancel as boolean) 移動時なら1行目を private sub worksheet_selectionchange(byval target as range) に書き換え、シートモジュールに用意してやればokです。 試してみるとご理解いただけると思いますが、 「連続操作が出来ない」点でどちらにしても不便だと思います。 (好みですので「思います」と表現しています。) ここから先は私の好みの話ですが、 私なら「ボタンあるいは四角形をクリックしたらセルを書き換える」として 例えば四角形をセル内の邪魔にならないところに配置し、 sub 正方形長方形1_click() select case range("a1") case "小" range("a1") = "中" case "中" range("a1") = "大" case "大" range("a1") = "小" case else exit sub end select end sub これを仕込みます。 以上、参考までに。 ※vba(及びvbe)の使い方は別途お調べください。