Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6304 / 13646 ツリー ←次へ | 前へ→

【46042】特定のセルだけフォント・サイズを指定したい・再質問 さや 07/1/21(日) 20:46 質問[未読]
【46044】Re:特定のセルだけフォント・サイズを指定... かみちゃん 07/1/21(日) 20:54 発言[未読]
【46045】Re:特定のセルだけフォント・サイズを指定... ichinose 07/1/21(日) 21:17 発言[未読]
【46046】Re:特定のセルだけフォント・サイズを指定... さや 07/1/21(日) 22:04 お礼[未読]
【46048】Re:特定のセルだけフォント・サイズを指定... Kein 07/1/21(日) 22:43 発言[未読]
【46049】Re:特定のセルだけフォント・サイズを指定... Kein 07/1/21(日) 22:47 発言[未読]
【46054】Re:特定のセルだけフォント・サイズを指定... さや 07/1/21(日) 23:24 お礼[未読]

【46042】特定のセルだけフォント・サイズを指定し...
質問  さや  - 07/1/21(日) 20:46 -

引用なし
パスワード
   1月17日に下記のような質問をしました。

例えば、セルA1からA50に全国の都道府県名が、ばらばらに入力されているとします。マクロを実行すると北海道のセルだけフォント・サイズが、10ポイントに変わる。こんなVBAを作成したいのです。

今回は、この北海道の他に、例えば、神奈川県もフォント・サイズが10ポイントに変わる、こんなコードを作成したいのです。
私が考えたコードは以下の通りです。
これでも成功しましたが、もっと簡単なコードはないでしょうか?
よろしくお願いします。

Sub フォントサイズの指定2()

Dim rng As Range
  For Each rng In Range("a1:a50")
  If rng.value = "北海道" Then
     rng.Font.Size = 10
  End If
 
  If rng.value = "神奈川県" Then
     rng.Font.Size = 10
  End If
  
  Next
  
End Sub

【46044】Re:特定のセルだけフォント・サイズを指...
発言  かみちゃん  - 07/1/21(日) 20:54 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>1月17日に下記のような質問をしました。

[45967]のことですね。

>私が考えたコードは以下の通りです。
>これでも成功しましたが、もっと簡単なコードはないでしょうか?

以下のような感じではいかがでしょうか?

Sub Macro3()
 'フォントサイズの指定3
 Dim rng As Range
 
 For Each rng In Range("A1:A50")
  With rng
   If .Value = "北海道" Or .Value = "神奈川県" Then
    .Font.Size = 10
   End If
  End With
 Next
End Sub

または、

Sub Macro4()
 'フォントサイズの指定4
 Dim rng As Range
 
 For Each rng In Range("A1:A50")
  With rng
   Select Case .Value
    Case "北海道", "神奈川県"
     .Font.Size = 10
   End Select
  End With
 Next
End Sub

Range("A1:A50")
の部分は、
Range("A1").Resize(50)

という書き方もできます。

【46045】Re:特定のセルだけフォント・サイズを指...
発言  ichinose  - 07/1/21(日) 21:17 -

引用なし
パスワード
   こんばんは

>これでも成功しましたが、もっと簡単なコードはないでしょうか?

簡単なコードということなら、他にもありますが、

さや さんの場合、ループ処理は残したほうがよさそうですね!!

Sub フォントサイズの指定2()
  Dim fsz10array As Variant
  Dim rng As Range
  fsz10array = Array("北海道", "神奈川県")
  For Each rng In Range("a1:a50")
    If Not IsError(Application.Match(rng.Value, fsz10array, 0)) Then
     rng.Font.Size = 10
     End If
    Next
End Sub
神奈川県という条件が増えたと言うことは、
さらにフォントサイズを変更する都道府県が増える可能性は十分に
推測出来ます。
増える毎にIFを追加するのではなく、フォントを変更する都道府県リストデータだけ
の変更(データの追加)でコードの変更をしなくて良いようなコードにすることを考えましょう!!

上記は説明の都合上、配列データをコード内で記述しましたが、
実際には、フォントサイズを変更する都道府県データは、別にシートの
セル(例、SHEET2のA列に変更リスト作成する)に入力しておき、
上記のようなコード(Match関数を使う)にすると
コードの変更が少なくて済みます。
(セルに条件データを配置すれば、Match関数以外の方法もありそうです)

ちょっと難しいけど、Match関数から調べてみて下さい。

【46046】Re:特定のセルだけフォント・サイズを指...
お礼  さや  - 07/1/21(日) 22:04 -

引用なし
パスワード
   かみちゃんさん、ichinoseさん、いつも親切なご回答ありがとうございます。

たいへん、勉強になりました。

【46048】Re:特定のセルだけフォント・サイズを指...
発言  Kein  - 07/1/21(日) 22:43 -

引用なし
パスワード
   解決したようですが、いちおう数式を使った方法も提示しておきます。

Sub Test1()
  On Error Resume Next
  With Range("IV1:IV17")
   .Formula = "=IF(OR($A1=""北海道"",$A1=""神奈川県""),1)"
   .SpecialCells(3, 1).Offset(, -255).Font.Size = 10
   .ClearContentnts
  End With
End Sub

この方法は、検索する都道府県名を OR(・・・,・・・,・・・)というように
30個まで指定できます。

【46049】Re:特定のセルだけフォント・サイズを指...
発言  Kein  - 07/1/21(日) 22:47 -

引用なし
パスワード
   >With Range("IV1:IV17")


With Range("IV1:IV50")

でしたね、すいません。
こっちでテストしたときのコードを、そのままUPしたためです。

【46054】Re:特定のセルだけフォント・サイズを指...
お礼  さや  - 07/1/21(日) 23:24 -

引用なし
パスワード
   ▼Kein さん、ありがとうございました。

少し難しそうですが、参考になりました。

6304 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free