« 【EXCEL図書管理】 延滞ペナルティVBAのテスト | トップページ | 【EXCEL図書管理サポートブック:図書ラベル】不明なリンク先が表示される場合の対処方法。 »

2016年9月 3日 (土)

【EXCEL図書管理】 延滞ペナルティVBAのテスト その2

前回からの続き。
EXCEL図書管理での返却時遅延ペナルティ処理のテストです。

今回は、Ver2.05Cに、新たに貸出・返却用のシートを追加し、
シート上で、貸出・返却が行えるようにしてみました。
 Ver2.05Dとしています。 
EXCEL図書管理の最新版2.170とは、機能に差があります。
v2.170への返却ペナルティ機能については、後日アップしたいと
思います。

「xl_tosyoVer205d_20160903test.zip」をダウンロード

今回新しく追加した貸出・返却受付用のシートの説明は、
こちらから。

「xl_tosyo205d_setumei160903.zip」をダウンロード


 


----------------------

Xl_tosyo205d_setumei


ロジックが十分に固まっていませんので、クリック数が多く
なっています。

 MENUシートから、貸出処理・返却処理のボタンクリックで、
このシートがアクティブになります。 貸出や返却の処理は、
このシート上で行います。
従来のUserformは開きません。


【貸出の場合】
青字の番号の順番にクリック・入力して下さい。
1行から、22行までのセル範囲が貸出に関係します。
 貸出入力項目クリアボタンをクリックしてから、入力して下さい。
会員NO、受付年月日時分(A12)、貸出本NOを入力し、
⑥の「貸出処理」ボタンをクリックします。
図書管理表への書き込み、受付記録シートへのデータ追加が
正しく行われていることを確認してください。
 貸出停止期間(期日)は、会員一覧のメモ4:K列を使用します。
 すでに、お使いの場合は、変更願います。

【返却の場合】
赤字の番号の順番にクリック・入力して下さい。
返却は、25行から37行までのセルになります。
 返却入力項目クリア・ボタンをクリックし、受付年月日時分が
正しく入力されたのを確認してから、A31から下方のセルに、
返却本NOを入力して下さい。
 貸出中の人の項目が0の場合はエラーですので、処理しません。
 ※貸出停止期日が設定されている人が、その期日前に、全て返却しても
  貸出停止期日は変更されません。

 最後に、十分なテストを行っておりません。
 ご了承下さい。




|

« 【EXCEL図書管理】 延滞ペナルティVBAのテスト | トップページ | 【EXCEL図書管理サポートブック:図書ラベル】不明なリンク先が表示される場合の対処方法。 »

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

コメント

うさぎさんへ
 時間がございませんので、簡便に。あしからず、ご了承ください。

 貸出回数を取得して、それに対し判定後メッセージボックスを表示させることになろうかと思います。
まず、
貸出し件数をカウントし、貸出返却シート版・シート上に、表示させます。
O9セル いつから年月日を入力 例:2016/1/1
P9セル いつまでの年月日を入力 例:2016/12/31
J16セルに、下記の計算式を入力
=COUNTIFS(受付記録!$E$5:$E$50000,A16,受付記録!$A$5:$A$50000,">"&O9,受付記録!$A$5:$A$50000,"<"&P9,受付記録!$B$5:$B$50000,"貸出")
 ↑計算式をJ17セルからJ20セルまでコピー。

これで図書番号の貸出件数がJ列に表示されます。

あとは、この値をもとに、貸出処理ボタンをクリックした際に、メッセージボックスを
表示させるマクロコードを追加すれば、実現できそうに思います。

行ごとに、J列の貸出回数が10回、20回、30回なのかを判定し、ちょうどのタイミングで
メッセージボックスを表示させることになると思います。これだと、滅多に発生は
しないと思いますが、連続してメッセージが表示される可能性があります。
メッセーボックスが表示されると、その都度 OKボタンをクリックしないといけなくなります。

マクロコードは作ってみます。

投稿: engi | 2016年12月26日 (月) 23時59分

ご返信頂き有難うございます。
10/20/30というのは、例えば貸出10回を超えたら10回のアラート
20回を超えたら20回のアラートのメッセージを全ての図書へ
適応させたいと思っています。
メッセージボックスを「貸出返却シート版」へ表示させるためには
どのような作業をすれば良いでしょうか。

うさぎ

投稿: うさぎ | 2016年12月26日 (月) 14時17分

うさぎさんへ

>10/20/30回以上の貸出になったらアラートが・・・

ある図書について、貸出毎にカウントして、そのカウントが10か20か30になれば、アラートというか、メッセージボックスを表示させることは可能かと思います。この場合の、10/20/30というのは、図書により、10回でメッセージ表示させる本か、20回で表示させるのか、30回でかということで良いでしょうか? たとえば、図書管理表シートのU列に、何回でメッセージ表示させるかの値を前もって入力しておき、V列を今回のカウント列として使用するとして、貸出の度に、V列の値をカウントアップし、U列の値と同じになったタイミングでメッセージボックスを表示し、その後に、V列の値を0(ゼロ)に戻すれば良いように思います。

投稿: engi | 2016年12月21日 (水) 21時28分

いつもお世話になっております。度々のお尋ねで申し訳ありません。
図書管理シートで需要がある本を追加購入したいのですが
貸出を行う際、10/20/30回以上の貸出になったらアラートが
出るようにしたいのですが、可能でしょうか。

また、その際にアラートが出たらリセットされるように(11/21/31
回目以降を1回目の貸出とカウント)したいのですが可能でしょうか。

お手数をおかけしますがどうぞ宜しくお願い致します。

うさぎ

投稿: うさぎ | 2016年12月21日 (水) 11時07分

 バージョン205の最新版は205fとなり、
http://engi.cocolog-nifty.com/sirenai/2016/10/excelvba-d2c0.html
「xl_tosyoVer205f_20160910test.zip」をダウンロードしてください。

 なお、受け取りましたブックは最新版の205fでした。また、入力部クリアボタン内のコードに変更もありませんでした。現象が再現できませんでした。

 A4セルにセル保護がかかる可能としては、シート保護解除の状態で、何らかの操作で、他のセルをA4セルに貼りつけるなどの操作を行ってはいないでしょうか?

 入力できるセルのみ、セル保護を解除しており、空白セルなどはセル保護がかかっています。

投稿: engi | 2016年11月22日 (火) 23時17分

何度もすみません。
先述の質問の事があったのでもう一度エクセル図書管理を
ダウンロードしたのですが、旧いバージョンを
ダウンロードしてしまったのか、返却予定日時の設定がおかしく
なってしまいました。
具体的には「受付記録」上で

A列 2016/11/22 9:53
B列 貸出
C列 D05039001
D列 Temporary
E列 1110509690
F列 A companion to the anthropology of Japan / edited by Jennifer Robertson ; : pbk. -- Blackwell, 2008. -- xxiii, 518 p. ; 25 cm. -- (Blackwell companions to anthropology ; 5).
G列 2016/11/27 9:53

となってしまいます。本来ならばG列には「2016/11/22 10:45」と
表示されます。この返却日時は「メニューシート」⇒「保守管理」
⇒「貸出中リスト」でも「2016/11/27 9:53」と表示されます。

一番新しいエクセル図書管理はどこからダウンロードすれば
宜しいでしょうか。。。

いろいろとお

投稿: うさぎ | 2016年11月22日 (火) 10時02分

【貸出返却シート版シートのA4セルにセルの書式設定:ロックがかかる件】

 状況をお聞きし、想像できず、不思議な感じがしています。
 「入力部クリア」ボタンでは、セルに対しロックを設定するコードを記述しておりませんので、入力部クリアボタンでA4セルにロックの書式設定がなされるというのが不思議です。セルの書式設定でセル保護のロックをかけるコードは、 Range("A4").Select Selection.Locked = True (これはキー記録です。)のように、lockedを使うと思うのですが、lockedという語は、Excel図書管理ブックのコード内をプロジェクト内検索したところありませんでした。
ところで、症状は、
シート保護がかかっている状態で、A4セル(会員NO)を入力できていたが、
あるタイミングで、A4セルに入力できなくなった。
そこで、シート保護解除し、A4セルの書式設定~保護タブ:ロックのレ点を外してA4に入力した。次の処理をしようと、「入力部クリア」ボタンをクリックすると、A4セルに入力できなくなっている。
ということでしょうか?

コードでセル保護の設定変更をしていないので、手操作でセル保護の設定変更するとそれが設定が維持されるはずなんですが・・・・
Q5セルの値は1になっていると思いますが、それを0(1以外の値なら何でも結構ですが。)に変更してみてはいかがでしょうか? ボタンクリックでシート保護をかけないようになると思いますので、それで一時的には、症状回避になるように思います。これによるデメリットは、セル移動が面倒になることですが。

もし、よろしければ、お使いのブックをコピーしていただき、そのコピーブックの図書データ・会員データ・受付記録データを消去していただいたものをお送りいただけないでしょうか? 直に見てみたいと思います。ちなみに、どなたかにマクロ修正をお願いしたりはないでしょうか? とも思ったりします、想像がつかないものですので。
もしお送りいただけるようでしたら、宛先は、sirenaiアットマークYahooどっとcoドットjpです。

投稿: engi | 2016年11月21日 (月) 22時30分

また質問をさせて下さい。
貸出返却シート版において、会員No.のセル(A4)のロックを
セル書式⇒保護タブで、ロックを解除したままにしたいのですが
同シート内の「入力部クリア」を押すとロックがかかった状態に
戻ってしまいます。どのようにすれば解除したままになるでしょうか。

急に会員No.セルに入力する事ができなくなり、
校閲⇒シート保護の解除⇒A4セルのロックを解除、しなければ
入力できなくなってしまったのです。

お手数をおかけしますが、ご回答のほどどうぞ宜しくお願い致します。

うさぎ

投稿: うさぎ | 2016年11月21日 (月) 15時38分

貸出返却シートを修正してみました。
http://engi.cocolog-nifty.com/sirenai/2016/10/excelvba-d2c0.html

貸出停止期間のセルは保護解除しなくても、変更できるようにしました。
また、返却予定日のルールは、シート上で設定できるようにしてみました。
お試しいただければと思います。

投稿: engi | 2016年10月 5日 (水) 11時38分

お返事頂き有難うございます。
貸出停止期間を修正する際に、シート保護解除後G31:G35の貸出停止期日を
変更すると、次々と返却処理をしなければならない場合、手間取るので
後からまとめて「会員一覧」タブのK列を修正する事で対応出来ないかと
思ったものですから、一度、試しに「会員一覧」タブのK列を修正して
みたら、対応するする事が出来ました。

分かりにくい質問ですみません。

また、何か質問をする事があると思いますが、何卒宜しくお願い致します。

うさぎ

投稿: うさぎ | 2016年9月20日 (火) 15時09分

[ご質問]
>貸出停止期間を変更する場合、
>「貸出返却シート版」のセルG31~35にて変更するのではなく
>会員一覧のK列を修正するように、マクロを変更する事は
>可能でしょうか。

 返却受付で考えている操作は、返却受付日・時分を「返却受付時間確定」ボタンでA27セルに代入する。A31:A35に、返却本NOを入力する。 返却遅延判定ボタンをクリックする。必要に応じて、シート保護解除後G31:G35の貸出停止期日を変更する。その後、「返却受付処理」ボタンをクリックする。

 この「返却受付処理」ボタンで、受付記録シートに、返却データを追記し、F31:F35の各セルに"貸出停止"という語句がある行については、会員一覧の該当会員の行のK列に、貸出停止期日を代入し、その後、図書管理表シートの該当本の行の貸出データが消去されます。

現在、返却受付ボタンをクリックすると、会員一覧のK列に貸出期日が転記されているので、特に問題ないと思っています。

 ですので、今一つ、ご要望の内容が理解しかねています。会員一覧のK列に貸出期日が転記されない現象があるのでしょうか? その場合、考えられるのは、F列の貸出停止という語句を修正されていませんでしょうか? F列を修正していないのに、会員一覧へ転記されないのでしょうか?
 もしよろしければ、どのような手順で、入力・クリックしているか、教えて下さい。

投稿: engi | 2016年9月16日 (金) 22時07分

とても丁寧に説明をして頂き有難うございます。

会員一覧のK列に既に数値がある場合を想定していませんでした。

改めてお尋ね致します。貸出停止期間を変更する場合、
「貸出返却シート版」のセルG31~35にて変更するのではなく
会員一覧のK列を修正するように、マクロを変更する事は
可能でしょうか。

どうぞ宜しくお願いします。

うさぎ

投稿: うさぎ | 2016年9月16日 (金) 13時40分

こんばんは。ご質問についての回答です。文字だけで、わかりにくいかもしれませんが、ご了承下さい。

(1)現在は16:30以降に貸し出した場合、次の日の9:00が返却予定時刻となって
いるのですが、これを次の日(あるいは金曜日貸出の場合なら次週月曜日)
の10:45へと変更したい。
 →VBAの構文の変更となります。
 貸出返却シート版・シートをアクティブにし、シート保護を解除し、D列15行目にある「返却予定日計算」を右クリック~マクロの登録~編集(E)で、VBAのコードが表示されると思います。

下記がコードになります。
1つのコード=プロシージャは、subで始まり、end subで終わります。

Sub 返却予定日計算()
Dim i As Integer
Dim 返却日 As String
Dim 受付日 As Date
  ・・・・・
subに続く、「返却予定日計算」という名が、先ほどのボタンで実行されるマクロ名で、下記に手続きが記述されています。

35行目に、下記の構文があります。
If Taimu = "10:45" Then Taimu2 = "13:45"
If Taimu >= "13:45" And Taimu "12:30" And Taimu = "16:30" And Youbi <> "金曜日" Then ' TEXTBOX13は返却日
Taimu2 = "10:45"
返却日 = 受付日 + 1 & " " & Taimu2
End If

If Taimu >= "16:30" And Youbi = "金曜日" Then
Taimu2 = "09:00"
返却日 = 受付日 + 3 & " " & Taimu2
End If

というコードがあります。ここでは、16:30以降の場合についてのみ曜日を判定して、金曜日でないは、返却日を1日加算して、時間を10:45にしています。
金曜日の場合は、返却日を3日加算して、時間を9:00にしています。
 ご要望は、16:30以降の受付で、かつ、曜日が金曜日の場合に、月曜日の10:45にしたいとのことだと思いますので、
   If Taimu >= "16:30" And Youbi = "金曜日" Then
Taimu2 = "09:00"  ← この文の9:00を10:45に変更していただければと思います。
     Taimu2 = "10:45"  ' ←このように変更して下さい。
   
 ところで、土曜日の場合、は条件がないので、通常返却日になっていまいますが、土曜日はお休みなので、実際上問題なしを前提としています。もし、土曜日も貸出をされるのであれば、定義の追加が必要です。

   If Taimu >= "16:30" And Youbi = "土曜日" Then
Taimu2 = "10:45"
返却日 = 受付日 + 2 & " " & Taimu2
End If

 この4行の文を金曜日の定義の下に、挿入すれば良いです。

 
(2)貸出停止期間を変更するため、G31~35を手作業で変更した場合、
  会員一覧のK列は変更されないのですが、同時に変更するように
  修正する事は可能でしょうか。
→ 1)と同じように、シート保護解除し、返却受付処理・ボタンを右クリックし、マクロの登録~編集を選択します。

sub sht_返却()
' 貸出返却シート上下段の四角図形(マクロ)ボタン
'返却処理を行う。
' 8/31 途中
  ・・・・
 という分が最初になっていると思います。
 ずぅ~と、下の方に

  '既にある貸出停止期間と今回の停止期間を比較し、長い方を選ぶ
If Right(Range("f" & i), 4) = "貸出停止" Then
K_Gyou = Range("L" & i).Value
If Sheets("会員一覧").Range("k" & K_Gyou).Value <> "" Then
'メモ4:貸出停止列に値があれば、
date1 = Range("a27").Value
date3 = Sheets("会員一覧").Range("k" & K_Gyou).Value
'F列に、貸出停止の判定結果がでたら、会員一覧のメモ4に貸出停止期間を代入
If DateDiff("n", date1, date3) < 0 Then
Sheets("会員一覧").Range("k" & K_Gyou) = Range("g" & i).Value
End If
Else
Sheets("会員一覧").Range("k" & K_Gyou) = Range("g" & i).Value
End If
End If

という文があると思います。
返却受付処理ボタンを押すと、31行から35行まで、1行ごとにF列に貸出停止という語句がある場合に、貸出停止期間を会員一覧に書き込みます。ただ、書き込みのセルに値がある場合に、その値とシート上の貸出停止期日を比べて、シートの貸出停止期日が大きい場合にのみ、書き換えるようにしています。
もし、条件を設けずに、シートの貸出停止期日を会員一覧のK列に書き込むには、条件を外せばできます。
構文を削除するか、無効にするかになりますが、ここでは無効にする仕方を記します。
無効にしたい文の先頭に、「’」半角のシフトキー+7を付けるだけです。
対象となる文は、
If DateDiff("n", date1, date3) < 0 Then
Sheets("会員一覧").Range("k" & K_Gyou) = Range("g" & i).Value
End If
 この3行です。それぞれの行の先頭に 'を付けます。
  ' If DateDiff("n", date1, date3) < 0 Then  ' 日にちの差異がある場合
' Sheets("会員一覧").Range("k" & K_Gyou) = Range("g" & i).Value
 ' End If
「'」は、コードの前にあれば、どこにつけても良いです。

ただ、これだけでは、結構無駄な構文が残ってしまいますが、処理時間的には余り影響はないだろうと思います。


  
(3)貸出停止期間の開始は、「実際に返却をした時間からスタート」
  で宜しいでしょうか。
→ 返却時の貸出停止期日は。A27セルの値を基に計算しています。A27セルは直接変更しても大丈夫です。A12も同様です。



投稿: engi | 2016年9月15日 (木) 22時55分

前述の1)につきまして、お尋ね致します。
貸出停止期間を変更する場合、G31~35にて変更するのではなく
会員一覧のK列を修正するように、マクロを変更する事は可能でしょうか。

どうぞ宜しくお願い致します。

うさぎ

投稿: うさぎ | 2016年9月15日 (木) 16時58分

重ねてのお尋ね、恐れ入ります。
1)貸出停止期間を変更するため、G31~35を手作業で変更した場合、
  会員一覧のK列は変更されないのですが、同時に変更するように
  修正する事は可能でしょうか。
2)貸出停止期間の開始は、「実際に返却をした時間からスタート」
  で宜しいでしょうか。

お忙しい中、恐れ入りますがどうぞ宜しくお願い致します。

うさぎ


投稿: うさぎ | 2016年9月15日 (木) 16時47分

何度もお尋ねしてすみません。
返却予定時刻について修正したいのですが、
現在は16:30以降に貸し出した場合、次の日の9:00が返却予定時刻となって
いるのですが、これを次の日(あるいは金曜日貸出の場合なら次週月曜日)
の10:45へと変更したいのですが、どこを修正したら良いでしょうか。

どうぞ宜しくお願い致します。

うさぎ

投稿: うさぎ | 2016年9月15日 (木) 10時46分

貸出返却シート版について

1)返却日のルール変更の件。ルール変更とすると、マクロコードを修正することなろうかと思います。シート解除後に返却予定日計算ボタンを右クリックし、マクロの登録~編集でコード画面が表示されますので、そちらで修正します。
 又は、返却予定日計算ボタンをクリックした後で、D16以降のセルを直に値修正してから、貸出処理ボタンをクリックしてみてください。

2)返却予定日について、別のコメントにお返事しましたので、そちらをご参照ください。

3)バーコードリーダーが全角読み込みする件についても別にてコメントしましたので、ご参照ください。


投稿: engi | 2016年9月 8日 (木) 23時04分

お尋ねばかりですみません。

1)「貸出返却シート版」シート内の「返却日ルール」の修正は
   可能でしょうか。

2)延滞期間に土日祝日と夏期/冬期休暇を含めない場合はどこを修正したら
  宜しいでしょうか。

3)メニュー→貸出受付
  の画面で返却処理をしようとするとA31セルがバーコード読み取りを
  全角で読み取ってしまうのですが、これを半角読み取り可能にするには
  どこで修正したら良いでしょうか。

投稿: うさぎ | 2016年9月 8日 (木) 15時35分

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: 【EXCEL図書管理】 延滞ペナルティVBAのテスト その2:

« 【EXCEL図書管理】 延滞ペナルティVBAのテスト | トップページ | 【EXCEL図書管理サポートブック:図書ラベル】不明なリンク先が表示される場合の対処方法。 »