プロが教えるわが家の防犯対策術!

A    B
商品   在庫数

りんご  18
いちご  50
バナナ  欠品

というような表で、
文字列ならMSPゴシック、サイズ10に。
数値ならHG丸ゴシックM-PRO、サイズ13に設定したいのですが、
条件付き書式ではフォントの設定は出来ないんですね。

色々調べて、VBAなら実現可能だということまではわかったのですが、
VBAに関してはネット上で拾ってきたすでに書かれたものを少しカスタマイズする程度の本当に微妙な知識しかなく、
いくら調べても希望に合うものが見つかりません(条件付きを4つ以上…なら沢山あったので、
それを元に少しやってみましたが出来ませんでした/苦笑)

職場からは書き込みが出来ず、休憩を利用しての携帯からの投稿なため
自分で書いたソースを提示して添削、というのが出来ない状況で大変申し訳ないのですが、
よろしければお力を貸していただければ幸いです。お願いします。

A 回答 (4件)

経験なくてわからないだろうが、この課題には2通りの場合がある。


その区別が書いてない。
(1)既にデータは入れ終わっていて、条件によってフォントの種類を変える。多少データが増えてもVBAの実行を再度行ってよいーー>バッチ処理
(2)データが増えた都度、フォントの種類を即座に変えたいーー>イベント処理。
(1)は最下行番号を割り出す。
先頭から最下行まで、数値(IsNumeric)であればHG丸ゴシックM-PRO、それ以外だと(Font.Nameを)MSPゴシックに設定する。
それを最下行まで全行について繰り返す。
これぐらいコードはわかるでしょう。
(2)イベントの場合は、Changeイベントを使う。
Target.Columnが対象列(B列なら2)かどうか判別する。それ以外は、スキップする。
後は、数値(IsNumeric(Target)がTrueであればHG丸ゴシックM-PRO、それ以外だと(Font.Nameを)MSPゴシックに設定する。
ーー
本質問は課題丸投げであり、それほど難しいコードでなく、行数もわずかなので、全部は挙げない。自分で勉強して見てください。
    • good
    • 0

もっと良い方法があるとは思いますが、



Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCell As Range
If Selection.Cells.Count > 1 Then
For Each myCell In Selection
If Not IsNumeric(myCell.Value) Then
With myCell.Font
.Name = "HG丸ゴシックM-PRO"
.Size = 13
End With
Else
With myCell.Font
.Name = "MS Pゴシック"
.Size = 10
End With
End If
Next
Else
If Not IsNumeric(Target.Value) Then
With Target.Font
.Name = "HG丸ゴシックM-PRO"
.Size = 13
End With
Else
With Target.Font
.Name = "MS Pゴシック"
.Size = 10
End With
End If
End If
End Sub
    • good
    • 0

試しにマクロを組んでみました。


場合によっては、シートのWorksheet_Changeイベントを使えば良いかもしれません。

Sub testフォント()
  Dim c As Range
  
  For Each c In Range(B2:B100)
    With c.Font
      If IsNumeric(c) Then
        .Name = "HG丸ゴシックM-PRO"
        .Size = 13
      Else
        .Name = "MS Pゴシック"
        .Size = 10
      End If
    End With
  Next
End Sub
    • good
    • 0

過去ログです


「関数で文字フォントなどの書式を変更することはできません。」ということです。


http://okwave.jp/qa2559431.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています