質問: セルをクリック⇒そのセルに入力された文字を○で囲む 昨日質問させて頂いたのですが、会社のパソコンではネットは使えない為、マクロ以外の方法でと質問させて頂きましたが、こちらのサイトにはアクセス制限がかかっておらずコピーペースト可能でしたので再度質問させて頂きます。 ちなみにマクロは今回初めて使う為、完全初心者です。 マクロ入門サイトをいくつか読んでみましたが、よくわかりませんでした... 本題ですが、例えばエクセルのシートに 1.いちご 2.りんご 3.みかん という選択肢があり、2番のりんごを選択したいとします。 『2』という数字の書かれたセルをダブルクリックすると、『2』という数字が○で囲まれるようにする事は出来ないものでしょうか? 会社で使うファイルなのですが、そのファイルにはこういった選択肢がいくつもあるので、シート上のどのセルをクリックしても、クリックした箇所が○で囲まれるようになればと思います。 コピーする為の式が貼り付けられているのを見かけますが、ああいった式を貼り付けた場合、囲む○の大きさや形状はどの段階で指定するのでしょうか? (ちなみに今回使用したい○のサイズや形状は、どこのセルをクリックしても同じもので構いませんが、行からはみ出ない大きさの○に設定したいです) 一応私が調べたサイトでは、altキーを押しながら[f11]キーを押す⇒標準モジュールの右側に式を貼り付けると書いてありましたが、その後どのようにその画面を終了するのか、またその後どのように実行するのかが書かれてありませんでした 会社のパソコンはexcel2013です。 マクロのコードを貼り付けて、実際に使ってみるまでの流れも教えて頂けませんでしょうか? 素人でもわかりやすいサイトがあればそちらでも構いません。 どうかよろしくお願い致します。
回答: こんばんは! なかなか回答がつかないようなので・・・ >『2』という数字の書かれたセルをダブルクリックすると、 >『2』という数字が○で囲まれるようにする事は出来ないものでしょうか? 単純にセルを塗りつぶすだけの方が簡単なのですが、 ご要望が「丸囲い文字」というコトですね。 excelではwordのような囲い文字の設定はないようですし、 丸囲い数字は環境依存文字になってしまいますので、 オートシェイプの丸をセル上に表示させる方法はどうでしょうか? 尚、セル内の数字の位置がバラバラだとずれてしまいますので、数字そのものも中央揃えにしています。 セルをダブルクリックすると、数値が入っているセルに関してだけ「丸囲い文字」もどきにしています。 (文字列セルは何も反応しません) そして、すでに丸のオートシェイプがあるセルをダブルクリックすると その丸は消えるようにしてみました。 画面左下の操作したいsheet見出し上で右クリック → コードの表示 → vbe画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → excel画面に戻り、好みのセルをダブルクリックしてみてください。 private sub worksheet_beforedoubleclick(byval target as range, cancel as boolean) 'この行から dim c as range, myshp as shape, myflg as boolean set c = target if isnumeric(c) and c <> "" then cancel = true c.horizontalalignment = xlcenter for each myshp in activesheet.shapes if myshp.top >= c.top and myshp.top + myshp.height <= c.top + c.height and _ myshp.left >= c.left and myshp.left + myshp.width <= c.left + c.width then myflg = true exit for elseif myshp.left > c.left + c.width and myshp.top > c.top + c.height then exit for end if next myshp if myflg = true then myshp.delete else with activesheet.shapes.addshape(msoshapeoval, c.left + (c.width - c.height) / 2, _ c.top + c.height / 40, c.left + c.height, c.top + (c.height / 20) * 19) .width = c.height - c.height / 20 .height = c.height - c.height / 20 .fill.visible = msofalse with .line .forecolor.rgb = vbblack .weight = 0.7 end with end with end if end if end sub 'この行まで ※ セル幅がセルの高さより広いという前提です。 ※ すでにオートシェイプが表示されているセルでダブルクリックする際、 オートシェイプ上でダブルクリックしないようにしてください。 こんな感じではどうでしょうか?m(_ _)m