- 公開日:
エクセルで文字を自動的に丸で囲む簡単な方法
エクセルで文字を自動的に丸で囲む方法をご紹介します。
自動的に丸で囲むことで、例えばエクセルで作成した出席表の「出席の有無」について「有」か「無」に丸をする必要がある場合などに役立てられます。
VBAを使用しますがコードを記載しますので、エクセル初心者の方でも簡単に設定ができます。
エクセルで文字を自動的に丸で囲む簡単な方法
エクセルで文字を自動的に丸で囲む方法をご紹介します。
今回はVBAを使って設定します。
開発タブを表示する
VBAの設定は「開発タブ」から行います。

開発タブはデフォルトでは表示されていないので、以下の記事で表示させましょう。
VBAを使って文字を自動的に丸で囲む設定を行う
VBAを使って、特定の文字を自動的に丸で囲むように設定を行います。
今回はあらかじめ丸で囲みたい文字をリスト化しておいて、マクロを実行するとリスト内と同じ文字を探して図形の丸で囲むようにVBAを設定します。

例えば、「有」とリストに入力しておけばシート内に「有」の文字があった場合に図形の丸で囲みます。
丸の大きさはセルの幅に合わせます。
方法の詳細は以下のとおりです。

①「開発」タブ、②「Visual Basic」の順に選択します。

「Microsoft Visual Basic for Applications」というVBAの編集画面が表示されます。
①「新しい標準モジュール」、②「標準モジュール」の順に選択します。

以下のコードをコピーして貼り付けます。
上記の画像の緑色の文字は、各コードが何の動作を指定しているかを説明しているコメントです。コピー用のコードではコメントを省いています。
あらかじめ丸で囲みたい文字をSheet2のA1セルからA10セルにリスト化しておいて、マクロを実行するとリスト内と同じ文字をSheet1から探して図形の丸で囲む、という意味のコードになります。
Sub 自動的に丸で囲む() Dim ws As Worksheet Dim listWs As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") Set listWs = ThisWorkbook.Sheets("Sheet2") Dim cell As Range Dim listCell As Range Dim text As String Dim foundPos As Integer Dim circledChar As String Dim startPos As Double Dim shp As Shape Dim listRange As Range Set listRange = listWs.Range("A1:A10") For Each shp In ws.Shapes If shp.AutoShapeType = msoShapeOval Then shp.Delete End If Next shp For Each cell In ws.UsedRange text = cell.Value For Each listCell In listRange circledChar = listCell.Value foundPos = InStr(text, circledChar) If foundPos > 0 Then startPos = cell.Left + (foundPos - 1) * (cell.Width / Len(text)) Dim circleWidth As Double circleWidth = cell.Width / Len(text) Set shp = ws.Shapes.AddShape(msoShapeOval, startPos, cell.Top, circleWidth, cell.Height) With shp .Line.ForeColor.RGB = RGB(0, 0, 0) .Line.Weight = 1 .Fill.Transparency = 1 End With Do While foundPos > 0 text = Replace(text, circledChar, "", 1, 1) foundPos = InStr(text, circledChar) If foundPos > 0 Then startPos = cell.Left + (foundPos - 1) * (cell.Width / Len(text)) Set shp = ws.Shapes.AddShape(msoShapeOval, startPos, cell.Top, circleWidth, cell.Height) With shp .Line.ForeColor.RGB = RGB(0, 0, 0) .Line.Weight = 1 .Fill.Transparency = 1 End With End If Loop End If Next listCell Next cellEnd Subシート名を変更したい場合は、4行目と5行目の「"Sheet1"」「"Sheet2"」を変更しましょう。
Sheet2のリストを入力する位置を変更したい場合は、15行目の「Set listRange = listWs.Range("A1:A10")」の「("A1:A10")」のセル範囲を変更しましょう。

コードを貼り付けたら、「保存」を選択します。

「名前を付けて保存」ダイアログボックスが表示されます。
①任意の保存場所(例:デスクトップ)を選択します。
②ファイルの種類で「Excel マクロ有効ブック」を選択し、③「保存」ボタンを押します。

エクセルの画面に戻ります。
マクロを実行するために、まずはリストを作成しましょう。
今回は「Sheet2のA1セルからA10セルに入力した文字のリスト」にある文字をSheet1で見つけて図形の丸で囲むため、Sheet2にリストを作成します。
①「Sheet2」を選択して、②A1セルからA10セルまでに「有」「無」と入力しておきます。

次にSheet1に文字を入力します。
①「Sheet1」を選択します。
②任意のセルに「有」「無」と入力しておきます。

次にVBAを実行してみます。
①「開発」タブを選択して、②「マクロ」を押します。

「マクロ」ダイアログボックスが表示されます。
①先ほど設定したマクロを選択して、②「実行」ボタンを押します。

すると、Sheet2に入力していた「有」「無」の文字が図形の丸で囲まれました。
関連記事

問題は解決できましたか?
記事を読んでも問題が解決できなかった場合は、無料でAIに質問することができます。回答の精度は高めなので試してみましょう。
- 質問例1
- ExcelのIF関数で複数条件に対応する方法を教えて
- 質問例2
- Microsoft 365でできることを教えて
コメント
この記事へのコメントをお寄せ下さい。
