• ベストアンサー

MSアクセスで出力の位置をかえたい

MSアクセス2000で封筒に氏名を出力しています。 条件によって氏名の上位置を変えたいのですが、 デザインビューで氏名を配置して イベントプロシージャで条件によってプロパティのTOPをかえています プログラムは簡単にしますと、下記のように記述しています。 Y=ME!SIMEI.TOP      '今回の場合は3800です IF ISNULL(TRIM(ME!KAISYA))=TRUE THEN ME!SIMEI.TOP=Y-200 ELSEIF ・・・・・・・・・・・・・・・・・・THEN ・・・・・・・・・・・・・・・・・ ELSE ENDIF いろいろな封筒があるので定数で初期化できないので次のレコードの時 さらに200上がってしまいます。 なにか良い方法はないでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.3

>Y=ME!SIMEI.TOP      '今回の場合は3800です >IF ISNULL(TRIM(ME!KAISYA))=TRUE THEN >ME!SIMEI.TOP=Y-200 >ELSEIF ・・・・・・・・・・・・・・・・・・THEN どのイベントプロシージャでこのコードを実行しているんでしょうか? 詳細セクションのPrintイベントだとすれば、確かに出力するたびに氏名が200づつ上がっていくでしょうね。 もしそうなら、 Y=ME!SIMEI.TOP は、レポートのOpenイベントで1回だけ実行するようにして、それ以外は詳細セクションのPrintイベントで実行すればいいのではないでしょうか。 ただし、Yはパブリック変数にする必要がありますが。

DPS-DPS
質問者

お礼

ありがとうございます。 ご指摘のように 詳細セクションのフォーマット時にしています。 パブリック宣言は使ったことがないのですが 確か・・・・? 試してみます。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

非常に小さい、あるいは中身のないラベルなど見えないコントロールを 置き、それに対する相対位置指定にしたら如何ですか? 同じコントロールに対して加算減算だと、オリジナルの位置が 分からなくなってしまい、困ることになりますね。

DPS-DPS
質問者

お礼

ありがとうございます。 ちょっと試してみます。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

例えば、氏名フィールドを複数用意しておき、条件付書式で、条件に 当てはまらない場合の文字色を白(つまり、見えない)にするのは 如何でしょう?

DPS-DPS
質問者

お礼

ありがとうございました。

DPS-DPS
質問者

補足

ありがとうございます。 フィールドかテキストボックスを複数用意しなければならないので 見た目に複雑なデザインになってしまいます。 今現在はマージンで調節しているのですが、上方向に移動するのは レイアウトが複雑になるのでやはり避けたいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アクセス2000でISNULLについて

    ISNULLの動作がわかりません、おしえてください。 テーブルにDAOで 宛名に敬称を付けようとしています。 IF ISNULL(TRIM(氏名))=False TEHN 氏名=TRIM(氏名) & " 様" ELSEIF ISNULL(TRIM(役職))=False THEN 役職=TRIM(役職) & " 様" ELSEIF ISNULL(TRIM(部署))=False THEN 部署=TRIM(部署) & " 御中" ELSEIF ISNULL(TRIM(会社))=False THEN 会社=TRIM(会社) & " 御中" else    ・・・・・・・・・・ endif ここで部署になにも入っていないのに 御中がついてしまうのです。 部署のフィールドには全角、半角のスペースも入っていません。 フィールドの空文字列のの許可は、"はい"にしてあります。

  • ACCESS2010 サブフォームの検索結果表示

    ACCESS初心者ですが以下のようなことをやりたいと思っています テキストボックスに検索したい文言を入力。 ボタンを押下すると 検索結果をサブフォームに一覧表示で抽出。 現在は、検索機能自体は動くのですが 検索結果が一件ずつしか抽出されません。 一覧表示させるためにアドバイスをお願い致します。 OS:Windows7 Access Version:ACCESS 2010 テキストボックス名:テキスト17 コマンドボタン名:コマンド51 サブフォーム名:310キーワード検索フォーム Private Sub コマンド51_Click() DoCmd.SelectObject acForm, "310キーワード検索フォーム" If Me.テキスト17 <> "" Then Me.Form.Filter = "メモリ容量 like '*" & Trim(Me!テキスト17) & "*' or 寸法 like '*" & Trim(Me!テキスト17) & "*' or 取扱上の注意点 like '*" & Trim(Me!テキスト17) & "*' or 備考 like '*" & Trim(Me!テキスト17) & "*' or メーカー like '*" & Trim(Me!テキスト17) & "*' or 付属品 like '*" & Trim(Me!テキスト17) & "*' or 貸出状況 like '*" & Trim(Me!テキスト17) & "*'" Me.Form.FilterOn = True ElseIf IsNull(テキスト17) Then Beep MsgBox "条件を入れてください。", vbOKOnly, "" End If End Sub

  • accessの検索フォームについて(複数条件)

    access初心者です。 本などを参考に検索フォームを作成しました。 1つの条件で検索することは出来たのですが、複数の条件を入力するとうまく検索出来ません。 全ての条件を満たすデータの抽出を行いたいと思います。 「あ」「い」「う」というテキストボックスを用意しています。 Private Sub コマンド14_Click() If Not IsNull(Me.txt_あ) Then ' Me.Filter = "あ LIKE '*" & Me!txt_あ & "*'" End If If Not IsNull(Me.txt_い) Then ' Me.Filter = "い LIKE '*" & Me!txt_い & "*'" End If If Not IsNull(Me.txt_う) Then ' Me.Filter = "う LIKE '*" & Me!txt_う & "*'" End If Me.FilterOn = True End Sub よろしくお願いします。

  • Access 日付範囲の条件指定

    いつも質問ばかりですいません。 指定の日付範囲外の値に対してメッセージを出して再入力させたいのですが上手くいきません。 《条件》 今日より先は NG 今日より2日以上前は NG 1日前:OK 今日:OK Dim txt01 As Date ' Dim txt02 As String ' Dim txt03 As Integer Dim ckDate As Date ckDate = Date - 2 '日付のチェック If IsNull(Me.txt01) Then 'Nullチェック MsgBox "txt01=Null" Me.txt01.SetFocus Exit Sub ElseIf IsDate(Me.txt01) <> True Then MsgBox "日付形式ではありません。" Me.txt01.SetFocus Exit Sub ElseIf Me.txt01.Value < Date Then '前チェック Debug.Print Me.txt01.Value MsgBox "今日より先" Me.txt01.SetFocus Exit Sub ElseIf Me.txt01.Value <= ckDate Then MsgBox "2日以上前!" Me.txt01.SetFocus Exit Sub End If 2番目の、Elseifからの日付範囲の条件設定が上手くいきません。 Me.txt01.valueの後ろを"<"を">"にしたり、"="を付けたりしましたが、希望通りになりません。 多分、もっとスマートな書き方が有るとは思うのですが、あとあとメンテナンスしやすい書き方をお教え頂けたら幸いです。

  • Access VBA

    Access2003を使用しています。 単純な質問かもしれませんがよろしくお願いします。 ログイン画面を作成しておりログイン自体はできたのですが、ログインしたときに ログイン画面を自動的に閉じたいのですが、うまくいきません。 現在の仕様では、ログイン画面(frm_ログイン)とメイン画面(frm_main)があり ログインに成功するとメイン画面が開くようになっています。 ーー以下VBAコードーー Private Sub rogin_Click() Dim a If IsNull(Me.[UserName]) Then MsgBox "IDが未入力です" Me.[UserName].SetFocus ElseIf IsNull(Me.[password]) Then MsgBox "パスワードが未入力です" Me.[password].SetFocus Else a = DLookup("パスワード", "tbl_ユーザー", "ユーザー名='" & Me.[UserName] & "'") If IsNull(a) Then MsgBox "該当する ユーザー名 は存在しません" Me.[UserName].SetFocus ElseIf StrComp(a, Me.[password], vbBinaryCompare) = 0 Then On Error GoTo Err_rogin_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "frm_main" DoCmd.OpenForm stDocName, , , stLinkCriteria Else MsgBox "パスワードが違います" Me.[password].SetFocus End If End If Exit_rogin_Click: Exit Sub Err_rogin_Click: MsgBox Err.Description Resume Exit_rogin_Click End Sub ーー以上ーー 長くなって申し訳ないのですが、どのようにすればログイン後にログイン画面(frm_ログイン)を閉じるようにできるのでしょうか? よろしくお願いします。

  • AccessでのVB記述について

    恐らく初歩的なことと思いますが…。 Accessのイベントプロシージャから、VBの記述で IF文の条件で、not equal はどのように表現するのでしょうか? C言語でいうと if( aa != 0 ){ ・・・ } という判断をしたいのです。 equal なら If aa = 0 Then ・・・ EndIf でいいのですが。

  • ACCESS VBA にて複数項目のあいまい検索をしようとしています。

    ACCESS VBA にて複数項目のあいまい検索をしようとしています。 txt部所、txt内容、txt備考はそれぞれ検索窓です。 実行すると、 「オブジェクト変数またはWithブロック変数が設定されていません」 というメッセージがでます。 また、動作としては部所の検索のみでき、 内容、備考検索は上記のエラーメッセージが出てできない状態です。 アドバイスよろしくお願いいたします。 以下がコードになります。 Private Sub cmd01_Click() Me.FilterOn = False If txt部所 <> "" Then Me.Filter = "[部所氏名]like '*" & txt部所 & "*'" ElseIf txt内容 <> "" Then Me.Filter = "[内容]like '*" & txt内容 & "*'" ElseIf txt備考 <> "" Then Me.Filter = "[備考]like '*" & txt備考 & "*'" ElseIf Nz(txt部所) & Nz(txt内容) & Nz(txt備考) = "" Then MsgBox "検索条件を入力してください" End If Me.FilterOn = True End Sub

  • UWSC 用のマクロコードを教えてください

    UWSC を使ったプログラムを作成しています。 黄色い部分の push ボタンを左クリックすると 赤いラインが上昇します。 それを決められた色のところまで自動で動くようにしたいのです。 今ある赤色ラインで止めたいのです。 黄色いpushは 10種類ほどあり 色が多数あります。 画像を習得してどの画像にも対応できるようにしたい。 赤いラインを止める場所を 色を指定して止める RGB値を設定して 毎回ここでクリックが外れるような設定 現在設定している状況は 1組のみの設定なのでこれを多数に対応できるように組み替えたいのです。 ************************************************ RGBcolor(x2+17,y4+40) ifb R >255 and G < 255 and B < 51 then u = true elseif R > 100 and G < 100 and B > 177 then u = true endif RGBcolor(x2-17,y4+40) ifb R >255 and G < 255 and B < 51 then u = true elseif R > 100 and G < 100 and B > 177 then u = true endif ifb peekcolor(x2,y4-100) = 0 then ifb chkimg("push1.bmp",-1,0,0,yoko-10,tate-10,1) then elseif chkimg("push01",1,0,0,yoko-10,tate-10,1,IMG_MSK_BGR2) then elseif chkimg("push02.bmp",1,0,0,yoko-10,tate-10,1,IMG_MSK_BGR2) then endif x4 = G_IMG_X + 6 //押すの上端 y4 = G_IMG_Y - 1 //押すの上端 RGBcolor(x4,y4) ifb R>255 and G>200 and G<255 and B>30 and B<70 then turiage() endif endif *************************************************** この部分を変更したいのですが よくわからなくて。 どうかお力をお貸しください。

  • エクセルマクロについてです

    以下のようなマクロで、条件A1~A4のいずれかを満たした場合は、その時点でFor-Nextを抜け(例えばi=1のときにどれかの条件を満たせばi=2,3,4は検討しない)、 さらにNの数字が増えたときに、If以下の検討をするとき、条件A1~A4の中で既に満たされた条件が含まれている行は無視する、 というようにしたいのですが、どのようにすればよいでしょうか。 N=0 Do Until N = 10 For i = 1 To 4    If 条件A1 Then B1        ElseIf 条件A2 Then B2        ElseIf 条件A3 Then B3      ElseIf 条件A4 Then B4      EndIf Next i N = N + 1 Loop

  • Accessログイン権限

    Access2003を使用しています。 ログイン画面を作成しておりログイン自体はできたのですが、 管理者とそうでないユーザーに分けて、ログイン時に管理者であればfrm_mainを、 そうでなければfrm_main2を開くようにしたいのですがうまくいきません。 現在の仕様では、ログイン画面(frm_ログイン)とメイン画面(frm_main、frm_main2)があり テーブル名:tbl_ユーザー フィールド名:ユーザー名、パスワード、アカウント アカウントで"1"が管理者、"2"が一般ユーザー このようになっています。 ーー以下VBAコードーー Private Sub rogin_Click() Dim a If IsNull(Me.[UserName]) Then MsgBox "ユーザー名が未入力です" Me.[UserName].SetFocus ElseIf IsNull(Me.[password]) Then MsgBox "パスワードが未入力です" Me.[password].SetFocus Else a = DLookup("パスワード", "tbl_ユーザー", "ユーザー名='" & Me.[UserName] & "'") If IsNull(a) Then MsgBox "該当する ユーザー名 は存在しません" Me.[UserName].SetFocus ElseIf StrComp(a, Me.[password], vbBinaryCompare) = 0 Then On Error GoTo Err_rogin_Click Dim stDocName As String Dim stLinkCriteria As String If アカウント = "1" Then stDocName = "frm_main" Else stDocName = "frm_main2" End If DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, Me.Name Else MsgBox "パスワードが違います" Me.[password].SetFocus End If End If Exit_rogin_Click: Exit Sub Err_rogin_Click: MsgBox Err.Description Resume Exit_rogin_Click End Sub ーー以上ーー 現在はこのようになっているのですが、これだとなぜかアカウントが"1"でも"2"でも frm_mainが開いてしまいます。 長くなって申し訳ないのですが、アドバイスをお願いします。