• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルをクリック⇒そのセルに入力された文字を○で囲む)

Excelでセルのクリックで囲む方法はある?

このQ&Aのポイント
  • 【Excelマクロ初心者向け】セルをダブルクリックするとセルが囲まれる方法を教えてください。
  • 会社で使用するExcelファイルには選択肢があり、セルをクリックするとセルが囲まれるようにしたいです。
  • マクロを使わない方法でセルをクリックして囲むことはできるのか、またマクロ導入から実際の使用までの流れを教えてください。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

このような要求は昔からよくありました。結構大変です。 それは、セルに入力された文字がどのようになっているか分からないからです。何もないシートに図形を挿入しようとすると、例えば、   1.単一セルなのか結合セルなのか   2.フォントの種類やフォントサイズは   3.行高とセル内での上・中・下の位置は   4.左・中・右揃えは   5.どこに「○」を付ける   6.セル内の文字は数値?文字列?   7.表示した「○」を消したいことは? くらいがはっきりすると制約付きでモジュールを作れます。 この質問の場合はほとんど未定の場合なわけで、次のようにします。 ア.実際に使用するシートに「○」を書いてください。 イ.解答したモジュールをそのシートのコードウィンドウに貼り付けて下さい。 (ALT-F11でVBE画面に移動し、メニューから、表示>プロジェクトエクスプローラーを選択し、Sheet1に「〇」があるならプロジェクトエクスプローラーのSheet1(Sheet1)をダブルクリックして表示された右の広い画面に貼り付けます。(Wordやメモ帳などと同じ感覚です)) これで終了です。当然ですが、ダブルクリックするたびに図形が現れたり消えたりします。「○」は図形のマルです。(別の形でも構いません)表示された図形を動かせないようにシートに保護をかけるべきかもしれません。このあたりは検討してください。 シートに帰ります。 この後、「〇」がうまく配置できたか検証します。「ア」で重要な点は、「○」の左上を該当セル内に納めることです。 うまく「○」が置けていれば、そのセルをダブルクリックすれば「○」は消えます。消えなければ位置を修正してください。必要な箇所に「○」を配置して、テストでダブルクリックして表示を全部消してしまいます。全部消えればテストと初期化が終了です。 最初に「○」を貼り付けてもらうことで、モジュール側で行うことが劇的に減少します。このようなシートを使うことの現実味も出てきます。 しかし、実務ではあまり使いません。この後、(アンケートのように)「○」を集計したいなどの追加要求が出てきたりします。「○」を付けて印刷したりしてその場限りで使うにはいいかもしれません。試してみてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   Dim shp As Shape 'オートシェイプ   For Each shp In Shapes     With shp       If Not (Application.Intersect( _         Range(.TopLeftCell.Address), Target) Is Nothing) Then         .Line.Visible = Not (.Line.Visible)       End If     End With   Next   Cancel = True End Sub

-juza-
質問者

お礼

ご丁寧にありがとうございます。 挿入して下さっていた一番下の画像にあるような感じで○を付けるのが理想だったのですが、単一セルか結合セルかによっても変わってくるのですね。素人の私には難しすぎました…(笑) まずは他の方法で代用し、自分なりにマクロについて勉強してみた上で、教えて頂いたものをやってみようと思います。

その他の回答 (1)

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

こんばんは! なかなか回答がつかないようなので・・・ >『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

-juza-
質問者

お礼

クリックすると、そのセルにオートシェイプで作った○が乗るようになればなぁと思ったのですが、なかなか難しいのですね。 自宅のパソコンではエクセルが使えないので、会社に行ったら早速試してみたいと思います。 お忙しい中わざわざ考えて頂き本当にありがとうございました(^^)

関連するQ&A