- 締切済み
フォントサイズを別のセルに入力された数字としたい 【エクセル】
エクセル2003での質問ですが、例として セルA1(リンゴ) A2(みかん) と文字が入力されています セルB1(10) B2(20) とある計算をした数値が入力されています。たとえば、売れた個数などと思って下さい。 やりたいことは、セルA1, A2に入力されている文字のフォントサイズをB1, B2に入力された数値に自動的にしたいのです。 売れた個数(Bセルの数値)によって文字のサイズを変え、視覚的に強調したいのです。 つまり、 リンゴ(フォントサイズ 10) みかん(フォントサイズ 20) 自分で関数などを調べてみたのですが、出来る方法がわかりませんでした。 簡単にできる方法を希望です。マクロなどは詳しくはありませんがこれを機会に勉強してみようと思います。もし可能であれば教えて下さい。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
文字サイズの変更はBVAしか思いつきません。 2行目(A2、B2・・・)には計算式が入っていると仮定して、 その値が変わると、連動して1行目の文字サイズが変化します。 <設定方法> ・「ツール」-「マクロ」-「V B Editor」でエディタを開く ・プロジェクトエクスプローラ(多分左側に表示)で対象シートを選択 ・下のコードを全部コピーし、エディタのコード部分にペースト で終了。 *対象範囲が不明なので、2行目全体が対象となっています。 *文字サイズが極端に小さかったり、大きかったりする場合を回避する ために、 2< 文字サイズ <200 のときだけ反映されます。 *セルに式がある場合と、直接入力の両方を想定していますが、対象 部分が計算式のみの場合は、真ん中の Private Sub Worksheet_Change(ByVal Target As Range) ~ End Sub は不要です。(裏でマクロが働くので、削除しておいたほうが良いです。) Private Sub Worksheet_Calculate() Dim col As Long For col = 1 To Cells(2, Columns.Count).End(xlToLeft).Column If Cells(2, col).HasFormula Then Fsize (Cells(2, col).Address) Next col End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range If Intersect(Target, Range("2:2")) Is Nothing Then Exit Sub For Each r In Intersect(Target, Range("2:2")) If Not r.HasFormula Then Fsize (r.Address) Next r End Sub Sub Fsize(a As String) Dim v v = Range(a).Value If IsNumeric(v) Then If v > 2 And v < 200 Then Range(a).Offset(-1, 0).Font.Size = v End If End Sub
- web2525
- ベストアンサー率42% (1219/2850)
マクロなら Range("A1").Font.Size = Range("A2").Value Range("B1").Font.Size = Range("B2").Value これだけで出来ますが。 マクロの記録で実際にフォントサイズを変更すれば、どんな動作をしているかがわかります、そこから独自に変更していけば発展したマクロを作成できます。