Excel VBA質問箱 IV

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

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


7978 / 13645 ツリー ←次へ | 前へ→

【35699】And演算子の使い方 春まき 06/3/10(金) 15:49 質問[未読]
【35701】Re:And演算子の使い方 だるま 06/3/10(金) 16:19 回答[未読]
【35703】Re:And演算子の使い方 Kein 06/3/10(金) 16:26 回答[未読]
【35707】ありがとうございました。 春まき 06/3/10(金) 17:54 お礼[未読]
【35713】Re:ありがとうございました。 Kein 06/3/10(金) 20:12 回答[未読]
【35722】試してみます。 春まき 06/3/10(金) 22:21 お礼[未読]
【35748】うまくいきました。 春まき 06/3/11(土) 22:38 お礼[未読]

【35699】And演算子の使い方
質問  春まき  - 06/3/10(金) 15:49 -

引用なし
パスワード
   恥ずかしながら又質問させてください。
セルC41 の値によりセルC3の文字サイズを変更するコードを書いています。
めったに自分で書かないので苦労しております。

Select Case Range("C41")
Case Is < 25
  Range("C3").Font Size = 10
Case Is < 49 And Case Is > 26

まで来たところ4行目が真っ赤になってしまいました。
特に誤字はないと思うのですがAnd演算子の使い方が悪いのでしょうか
間違いをご指摘ください。

【35701】Re:And演算子の使い方
回答  だるま WEB  - 06/3/10(金) 16:19 -

引用なし
パスワード
   >間違いをご指摘ください
構文が間違っているということですね。^d^
正しい構文はヘルプをご覧ください。

ちょっと手直ししてみました。

Select Case Range("C41").Value
  Case Is < 25
    Range("C3").Font Size = 10
  Case 25 To 49
  
  Case Is > 49
  
End Select

【35703】Re:And演算子の使い方
回答  Kein  - 06/3/10(金) 16:26 -

引用なし
パスワード
   そのコードの不等号の使い方が正しいなら、対応範囲は違ってきますね。

Dim Fs As Integer

Select Case Range("C41").Value
  Case Is < 25: Fs = 10
  Case 27 To 48: Fs = 11
  Case Else: Fs = ?
End Select
Range("C3").Font.Size = Fs

などということになりますが・・。

【35707】ありがとうございました。
お礼  春まき  - 06/3/10(金) 17:54 -

引用なし
パスワード
   だるまさん、keinさん ありがとうございます。Andを使わずtoを使えばいいのですね。
お二人のコードを参照して書き直します。
keinさんに再質問したいのですが、
>Dim Fs As Integer
というのは変数宣言と思われますが、その場合
>Range("C3").Font.Size = Fs
というのは文章の最期(End Selectの後)で良いのでしょうか。

続けてセルC42の値を見てセルC4のフォントサイズを変えるなど
似たようなコードを31回繰り返さないといけないので、入れる場所が気になりまして。アドバイス頂ければ幸いです。

▼Kein さん:
>そのコードの不等号の使い方が正しいなら、対応範囲は違ってきますね。
>
>Dim Fs As Integer
>
>Select Case Range("C41").Value
>  Case Is < 25: Fs = 10
>  Case 27 To 48: Fs = 11
>  Case Else: Fs = ?
>End Select
>Range("C3").Font.Size = Fs
>
>などということになりますが・・。

【35713】Re:ありがとうございました。
回答  Kein  - 06/3/10(金) 20:12 -

引用なし
パスワード
   >最期(End Selectの後)で良いのでしょうか
Select Case 構文によって、変数 Fs にセットする値を決めているわけですから、
当然そうしないと、うまくいきません。
>似たようなコードを31回繰り返さないといけない
"似たような" というのは、正確にはどのような意味でしょーか ?
セルによっては、その値による分岐で Fs にセットするフォントサイズが違ってくる、
ということならループ処理は向かないかも知れませんが、もしその点は同じなら

Sub Test()
  Dim Fs As Integer, i As Integer

  For i = 41 To 72
   Select Case Cells(i, 3).Value
     Case Is < 25: Fs = 10
     Case 27 To 48: Fs = 11
     Case Else: Fs = ?
   End Select
   Cells(i - 38, 3).Font.Size = Fs
  Next i
End Sub

などとループすれば、短いコードで済みますが。 

【35722】試してみます。
お礼  春まき  - 06/3/10(金) 22:21 -

引用なし
パスワード
   ありがとうございます。まさしくこういう感じです。
縦型のカレンダーがあって一日ごとに処理をしますので
こんな短い文にできるなら大助かりです。
2〜3日勉強しながらあれこれ試してみます。
重ね重ねのアドバイス、厚くお礼申し上げます。


>Sub Test()
>  Dim Fs As Integer, i As Integer
>
>  For i = 41 To 72
>   Select Case Cells(i, 3).Value
>     Case Is < 25: Fs = 10
>     Case 27 To 48: Fs = 11
>     Case Else: Fs = ?
>   End Select
>   Cells(i - 38, 3).Font.Size = Fs
>  Next i
>End Sub
>
>などとループすれば、短いコードで済みますが。

【35748】うまくいきました。
お礼  春まき  - 06/3/11(土) 22:38 -

引用なし
パスワード
   シート内に関数で文字数に応じて段階的に1〜3と割り振りました。
カレンダーの16日から列が変わるのでkeinさんのコードを参照に
以下のように書いたところうまくいきましたのでご報告させていただきます。
ご指導ありがとうございました。

Sub 文字サイズ適正化2()
  Dim Fs As Integer, i As Integer

  For i = 41 To 55
   Select Case Cells(i, 2).Value
     Case Is = 1: Fs = 10
     Case Is = 2: Fs = 9
     Case Else: Fs = 7
   End Select
   Cells(i - 38, 3).Font.Size = Fs
     Next i
     
  For i = 41 To 55
   Select Case Cells(i, 5).Value
     Case Is = 1: Fs = 10
     Case Is = 2: Fs = 9
     Case Else: Fs = 7
   End Select
   Cells(i - 38, 6).Font.Size = Fs
  Next i
End Sub

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