• ベストアンサー

エクセルでセルをクリックするだけで○印を・・・

既出でしたらお許しください。検索してみましたが該当する質問・回答を探せませんでした。 エクセルシート内のセルをクリックするだけでそのセルをオートシェイプで作るような○(楕円可)で囲むVBAについてヒントをください。 これが無理なら、セルの書式を変更して罫線で四角く囲む方法でもOKです。 ちなみに該当するセルにはデータが入っています。いくつかの候補の中から該当するデータを○で囲みたいのです。 以上,ご教示ください。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

楕円で囲む方法は Private Sub Worksheet_SelectionChange(ByVal Target As Range) x = Target.Column y = Target.Row x1 = Range(Cells(1, 1), Cells(y, x)).Width y1 = Range(Cells(1, 1), Cells(y, x)).Height wid = x1 / x hei = y1 / y x2 = x1 - wid y2 = y1 - hei With ActiveSheet.Shapes.AddShape(msoShapeOval, x2, y2, wid, hei) .Fill.Visible = msoFalse .Fill.Solid .Fill.Transparency = 1# .Line.Weight = 0.75 .Line.DashStyle = msoLineSolid .Line.Style = msoLineSingle .Line.Transparency = 0# .Line.Visible = msoTrue .Line.ForeColor.SchemeColor = 64 .Line.BackColor.RGB = RGB(255, 255, 255) End With Target.Select End Sub

その他の回答 (7)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.8

ちょっと気になったので、、、 Worksheet_SelectionChange で処理をするなら、既に同様のシェイプがあるか調べて作成する処理を入れないと、矢印キーでアクティブセルを移動させただけで、同じセル上にシェイプが何個も作られてしまいます。 それによりファイルサイズの異常な増大を招く事になりかねませんので、注意が必要かと。

noname#16474
noname#16474
回答No.7

「囲み文字メーカー」 というアドインを使ってみてはいかがでしょうか http://www2.moug.net/cgi-bin/softwaredl.cgi?excel+SI2004010501 ○以外にも、色々な囲み文字が作れます mougの会員登録をしないとダウンロードできませんが、 mougには、さまざまなフリーソフトがありますから 会員登録しても損はありませんよ mougとは・・・ http://www.moug.net/main/wht_mg.htm

参考URL:
http://www2.moug.net/cgi-bin/softwaredl.cgi?excel+SI2004010501
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

Private Sub Worksheet_SelectionChange(ByVal Target As Range) l = ActiveCell.Left t = ActiveCell.Top h = ActiveCell.Height w = ActiveCell.Width ActiveSheet.Shapes.AddShape(msoShapeOval, l, t, w, h).Select Selection.ShapeRange.Fill.Visible = ms 'Selection.ShapeRange.Fill.Solid Selection.ShapeRange.Fill.Transparency = 0# ActiveCell.Select End Sub

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

#4です、少し訂正 sh.OnAction = "Test" → sh.OnAction = "MeDEL"

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

三択のようにどれか一つだけ選ぶなら、オプションボタンを使った方が簡単だと思いますが、、、、 下記は、セルのダブルクリックで楕円シェイプを作り、その楕円シェイプをクリックすると削除するサンプルです。 'こちらはシートモジュールにコピペ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim sh As Shape  Cancel = True  With Target     Set sh = Me.Shapes.AddShape(msoShapeOval, .Left, .Top, .Width, .Height)     sh.Fill.Visible = msoFalse     sh.OnAction = "Test"  End With End Sub 'こちらは標準モジュールにコピペ Sub MeDEL() On Error Resume Next   ActiveSheet.Shapes(Application.Caller).Delete End Sub

noname#187541
noname#187541
回答No.3

こんにちは。 >セルをクリックする というイベントはありません。一番近いのは、SelectionChangeイベントですが、これは選択範囲を変更したときに発生するイベントです。 クリック以外(Enter・矢印キー等)で変更したときにも発生しますし、現在アクティブなセルをクリックしたときは発生しません。 使用を見直して、ダブルクリックや右クリックのイベントを使う方がいいでしょう。 >セルをオートシェイプで作るような○(楕円可)で囲む これはその操作を「マクロの記録」で記録すればコードが得られます。 どうでしょうか。

noname#22222
noname#22222
回答No.1

ダブル罫線で囲むには... Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Len(Target.Value & "") > 0 Then     Target.Borders.LineStyle = IIf(Target.Borders.LineStyle = xlDouble, xlNone, xlDouble)   End If End Sub

関連するQ&A