たとえば、以下のような表があるとします。
B列には、商品コードが入力されています。
C列には、在庫数が入力されています。
さて、ここで次のような要望があったとしましょう。
「C列の在庫数が0の場合は、B列の商品コードを太字にしたい。
ただし、在庫数が0でなければ、B列の商品コードの文字は太字にしない。」
さあ、どう対処しましょうか?
なお、商品数は固定とします。
条件付き書式を使えば簡単ですね。
でも、折角ですから、VBAで対応してみましょう。
普通に考えれば、以下のサンプルコードのようになるでしょう。
Sub Test()
Dim i As Integer
For i = 3 To 12
If Cells(i, 3).Value = 0 Then
Cells(i, 2).Font.Bold = True
Else
Cells(i, 2).Font.Bold = False
End If
Next
End Sub
条件分岐を使って、C列の在庫数が0のときは、B列の値を太字にします。
太字にするには、BoldプロパティにTrueを代入します。
もちろん、これで、まったく問題はありません。
でも、今回は、IF構文(条件分岐)を使わないでコーディングする方法を紹介します。
Sub Test2()
Dim i As Integer
For i = 3 To 12
Cells(i, 2).Font.Bold = Not CBool(Cells(i, 3).Value)
Next
End Sub
解説をします。
太字にするには、BoldプロパティをTrueにし、太字にしない場合はFalseにするという特性を
十分に活かしているコードです。
CBool関数は、引数をBoolean型に変換します。
Boolean型とは、TrueもしくはFalseの2つしか値をとれない型です。
引数にはC列の値を指定していますから、数値(在庫数)をBoolean型に変換しています。
実は、数値の0は、Falseを意味し、0以外の数値は、全てTrueと解釈されます。
C言語は、そのあたりをふまえてコーディングする場面が多いのですが、
もちろん、VBAでもそのテクニックは使えます。
また、Not演算子は、否定を意味します。
在庫数が0の場合は、Falseと解釈されますので、Not演算子を使ってTrueにしています。
このようにBoolean型の値を設定するプロパティに対しては、
Cbool関数と、場合によってはNot演算子を使うことによって
条件分岐をすることなくコーディングすることができます。
実行結果を載せておきます。
だい
B列には、商品コードが入力されています。
C列には、在庫数が入力されています。
さて、ここで次のような要望があったとしましょう。
「C列の在庫数が0の場合は、B列の商品コードを太字にしたい。
ただし、在庫数が0でなければ、B列の商品コードの文字は太字にしない。」
さあ、どう対処しましょうか?
なお、商品数は固定とします。
条件付き書式を使えば簡単ですね。
でも、折角ですから、VBAで対応してみましょう。
普通に考えれば、以下のサンプルコードのようになるでしょう。
Sub Test()
Dim i As Integer
For i = 3 To 12
If Cells(i, 3).Value = 0 Then
Cells(i, 2).Font.Bold = True
Else
Cells(i, 2).Font.Bold = False
End If
Next
End Sub
条件分岐を使って、C列の在庫数が0のときは、B列の値を太字にします。
太字にするには、BoldプロパティにTrueを代入します。
もちろん、これで、まったく問題はありません。
でも、今回は、IF構文(条件分岐)を使わないでコーディングする方法を紹介します。
Sub Test2()
Dim i As Integer
For i = 3 To 12
Cells(i, 2).Font.Bold = Not CBool(Cells(i, 3).Value)
Next
End Sub
解説をします。
太字にするには、BoldプロパティをTrueにし、太字にしない場合はFalseにするという特性を
十分に活かしているコードです。
CBool関数は、引数をBoolean型に変換します。
Boolean型とは、TrueもしくはFalseの2つしか値をとれない型です。
引数にはC列の値を指定していますから、数値(在庫数)をBoolean型に変換しています。
実は、数値の0は、Falseを意味し、0以外の数値は、全てTrueと解釈されます。
C言語は、そのあたりをふまえてコーディングする場面が多いのですが、
もちろん、VBAでもそのテクニックは使えます。
また、Not演算子は、否定を意味します。
在庫数が0の場合は、Falseと解釈されますので、Not演算子を使ってTrueにしています。
このようにBoolean型の値を設定するプロパティに対しては、
Cbool関数と、場合によってはNot演算子を使うことによって
条件分岐をすることなくコーディングすることができます。
実行結果を載せておきます。
だい