KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

Excel で指定したセルの値に基づいて図形のサイズを自動調整するには?

著者Siluvia変更日

Excel では、円や四角形、カスタムグラフィックなどの図形を、視覚的な強調やダッシュボード作成、データの可視化に活用することがよくあります。なかには、特定のセルの値に応じて図形のサイズを動的に変更したいケースもあるでしょう。たとえば、進捗インジケーターや視覚的ステータス表示を作成したり、レポートをよりインタラクティブで直感的に仕上げたりするためです。しかし、Excel にはセルの内容と図形のサイズを自動的に連携させる直接的な機能が備わっていません。本記事では、指定したセルの値に応じて図形を自動的にリサイズする実用的な方法をご紹介し、あなたのExcel プロジェクトをさらにダイナミックで視覚的に意味のあるものへと導きます。


VBA コードで指定したセルの値に基づき図形のサイズを自動変更する

特定のセルに入力された値に基づいて図形のサイズを自動調整するには、VBA マクロをご活用いただけます。この方法は、ダッシュボード要素の自動化や、図形を手動で調整することなくデータの変化を視覚的に強調したい場面で特に効果的です。以下の VBA コードを使えば、ワークシート内のセル値と図形のサイズを連携させることが可能です。

Office Tab を使用してドキュメント内を移動

Office Tab

Word、Excel、PowerPoint などにタブ付きナビゲーションを実装し、ウェブブラウザのように1 つのウィンドウでスムーズに切り替えられます。

以下の手順に従ってください:

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

重要な注意点と使用上のヒント:

1)このコードでは、「Oval 1」、「Smiley Face 3」、「Heart 2」という図形名が使用されています。これらはサイズ変更したい図形を指します。これらの名前がExcel ワークブックに表示されているものと完全に一致していることを確認してください。
2)セルA1A2、およびA3は、それぞれ対応する図形のサイズを制御します。他のセルと図形の組み合わせを使用したい場合は、これらの参照を変更できます。さらに図形とセルを追加するには、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 日間無料トライアル)

Kutools で現在の Excel ファイル内のすべての図形をエクスポート


関連記事:


最高の Office 業務効率化ツール

🤖KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式作成    データ分析とチャート生成  拡張機能呼び出し
人気の機能検索・ハイライト、または重複をマーキング     空白行を削除する     データを失うことなく列の結合またはセルを     数式を使用しない四捨五入...
スーパー LOOKUP複数条件 VLookup    複数値 VLookup     複数シート間 VLookup      ファジーマッチ....
高度なドロップダウンリストドロップダウンリストをすばやく作成     連動型ドロップダウンリスト     複数選択可能なドロップダウンリスト....
列マネージャー指定した数の列を追加列の移動非表示列の表示状態を切り替え範囲および列の比較...
注目の機能グリッドフォーカス     デザインビュー   強化された数式バー    ワークブックとシートマネージャー     リソースライブラリ(オートテキスト)  日付ピッカー     ワークシートの統合    暗号化/セルの復号化    リストからメール送信     スーパーフィルター      特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。
トップ15 ツールセット12 テキストツールテキストの追加特定の文字を削除、...)   50+チャートタイプガントチャート、...)   40+実用的関数誕生日に基づいて年齢を計算します、...)   19 挿入ツールQR コードを挿入パスから画像を挿入、...)   12 変換ツール単語に変換する為替レートの変換、...)   7 結合と分割ツール高度な行のマージセルの分割、...)さらに多数
Kutools はお好みの言語でご利用いただけます。英語、スペイン語、ドイツ語、フランス語、中国語、および40+の他の言語をサポートしています!

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 アプリを横断して作業するチームに最適です。

ExcelWordOutlookTabsPowerPoint
  • オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
  • インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
  • 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
  • 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
  • 最高のお得感— 個別アドイン購入よりお得