- ベストアンサー
Excelマクロを使用してセル内の文字を囲む方法
- Excelのマクロを使用して、セル内の文字を囲む方法を教えてください。
- 会社の指示により、従業員個人個人の教育記録の作成と更新を行っていますが、記録台帳が不便なため、新しいテンプレートを作成中です。
- セルをダブルクリックすることで、指定のセル内の文字を囲むように設定したいですが、マクロの算出式が分からず困っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
特定の文面が入力されているコメントが付けられているセルに対してのみ、ダブルクリックするたびにセルの中央に「そのセルの高さと同じ直径の丸印」が点いたり消えたりする様になるVBAのマクロです。 つまり、このマクロを使えば、丸が付くセルをコメント機能を使って選択する事が出来ますし、セルをダブルクリックする事で丸を付けるだけではなく、一旦付けた丸印を消す事も出来ます。 まず、その >新しいテンプレート のExcelファイルを開いて下さい。 次に、その >ダブルクリックすれば、指定のセル(文字)を○が囲うように設定 ならない全てのセルに次の内容のコメントを設定して下さい。(セルを右クリックすると現れるメニューの中から、[コメントの挿入]を選択してクリックする事で、コメントを書き込むことが出来る様になります) ダブルクリックで丸印をON/OFF 次に、Excelウィンドウの上の方に並んでいるタブの中から[開発]タブを選択してクリックして下さい。 次に、現れた「コード」グループの中にある[VisualBasic]ボタンをクリックして下さい。 すると「MicrosoftVisualBasicforApplication」のウィンドウが開きますので、その中の左側にある「プロジェクト-VBAProject」ウィンドウの中に並んでいるアイコンの中から VBAProject(「"新しいテンプレートのExcelファイル"のファイル名」) という形式の名称となっているプロジェクトのアイコンを見つけて下さい。 そして、その見つけたプロジェクトのアイコンの下位に並んでいるシートのアイコンの中から「御質問の選択肢のテンプレートがあるシート」と同名のアイコン(「シートモジュール」のアイコン)を選択してダブルクリックして下さい。 その上で、「Microsoft Visual Basic for Application」のウィンドウ内の右側の欄内に次のVBAの構文を入力して下さい。 Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myShape As Shape, NoShape As Boolean _ , CellTop As Double, CellBottom As Double _ , CellLeft As Double, CellRight As Double _ , ShapeCenterX As Double, ShapeCenterY As Double _ , ShapeWidth As Double, ShapeHeight As Double If TypeName(ActiveCell.Comment) = "Comment" Then If Target.Comment.Text <> "ダブルクリックで丸印をON/OFF" Then Exit Sub Else Exit Sub End If Cancel = True With Target CellLeft = .Left CellTop = .Top CellRight = .Left + .Width CellBottom = .Top + .Height ShapeHeight = .Height ShapeWidth = ShapeHeight End With NoShape = True For Each myShape In ActiveSheet.Shapes If myShape.AutoShapeType = msoShapeOval Then With myShape ShapeCenterX = .Left + .Width / 2 ShapeCenterY = .Top + .Height / 2 If ShapeCenterX >= CellLeft And ShapeCenterX <= CellRight _ And ShapeCenterY >= CellTop And ShapeCenterY <= CellBottom Then .Delete NoShape = False End If End With End If Next myShape If NoShape Then Set myShape = ActiveSheet.Shapes.AddShape(msoShapeOval _ , (CellLeft + CellRight - ShapeWidth) / 2 _ , (CellTop + CellBottom - ShapeHeight) / 2 _ , ShapeWidth, ShapeHeight) With myShape .Fill.Visible = msoFalse With .Line .Visible = msoTrue .Weight = 0.75 .ForeColor.RGB = RGB(0, 0, 0) End With End With End If End Sub
その他の回答 (1)
- GreatDragon
- ベストアンサー率46% (186/402)
こんにちは~。 > セルをダブルクリックすれば、指定のセル(文字)を○が囲うように設定したいのですが、何分、マクロには大変疎く、ネットで調べてみても分かりません。 大変失礼ですが、全くVBAをご存じないのでしたら、VBAの使用はお止めになったほうが良いです。 下記のコードをどこに貼り付けたらよいのか、ご判断できるくらいのレベルならば、 何とかなりそうです。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) ActiveSheet.Shapes.AddShape(msoShapeOval, 20.25, (Target.Row - 1) * 13.5, 13.5, 13.5).Select Selection.ShapeRange.Fill.Visible = msoFalse With Selection.ShapeRange.Line .Visible = msoTrue .ForeColor.RGB = RGB(0, 0, 0) .Weight = 0.75 End With End Sub なお、Excel 2010 で作成・検証しています。 字下げに全角スペースを利用しています。 頑張ってくださいね。