テクニック集第6回、一日分のデータ展開を拡張。エクセルVBAで献立自動化、栄養士さんお助けツール

Excel VBA

11/8、今回のダウンロードファイルにバグあり修正して再アップロードしました。

前回までのレビュー

第五回では週間献立表の月曜日1日分の献立にレシピを割り当て登録し転送ボタンを押すことで、献立作業指示書のシートにレシピの食材情報を自動転記する。というところまで処理の説明をしたところでちょっと中断して第5.5回としてレシピ作成システムの機能強化作業をしていました。

レシピ作成システムの機能強化も一通りおわったので、遅くなりましたが第6回の記事の作成に取り掛かることにします。

データの書き出し。曜日ごとの連続処理に拡張する。

第5回までに、月曜日1日分の書き出しができたので、この処理を曜日連続できるように追加処理をします。一日分の処理全体をもう一つのForで囲ってしまうだけなのでそれほど難しくないと思います。

For i  =  1  To  7  ’月曜日~日曜日までの7日間の繰り返し
★1日分の処理
next i

こんなかんじです。

プログラム

Private Sub CommandButton1_Click()
Dim kaisiIti As Variant
Dim x(3) As Variant
Dim asahiruyuu As Variant
Dim kuu As Integer
kuu = kuurancheck("on")
If kuu > 0 Then
    If CheckBox8.Value = True Then
        MsgBox "■ 空白を無視して先に進みます。。。"
    Else
        MsgBox "■ 空白のセルにメニューを設定してください。。。"
        Exit Sub
    End If
End If
Application.ScreenUpdating = False

'月曜日のデータ処理を全曜日に拡張する
'月~日の7日分の繰り返し
Dim youbi As Integer    '(0=月、1=火、2=水、3=木、4=金、5=土、6=日)

For youbi = 0 To 6
    '献立作業指示書の前回データをクリア(罫線含む)
    Call dataClire

    '日付転送
    Sheet2.Cells(2, "B") = Sheet1.Cells(5, youbi + 4).Value
    Sheet2.Cells(3, "B") = Format(Sheet1.Cells(5, youbi + 4), "(aaa)")

    '朝食
    kaisiIti = katrgoriInput(6, 6, 5, 4, youbi + 2, "朝", youbi)
    Call keisenTop(kaisiIti(0))    '食カテゴリーの変わり目に罫線を引く
    x(0) = bunkaiEiyou(kaisiIti(1))        '表示用栄養価は文字列が含ま
        'れるので、後で合計平均値を計算する必要があるので、
        '数値だけの配列に取り出している

    '昼食
    kaisiIti = katrgoriInput(kaisiIti(0), 12, 7, 5, youbi + 2, "昼", youbi)
    Call keisenTop(kaisiIti(0))    '食カテゴリーの変わり目に罫線を引く
    x(1) = bunkaiEiyou(kaisiIti(1))

    'おやつ
    kaisiIti = katrgoriInput(kaisiIti(0), 20, 1, 6, youbi + 2, "おやつ", youbi)
    Call keisenTop(kaisiIti(0))    '食カテゴリーの変わり目に罫線を引く
    x(2) = bunkaiEiyou(kaisiIti(1))

    '夕食
    kaisiIti = katrgoriInput(kaisiIti(0), 22, 6, 7, youbi + 2, "夕", youbi)
    Call keisenTop(kaisiIti(0))    '食カテゴリーの変わり目に罫線を引く
    x(3) = bunkaiEiyou(kaisiIti(1))

    '栄養全部集合(各栄養素を合計して平均値として取り出す)
    asahiruyuu = eiyouZenbu(x)

    'sheet1合計平均の欄に記入
    If Val(asahiruyuu) > 0 Then 'メニューが未設定の時はカロリーが0になるので書き込まない
        Sheet1.Cells(29, youbi + 4) = asahiruyuu
    End If
    '印刷処理
    
    
    MsgBox youbi & "曜日の処理終り"
    
Next youbi
CheckBox8.Value = False

Application.ScreenUpdating = True
End Sub

 

■ 曜日の繰り返し Forの書き出し部分です

■Forの終端部分です。

■このFor~Nextに囲まれた各処理が一日分の具体的な処理内容になります。

メニュー表示デザインを変更しました

週間献立作業指示書

処理的には、作業指示書用データを曜日ごとに書き出して印刷します。

あまり必要ないかもしれませんが曜日、日付ごとにチェックボックスで印刷しないを選択できるようにしてあります。

「日付設定」ボタンでは、設定用フォームで設定します。月曜日の日付をセットするようになっています。

用紙設定はA4縦印刷です。少し小さめですからB4、A3用紙に変更する場合はExcelの印刷設定で変更してください。

週間献立表印刷

週間献立表(Sheet1)を指定枚数分印刷します。

用紙設定はA4横印刷です。B4、A3用紙に変更する場合はExcelの印刷設定で変更してください。

献立表レシピデータクリア

これも、あまり必要ないかもしれませんが、Sheet1(週間献立表)に設定した、レシピ名と栄養価表示を消します(クリア)。

週間献立表に一度設定したレシピはいちいち消さないでファイルごと別のフォルダに保存し、後で参照できるようにしたほうがいいでしょう。(サイクルメニュー的な使い方ができると非常に効率的です。)

栄養価表示用ボタン

       

■前回まではレシピの食材詳細情報を作業指示書に転記する処理と同時に栄養価計算を実行していましたが、栄養価計算部分だけ独立して表示するように変更しました。少し計算に時間がかかるので、その間プログレスバーを表示するようにしています。計算の内容を以下に示します。

★各食事区分ごとにレシピ内食材の栄養価5種類を合計計算

★各食事帯(朝、昼、おやつ、夕)の一日分として合計して平均値を計算

★一日単位の平均栄養価を各曜日で合計して週平均栄養価を計算

★以上が変更内容です。

メニューデザインを変更しただけなので処理、動作的には特に新しく変更した部分は無いのでプロシージャをのぞいてみて下さい。

 

ダウンロード

■ 11/8、ダウンロードファイルに一部バグ発見、修正し再アップロードしました

現時点までの最新ファイルが下のカードからダウンロードできます。

コメント

タイトルとURLをコピーしました