トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 揺るぎない力編: 第14話「規格入力フォームを完成させよう!」2/4 :昨日考えたコード

やってみよう!Excel VBAで業務改善! 新たなる挑戦編|第14話 「規格入力フォームを完成させよう!」

昨日考えたコード

翌日、星くんは会社のPCに向かって、カタカタとキーボードを叩いています。
入力しているコードは、昨日、八木くんのマンションに向かう途中で考えたVBAのコードです。

Private Sub UserForm_Initialize()
    Dim Zai As String
    Dim i As Long
    Dim r As Long
    Dim c As Long
    
    Zai = ActiveCell.Offset(0, -1).Value
    Label1.Caption = Zai & "の規格一覧"
    
    For i = 1 To Columns.Count
        If Worksheets("規格一覧").Cells(1, i).Value = Zai Then
            c = i
            Exit For
        End If
    Next i
    
    If c = 0 Then
        Label1.Caption = Zai & "の規格が見つかりません"
        CommandButton1.Enabled = False
    Else
        r = 2
        Do Until Worksheets("規格一覧").Cells(r, c).Value = ""
            ListBox1.AddItem Worksheets("規格一覧").Cells(r, c).Value
            r = r + 1
        Loop
    End If
    
End Sub

※赤字の部分が、新しく入力されたコードです。

「うん!昨日、考えた通りのコードになったぞ!
規格一覧表に材質が見つからなかったとき、列を指定する変数cの値は"0"のままだ、
そのときはLabel1ラベルに、材質の規格が見つからなかった旨のメッセージを表示し、
[入力]ボタンであるCommandButton1のEnabledプロパティを"False"にして、
使用不可にする…」
星くんは、フンフンとうなずきながらコードを目で追います。

「…それ以外のときは材質が見つかったときだから、
変数cの列の規格をループ処理で、すべてListBox1にAddItemしてやる。
…と、For…Nextじゃないからカウンタ変数は使えないんだよな。
行を指定する変数rは、"r = r + 1"で、1を加算してやらなくちゃ…」
星くんは小さくガッツポーズをとります。

一覧にもどる