Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


60 / 2272 ツリー ←次へ | 前へ→

【13156】Access2016レポートの10行毎に直線を引く takeo 17/6/3(土) 14:42 質問[未読]
【13157】Re:Access2016レポートの10行毎に直線を引く hatena 17/6/3(土) 18:58 回答[未読]
【13158】Re:Access2016レポートの10行毎に直線を引く たけお 17/6/3(土) 21:16 質問[未読]
【13159】Re:Access2016レポートの10行毎に直線を引く hatena 17/6/4(日) 22:49 回答[未読]
【13160】Re:Access2016レポートの10行毎に直線を引く たけお 17/6/5(月) 15:05 お礼[未読]
【13162】Re:Access2016レポートの10行毎に直線を引く hatena 17/6/6(火) 7:57 回答[未読]
【13161】Re:Access2016レポートの10行毎に直線を引く たけお 17/6/5(月) 19:17 質問[未読]
【13163】Re:Access2016レポートの10行毎に直線を引く たけお 17/6/6(火) 15:28 お礼[未読]
【13164】Re:Access2016レポートの10行毎に直線を引く たけお 17/6/12(月) 10:25 お礼[未読]

【13156】Access2016レポートの10行毎に直線を引く
質問  takeo  - 17/6/3(土) 14:42 -

引用なし
パスワード
   教えてください。Access2016を使用しています。一意の「コード」を持つ158名分の「会員名簿」テーブルがあり、それをレポートとして印刷するとき、現在は各行毎に直線が印刷されます。これを10行ごとに直線が印刷されるように変更しようと次のことを行ったのですが上手くいきません。どこに問題があるのかよく理解できません。ご教示ください。
「会員名簿」テーブルを基にクエリを作成し、演算フイールドに「[コード] Mod 10」と入力し、実行しました。フイールド名は「式1:」という名前がつきました。このクエリを基にレポートを作成しました。詳細フイールドのフイールドの下に直線を配置しました。プロパテイシートの「その他」タブの「名前」に「罫線」と設定しました。「詳細セクションバー」のプロパテイの「イベント」タブの「フォーマット時」に埋め込みマクロを設定しました。その内容は次のIf文とElseif文です。
If [式1]=0 Then      Elseif [式1]<>0 Then 
プロパティの設定      プロパティの設定
コントロール名「罫線」、  コントロール名「罫線」
プロパテイ「可視」、    プロパテイ「可視」
値「-1」          値「0」

【13157】Re:Access2016レポートの10行毎に直線を...
回答  hatena  - 17/6/3(土) 18:58 -

引用なし
パスワード
   >「会員名簿」テーブルを基にクエリを作成し、演算フイールドに「[コード] Mod 10」と入力し、実行しました。

この[コード]フィールドは1から始まる連番になってますか。
なっていないなら、希望の結果にはなりません。
この方法は連番必須です。

レポート上で連番を取得するのは下記の方法で簡単にできます。
詳細セクションにテキストボックスを配置して下記のように設定します。

コントロールソース =1
集計実行 全体
可視 いいえ
名前 連番

集計実行で 1 を加算しているということです。

マクロの条件式はそれぞれ下記のようにすればいいでしょう。

If ([連番] Mod 10)=0 Then

 直線の可視 True

Else

 直線の可視 False

【13158】Re:Access2016レポートの10行毎に直線を...
質問  たけお E-MAIL  - 17/6/3(土) 21:16 -

引用なし
パスワード
   ▼hatena さん:
>>「会員名簿」テーブルを基にクエリを作成し、演算フイールドに「[コード] Mod 10」と入力し、実行しました。
>
>この[コード]フィールドは1から始まる連番になってますか。
>なっていないなら、希望の結果にはなりません。
>この方法は連番必須です。
>
>レポート上で連番を取得するのは下記の方法で簡単にできます。
>詳細セクションにテキストボックスを配置して下記のように設定します。
>
>コントロールソース =1
>集計実行 全体
>可視 いいえ
>名前 連番
>
>集計実行で 1 を加算しているということです。
>
>マクロの条件式はそれぞれ下記のようにすればいいでしょう。
>
>If ([連番] Mod 10)=0 Then
>
> 直線の可視 True
>
>Else
>
> 直線の可視 False


早速のご回答をありがとうございます。
勿論1からの連続Noです。Mod関数で計算した結果は規則正しく1,2,3,..9,0の連続の形でクエリ結果を表示できています。ご教示いただいた内容をみて私のやり方は大筋では間違っていないのだと思いました。教えていただいた方法(連続noのためコントロールソース =1はしていませんが)If([コード]Mod 10)=0 Then に変えてやってみましたが各行に罫線が表示されてしまい、同じく埋め込みマクロが機能していない結果となりました。再度時間を割いてご再考いただけないでしょうか?よろしくお願いします。

【13159】Re:Access2016レポートの10行毎に直線を...
回答  hatena  - 17/6/4(日) 22:49 -

引用なし
パスワード
   当方のレポートで試してみましたが、うまくいきました。

どこか設定が間違っているのだと思います。

「詳細」セクションを選択して、プロパティシートの上のコンボボックスは「詳細」になっしますか。
そこの「フォーマット時」欄は [埋め込みマクロ] となってますか。


以下、蛇足ですが、
「コード」が現状は連番になっていたとしても、削除したりして抜けが出る場合もあると思います。また、フィルターをかけて出力したりする場合もあるかも知れません。
その場合でも変更することなく対応できる私の提案の方法を推奨します。

あと、マクロだと、いつかは限界がきます。VBAの方へ移行するというのも手だと思います。
その場合の設定方法を紹介しておきます。

詳細セクションのフォーマット時イベントでドロップダウンリストから[イベント プロシージャ]を選択する。
ビルドボタンをクリックすると、VBAウィンドウが開き、

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

End Sub

とすでに、記述されている。この間に下記のようにコードを記述します。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

  If (Me.CurrentRecord Mod 10) = 0 Then
    Me.罫線.Visible = True
  Else
    Me.罫線.Visible = False
  End If

End Sub

これだけです。どうでしょう。意外と簡単だと思いませんか。

Me というのは自分自身ということで、このコードが記述されているレポートになります。
Me.罫線.Visible というのは 自分自身のレポート上の[罫線]の可視(Visible)を「はい」 (True)に設定するという意味になります。

Me.CurrentRecord は自分自身の現在のレコード位置(行番号)ということです。これを使えば[コード]が連番である必用もないし、=1 のテキストボックスを配置する必用もありません。

【13160】Re:Access2016レポートの10行毎に直線を...
お礼  たけお E-MAIL  - 17/6/5(月) 15:05 -

引用なし
パスワード
   ご丁寧なご回答ありがとうございます。
ご指摘の点は全部クリアできています。連番であるし、欠番もありません。
詳細セクションバーで正しくプロパテイは設定できています。
イベントの所は「埋め込みマクロ」と表示され、ビルドボタンをクリックすると一番最初に教えていただいた、If文とelse文になっています。
罫線がだめなのかなと思って10行毎に背景色を変えることをためしてみました。
if([コード]Mod 10)= then
プロパテイの設定
コントロール名:詳細
プロパテイ:背景色
値:#FCE6D4
Else
プロパテイの設定
コントロール名:詳細
プロパテイ:背景色 
値:#FFFFFF
これも駄目でした。

教えていただいたマクロでも上手くいきませんでした。
最後の手段としてパソコンを変えてやってみます。
これの是非の確認は来週になります。来週にまた状況報告させていただきます。
本当に貴重な時間を割いていただきご丁寧な回答を頂戴したこと深くお礼申し上げます。ありがとうございました。

【13161】Re:Access2016レポートの10行毎に直線を...
質問  たけお E-MAIL  - 17/6/5(月) 19:17 -

引用なし
パスワード
   今週の日曜日に友人のAccess2016を使わせてもらうことになりました。
私の勝手な思い込みで何か気がついていない盲点があるのではないのかと思い至りました。
ここに私の操作順序を詳述しますので、大変恐縮ですがチェックをお願いします。
「会員名簿」のテーブル構造は、主キーを持つ「コード」数値型(整数型)、「氏名」短いテキスト(フイールドサイズ)20、以下略。コードは1からの連番で最終コードは158です。
念のためにクエリを作成して[コード]Mod10で実行すると、「1〜9,0」「1〜9,0」の連続で表示されていることを確認し、欠番がないことを確認できました。「会員名簿」テーブルを基にレポートウイザードでレポートを作成。詳細の「会員名簿」のフイールドテキストボックスの下に直線を引き、プロパティの「その他」タブの「名前」欄に「罫線」と記入し名前を変更。詳細セクションバーをクリックし、プロパテイを開き、「イベント」タブの「フォーマット時」欄のビルドボタンをクリックし「マクロビルダー」をクリック。
マクロ文はIf([コード]Mod 10)=0 Then プロパテイの設定、コントロール名:罫線、プロパテイ:可視、値:True
Else プロパテイの設定、コントロール名:罫線、プロパテイ:可視、値:Falseと記入。
「閉じる」ボタンをクリック、表示されるメッセージに「はい」。
「イベント」タブの「フォーマット時」欄に「埋め込みマクロ」と表示されていることを確認し、レポートビューを開く。以上が手順です。どこかに盲点がありますでしょうか?

【13162】Re:Access2016レポートの10行毎に直線を...
回答  hatena  - 17/6/6(火) 7:57 -

引用なし
パスワード
   >ご指摘の点は全部クリアできています。連番であるし、欠番もありません。
>詳細セクションバーで正しくプロパテイは設定できています。
>イベントの所は「埋め込みマクロ」と表示され、ビルドボタンをクリックすると一番最初に教えていただいた、If文とelse文になっています。

問題点は見当たりませんね。

これ以上は文章だけでのやりとりでは難しいかも。
他のPCで試してみて駄目なら、下記の私の主催する掲示板で再質問してください。
そこなら、ファイルをアップロードできますので、実物をみて原因を探ることができます。

hatena-access.progoo.com/bbs/

【13163】Re:Access2016レポートの10行毎に直線を...
お礼  たけお E-MAIL  - 17/6/6(火) 15:28 -

引用なし
パスワード
   ▼hatena さん:
ご検証いただきありがとうございました。
ではこの手順で友人のパソコンでやってみます。
結果は来週の月曜日ということにさせてください。
いつも早いレスポンスをいただきありがとうございます。
この問題が解決したら別件でもう1つ教えていただきたいことがありますのでまたその節はよろしくお願いいたします。

【13164】Re:Access2016レポートの10行毎に直線を...
お礼  たけお E-MAIL  - 17/6/12(月) 10:25 -

引用なし
パスワード
   ▼hatena さん:
10行おきの罫線引きは成功しました。
私のパソコンでは住所入力支援も機能しないなど、Access2016 インストール時に欠落があったようです。
いろいろと適切なご教示ありがとうございました。
また異なる質問を送っていますのでよろしくお願いします。

60 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078186
(SS)C-BOARD v3.8 is Free