こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

フォントサイズを別のセルに入力された数字としたい 【エクセル】

エクセル2003での質問ですが、例として
セルA1(リンゴ) A2(みかん) と文字が入力されています
セルB1(10)   B2(20)  とある計算をした数値が入力されています。たとえば、売れた個数などと思って下さい。

やりたいことは、セルA1, A2に入力されている文字のフォントサイズをB1, B2に入力された数値に自動的にしたいのです。
売れた個数(Bセルの数値)によって文字のサイズを変え、視覚的に強調したいのです。

つまり、
リンゴ(フォントサイズ 10)
みかん(フォントサイズ 20)

自分で関数などを調べてみたのですが、出来る方法がわかりませんでした。
簡単にできる方法を希望です。マクロなどは詳しくはありませんがこれを機会に勉強してみようと思います。もし可能であれば教えて下さい。よろしくお願いします。

投稿日時 - 2009-01-09 21:10:46

QNo.4617319

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

文字サイズの変更は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

投稿日時 - 2009-01-09 23:21:09

ANo.1

マクロなら
Range("A1").Font.Size = Range("A2").Value
Range("B1").Font.Size = Range("B2").Value
これだけで出来ますが。

マクロの記録で実際にフォントサイズを変更すれば、どんな動作をしているかがわかります、そこから独自に変更していけば発展したマクロを作成できます。

投稿日時 - 2009-01-09 22:28:47

あなたにオススメの質問