Excel で指定したセルの値に基づいて図形のサイズを自動調整するには?
Excel では、円や四角形、カスタムグラフィックなどの図形を、視覚的な強調やダッシュボード作成、データの可視化に活用することがよくあります。なかには、特定のセルの値に応じて図形のサイズを動的に変更したいケースもあるでしょう。たとえば、進捗インジケーターや視覚的ステータス表示を作成したり、レポートをよりインタラクティブで直感的に仕上げたりするためです。しかし、Excel にはセルの内容と図形のサイズを自動的に連携させる直接的な機能が備わっていません。本記事では、指定したセルの値に応じて図形を自動的にリサイズする実用的な方法をご紹介し、あなたのExcel プロジェクトをさらにダイナミックで視覚的に意味のあるものへと導きます。
VBA コードで指定したセルの値に基づき図形のサイズを自動変更する
特定のセルに入力された値に基づいて図形のサイズを自動調整するには、VBA マクロをご活用いただけます。この方法は、ダッシュボード要素の自動化や、図形を手動で調整することなくデータの変化を視覚的に強調したい場面で特に効果的です。以下の VBA コードを使えば、ワークシート内のセル値と図形のサイズを連携させることが可能です。
以下の手順に従ってください:
1.サイズ変更したい図形を含むシートタブを右クリックし、コンテキストメニューからコードの表示を選択してください。すると、該当ワークシートのコードエディターウィンドウが開きます。
2.Microsoft Visual Basic for Applicationsウィンドウで、以下の VBA コードをコードウィンドウにコピー&ペーストしてください。ただし、図形が配置されているワークシートに対応するコードシートに貼り付けるようご注意ください。
VBA コード:Excel で指定したセルの値に基づき図形のサイズを自動変更する
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Row = 2 And Target.Column = 1 Then
Call SizeCircle("Oval 2", Val(Target.Value))
End If
End Sub
Sub SizeCircle(Name As String, Diameter)
Dim xCenterX As Single
Dim xCenterY As Single
Dim xCircle As Shape
Dim xDiameter As Single
On Error GoTo ExitSub
xDiameter = Diameter
If xDiameter > 10 Then xDiameter = 10
If xDiameter < 1 Then xDiameter = 1
Set xCircle = ActiveSheet.Shapes(Name)
With xCircle
xCenterX = .Left + (.Width / 2)
xCenterY = .Top + (.Height / 2)
.Width = Application.CentimetersToPoints(xDiameter)
.Height = Application.CentimetersToPoints(xDiameter)
.Left = xCenterX - (.Width / 2)
.Top = xCenterY - (.Height / 2)
End With
ExitSub:
End Sub 説明と注意事項:
- このコードでは、「Oval 2」はサイズ変更する図形の名前を指します。この名前が[ホーム]タブの[検索と選択]>[選択ペイン]に表示されているものと完全に一致していることを確認してください。
- このコードは、セルA2(行2、列1)が変更された場合にのみ実行されます。他のセルをご利用になりたい場合は、これらの値を適宜更新してください。
- 図形のサイズはセルの値に基づいて決まり、その値は直径(cm)を表します。コードでは極端なサイズ変更を防ぐため、最大サイズを10 cm、最小サイズを1 cmに設定しています。
- この範囲外の値(1 未満または10 を超える値)を入力すると、図形は最も近い制限値に自動的にリサイズされます。
- 指定された図形名が見つからない場合や、セルの値が数値でない場合は、エラーを表示せず、その操作を無視します。
異なるセルで複数の図形を自動的にリサイズする必要がある場合(たとえば、一連の視覚的インジケーターやゲージを作成する際など)、以下のように VBA ソリューションを拡張できます。
VBA コード:Excel で異なる指定セルの値に基づき複数の図形を自動リサイズする
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xAddress As String
On Error Resume Next
If Target.CountLarge = 1 Then
xAddress = Target.Address(0, 0)
If xAddress = "A1" Then
Call SizeCircle("Oval 1", Val(Target.Value))
ElseIf xAddress = "A2" Then
Call SizeCircle("Smiley Face 3", Val(Target.Value))
ElseIf xAddress = "A3" Then
Call SizeCircle("Heart 2", Val(Target.Value))
End If
End If
End Sub
Sub SizeCircle(Name As String, Diameter)
Dim xCenterX As Single
Dim xCenterY As Single
Dim xCircle As Shape
Dim xDiameter As Single
On Error GoTo ExitSub
xDiameter = Diameter
If xDiameter > 10 Then xDiameter = 10
If xDiameter < 1 Then xDiameter = 1
Set xCircle = ActiveSheet.Shapes(Name)
With xCircle
xCenterX = .Left + (.Width / 2)
xCenterY = .Top + (.Height / 2)
.Width = Application.CentimetersToPoints(xDiameter)
.Height = Application.CentimetersToPoints(xDiameter)
.Left = xCenterX - (.Width / 2)
.Top = xCenterY - (.Height / 2)
End With
ExitSub:
End Sub 重要な注意点と使用上のヒント:
If...ElseIfセクションのEnd Ifの前に同様の行を追加してください。必要なセルアドレスと図形名を正しく入力します。3.コードを編集・保存後、Alt+Q キーを押して、Microsoft Visual Basic for Applicationsウィンドウを閉じ、ワークシートに戻ります。
これで、セル A2 の値を変更するたびに、指定された図形「Oval2」がリアルタイムで自動的にリサイズされます。下記のスクリーンショットをご参照ください。

同様に、セル A1、A2、または A3 の値を更新すると、「Oval 1」「Smiley Face 3」「Heart 2」の各図形が、それぞれ対応するセルの値に応じて即座にサイズを調整します。以下の例をご参照ください:

追加の注意事項:
- リサイズは、指定されたセルの値が変更された場合にのみ有効です。図形を手動で移動・変更して基準点がずれた場合は、図形の位置をリセットする必要があります。
- 数値のみが正しく機能します。空のセルやテキストが入力されていると、図形が最小サイズになるか、期待通りに調整されないことがあります。
- VBA ソリューションにはマクロの許可が必要です。Excel 環境でマクロが有効になっていることをご確認ください。
注記:セルの値が10(最大サイズは10 cm に設定)を超えると、図形のサイズはそれ以上大きくなりません。同様に、1 未満の値は最小サイズ(1 cm)に自動的に設定されます。
トラブルシューティングのヒント:リサイズが期待通りに動作しない場合は、図形名とセル参照が完全に一致していること、マクロが有効であること、ワークシート保護による制限がないことを再度ご確認ください。実行時エラーが発生した場合は、指定された図形がアクティブなワークシート上に存在し、図形名のスペルミスがないことをご確認ください。
まとめと提案:VBA 方式は、動的かつリアルタイムでのリサイズを実現し、インタラクティブなダッシュボードやデータ駆動型レポートに最適です。ただし、図形の命名規則を守り、VBA 環境を理解した上で、ブックをマクロ有効ファイル().xlsm)として保存し、コードを保持する必要があります。この方法は、自動化が求められ、かつマクロ機能の使用が許容される環境に最適です。
参照による手動での図形リサイズ
図形のサイズ調整をたまに行うだけでよく、マクロを使わないシンプルな方法をご希望の場合は、セルの値を参照しながら必要に応じて手動で図形のサイズを設定できます。この方法は、自動化が必須でない場面や、マクロの使用が制限されている環境に最適です。
サイズを変更したい図形をクリックし、図形の書式設定ペイン(図形を右クリック > サイズとプロパティ)で幅と高さの値を手動で入力してください。セルの値を参照しながら入力できるので、自動ではありませんが、単発の調整にはこの方法がシンプルで効果的です。
ヒント:この方法では、セルの値を変更した後、図形のサイズを手動で更新する必要があります。図形とセルの間には連携がないため、リアルタイムでの視覚的更新はサポートされません。ただし、マクロによるセキュリティ警告を回避できるというメリットがあります。
現在のExcel ワークブックにあるすべての図形を一覧表示およびエクスポートする:
チャートのエクスポートユーティリティは、Kutools for Excelに搭載されており、現在のブック内のすべてのチャートを瞬時に一覧表示し、以下のスクリーンショットのように、指定したフォルダーにまとめてエクスポートできます。今すぐダウンロードしてお試しください!(30 日間無料トライアル)

関連記事:
- Excel で特定の図形にマウスオーバー時のヒントを追加するには?
- Excel で図形を透明な背景色で塗りつぶすにはどうすればよいですか?
- Excel で指定したセルの値に基づいて特定の図形を非表示または再表示するには?
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得
