作成者別アーカイブ: miura

ページによって印刷の設定を変更する①

レポートを印刷する場合、ページによっては表示したいもの、したくないものが
あると思います。

下の図は、1ページ目は請求額を表示して、2ページ以降は表示させない設定になっています。

デザインビューでみたとき、こんな感じです。

ばらします。

ページによって表示させる・させないをどこでコントロールするのかというと
ページヘッダーの印刷時です。

ここでイベントプロシージャを開いて、次のVBAコードを入力します。

ちなみにオブジェクトはこんな感じです。

Private Sub ページヘッダーセクション_Print(Cancel As Integer, PrintCount As Integer)
If [Page] >= 2 Then
Me!テキスト105.Visible = False
Me!テキスト183.Visible = True
End If
End Sub

ページが2ページ以上のときは、合計額を表示させるテキストボックスを非表示にし、
合計額を表示させるテキストボックスを隠すテキストボックスを表示にします。

これで印刷のかけると、一番上の図のようにページによって表示・非表示を切り替えます。

Accessは印刷させるもの・させないものをVBAでコントロールしなければなりません。
クエリよりもフォームよりも、レポートが圧倒的に難しいと感じます。
逆をいうとレポートを自由にコントロールできると、Accessの実力はかなりついたのでは
ないでしょうか。

===========================================
最近車で経営に役立つYouTube動画を聞いています。
聞いてるうちにCMをスキップするのが面倒になってきたので
サブスクに申し込みました。
お金はかかりますが、これほど快適だとは思いませんでした。

しかしYouTubeで結構学べますね。すごい世のなかになりました。

本日も最後までお読みいただきありがとうございます。

レポートの行数を指定するコードを読む②

レポートの行数を指定するときの、肝の部分を解説します。
まず前提として下の画像をご覧ください。

下の言い回しがよく出てきますが、オブジェクトの名前とテキストボックスが一致している
ことがわかると思います。

最初に行数を指定します。
If i Mod 18 = 0 Then
18が行数です。20行にしたいなら18を20としてください。
ここで、iが18で割り切れるときとそうでないときに大きな違いがあります。
18で割り切れるときは通常改ページをします。
でもデータの数が18個の場合、ちょうど1ページで収まります。
19の場合は次のページに1行表示されます。
それがこの違いです。
If i = j Then
 Me![日付].Visible = True
 Me![項目].Visible = True
 Me![使用量].Visible = True
 Me![料金].Visible = True
 Me![消費税].Visible = True
Me![税込金額].Visible = True

ElseIf i < j Then Me![bpage].Visible = True
Me![日付].Visible = True
Me![項目].Visible = True
Me![使用量].Visible = True
Me![料金].Visible = True
Me![消費税].Visible = True
Me![税込金額].Visible = True

i=jのときは改ページのコードがありません。
ij)のときはもう次のレコードがないのでFalseになります。
これが大まかな流れです。

次によく出てくる言い回しを解説します。

Me![日付].Visible = True
Me![項目].Visible = True
Me![使用量].Visible = True
Me![料金].Visible = True
Me![消費税].Visible = True
Me![税込金額].Visible = True

レポートにテキストボックスがあるのにVBAコードにない、となるとエラーになります。

ここで
Me![日付].Visible = True
これを詳しく読み解くと
日付のテキストボックスの表示を見える状態にします。

Me![日付].Visible = False
この場合はVisbleがFalseなので見えない状態になります。

ではどういう場合にTrueになって、どういう場合にFalseになるのか?
というと、一番大きな違いは、
表示するレコードがあるかどうか?ということです。
当然レコードがあれば、表示はTrueになるし、なければFalseになります。

表示するレコードがあるかどうかの判定は
iがjより小さい場合はTrueになります。
iはループする回数で、jは表示するレコードの数です。
i=jならVisibleはFalse
となります。

非常に分かりにくいですが、ずっと見ているとなんとなく言わんとしていることが
分かってくると思います。頭の中でiを回しながら、いまどんな状態なのか、イメージ
してみてください。
============================================
10年間整体に通うことなく走り続けた体は、かなりバキバキに固くなっていました。
いま週2で整体に通って体をほぐしてもらっています。やはり体の手入れは大事だなと
思う今日この頃です。

本日も最後までお読みいただきありがとうございます。

レポートの行数を指定するコードを読む

Accessでレポートを印刷する場合、何も指定しないと尻切れトンボの請求書
が出てきます。

Excelなら行を挿入して簡単に手直しができるのですが、
Accessの場合はこれをプログラミングで制御しなければいけません。

Accessの難しさは個人的にはここに集約されると思います。。
続きを読む

レコードを選択して集計する

Accessを使っているとテーブルにどんどんレコードが追加されていきます。

Accessに入力したデータで集計もしくは新たな資料を作る場合、何もしなければ
クエリやVBAの指示は全レコードに及び、ほんの一部の処理が全レコードに及びます。
特に重たい処理(DLookup関数やDsum関数)を使うときは如実に遅くなります。
続きを読む

源泉徴収税額の計算方法が変わりました

給与計算をする上で、源泉徴収税額表が変わりました。

源泉徴収税額表(国税庁のHP)

大きな変更は、高額の給与の計算が細かくなったことでしょうか。
これをクエリで組むと、なかなかのクエリになりました。

このデータベースは大人数の給与計算を想定していないので、多少重くなっても
問題ないかなと思います。
続きを読む

Excelで出納帳をつける際の注意点

確定申告の時期が近づき、そろそろやらないと、という方が多いと思います。

一年間貯めに貯めたレシートをどう集計するのか簡単な方法を説明します。

よくある方法は、手当たり次第に入れてしまう方法です。
この方法は手っ取り早いのですが、効率が悪いです

特に日付ごとにやらないと、という考えは捨ててください。
日付はExcelであればあとで幾らでも並べ替えできます。
でも月がまたぐと少し並べ替えが面倒になるので、できれば
月ごとに入力した方が無難です。
続きを読む