« カレンダー形式でスケジュール管理(VBA)、Vectorに。 | トップページ | 【EXCEL図書管理】 「保守・管理」 タブ:table設定の説明 »

2017年1月 1日 (日)

【EXCEL図書管理】図書貸出回数の表示と指定数の倍数時にメッセージ表示する

 Ver2180にて、貸出返却の受付処理については、Userform入力とシートへの入力の2通りにする予定です。いろいろな要望に応えるために、個別対応は今後も対応が煩雑となるために、その時のバージョンで対応するのではなく、最新のバージョンのもの1BOOKで対応としたく思います。
 残念ながら、Ver2.05では貸出分析のコードにバグがあり、正常に動作しませんので、バージョンアップしていただきたいのですが、2.05専用の対応をしていると、そうもいきません。という事情があります。

 さて、ご要望として、受付時に、貸出回数が指定数の倍数の時に、メッセージ表示できないかというものです。 対応を考えてみました。
 貸出回数が指定数の倍数の時とは、とある図書が10回目、20回目、30回目の貸出時に、ということです。
 この場合だと、10毎。10の倍数毎ということになります。10の倍数の時とは、貸出回数を10(指定数)で除算して余りが0(ゼロ)になるときです。 

 貸出回数を求め、それを指定数で除算して、余りが0の場合のみ、msgbox表示させるif文でできそうです。

 EXCEL図書管理では、受付した記録を受付記録シートで保存しています。貸出・返却時に、図書管理表に書き込むだけではなく、受付記録への追加記録もしています。ですので、貸出回数は、この受付記録シートのデータから求めることになります。
 操作系で、貸出回数を求めるなら、フィルター(フィルターオプション)をかけて、結果の件数=行数を表示する方法もあるように思います。
 関数系で考えると、複数条件でカウントできるcountifs()があることがわかりました。
 今回は、このcountifs()関数を使って、貸出回数を表示したいと思います。

Countifs1
 (↑受付記録シート)
 シート上の関数としてcountifsを使う場合、B列で"貸出"をカウントし、E列で該当の図書番号をカウントし、更に、A列で年月日の範囲を指定します。A列の年月日の範囲は、いつからいつまでと期間設定できるようにします。実際には、この、いつからと、いつまでは別のセルにあらかじめ代入しておくことにします。

 countifs()の範囲と条件の入力例は下記のようになります。

Countifs2

Countifs3

 これで貸出回数は表示されますが、指定数の倍数の貸出回数の場合にメッセージボックスを表示させるのは、関数ではできないので、マクロにて行うことになります。
 シートで受付する場合は、セルに代入された関数値を参考に、シート上に配置した貸出処理ボタンに登録されているコード内で記述します。(シートで貸出返却するバージョンは近々アップする予定のVer2180にあります。) 従来のUserformで受付する場合は、図書番号textboxをexitしたタイミングで、上記のcountifs()関数式を図書管理表のC2セルに代入し、その結果=C2の数値をフォーム上に表示させます。メッセージ表示のタイミングは、同じく貸出登録ボタンで行います。
 それぞれ、受付記録処理が終わってから、メッセージ表示処理を行いますので、貸出ボタンをクリックするまで、あらかじめ表示されている回数+1の回数がメッセージを表示するかいなかの対象回数になります。
[メッセージ表示のコード]~シート版:5冊まで一挙に処理できる。
 
'--------------------------
'行数分の登録処理が終わってから、貸出件数を評価しメッセージボックスを表示する処理を行う。2161β7
Hyouji = ""   'メッセージ内容を格納する変数:string
Kaisu = Sheets("table").Range("i191").Value  ' 指定数はtableシートに予め代入しておく。
K = 0

If Kaisu > 0 Then    ' 指定数が0の場合はメッセージ表示は行わない。
    For i = 16 To 20   '図書番号を入力する行は16~20行までなので、繰り返す。
      If Range("j" & i).Value > 0 Then  'j列に予めcountifs()関数を代入しておく。
        If (Range("j" & i).Value Mod Kaisu) = 0 Then
           Hyouji = Hyouji & vbCrLf & Range("a" & i) & ":" & Range("b" & i) & " 貸出回数:" & Range("j" & i) & "回"
           ' MsgBox Hyouji
        End If
        K = K + 1
      End If
    Next
    If K > 0 And Hyouji <> "" Then MsgBox Hyouji, , "貸出回数"
End If
'--------------------------
Userformでは、1回1冊ですので、上記の繰り返し処理は不要になります。


  

|

« カレンダー形式でスケジュール管理(VBA)、Vectorに。 | トップページ | 【EXCEL図書管理】 「保守・管理」 タブ:table設定の説明 »

Excel図書管理」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/83128/64703794

この記事へのトラックバック一覧です: 【EXCEL図書管理】図書貸出回数の表示と指定数の倍数時にメッセージ表示する:

« カレンダー形式でスケジュール管理(VBA)、Vectorに。 | トップページ | 【EXCEL図書管理】 「保守・管理」 タブ:table設定の説明 »