トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > VBAとの出会い編 第30話「架空のシステムをイメージしよう!」

やってみよう!Excel VBAで業務改善!|VBAとの出会い編

どんなシステムだったっけ?

翌日、出社した星くんはPCの前で腕組みをして、ウーンと考え込んでいました。

「…2つのマクロを組み合わせるたって…いったいどうすりゃいいんだ?
八木は前に想像した架空のシステムを思い出せっていってたけど…。
そもそも、どんなシステムを想像したんだっけ…?」
星くんは記憶の糸をたぐり、以前に想像した架空のシステムを必死になって思い出します。

「…そうだ、確か…。
画面のボタンを押すと[ファイルを開く]ダイアログボックスが表示されて…
そこから、対象となるオーダー表のブックを選択するんだ…。
するとそのブックが開き…あと、どうなるんだっけ?」
星くんは目を閉じ、システムの動きを一生懸命イメージします。
やがて星くんの頭の中に、架空のシステムが動くシーンが浮かび上がってきました。

「…そうだ。ブックを開いたら、追加アイテムがあるかチェックさせなきゃ。
そしてチェックが終わったら…上書き保存をして閉じるんだ。
…まてよ…閉じる前にシートを印刷するかどうか、確認させるんじゃなかったっけ…?」
記憶の中のシステムが、どんどん鮮明によみがえってきます。

「うん!これだ!これが、前に想像した架空のシステムの動きだ…思い出したぞ!」 やにわにVBEを起動すると、星くんはすでに完成させた2つのマクロを表示させました。

「…ということは…まず呼び出すべきマクロは、ブックを開いて編集するマクロということか…。
そしてどっかのタイミングで、追加アイテムをチェックするマクロを呼び出せばいいんだな…」

'ブックを開いて編集するマクロ
Sub Test()
    Dim Bookpath As String
    
    '変数に対象ブックのパスを格納する(Excel ブックだけを候補に表示)
    Bookpath = Application.GetOpenFilename("Excel ブック,*.xls")
    
    '[キャンセル]ボタンがクリックされたか判定する
    If Bookpath <> "False" Then
        '対象ブックを開く
        Workbooks.Open Filename:=Bookpath
            
        'セルA1に"開いたよ!"の文字列を入力する
        Range("A1") = "開いたよ!"
            
        '対象ブックを閉じる
        ActiveWorkbook.Close SaveChanges:=True
    End If
End Sub

'追加アイテムをチェックするマクロ
Sub Test()
    Dim i As Long
    Dim j As Long
    Dim Hantei As Boolean
    
    '変数の値を初期化する
    Hantei = False
    
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        For j = 2 To Cells(Rows.Count, 3).End(xlUp).Row
            If Cells(i, 1) = Cells(j, 3) Then
                '変数に"True"を代入する
                Hantei = True
                Exit For
            End If
        Next j
        
        If Hantei Then
            '変数の値を"False"に戻す
            Hantei = False
        Else
            'セルの背景色を変える(チェックする)
            Cells(i, 1).Interior.ColorIndex = 6
        End If
    Next i
End Sub
シーズン1 「VBAとの出会い」編: 各エピソードへのリンク
一覧にもどる