色々試したのですがhirotonさまのコード、短くてできればそれにしたかったのですが、真ん中にはなってくれず…
hatenaさまの以下の上下中央(レス番号12)コードを元に上下中央にしたいテキストボックス全てに書く方式になりそうです。
【参考コード】
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
With Me.テキストボックス1
.Visible = False
Me.FontSize = .FontSize
Me.FontName = .FontName
Me.CurrentX = .Left
Me.CurrentY = (Me.Height / 2) - (Me.TextHeight(.Value) / 2)
Me.Print .Value
End With
End Sub
【現状のコード】
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
With Me.請受金額月額
.Visible = False
.Format = "Currency"
Me.FontSize = .FontSize
Me.FontName = .FontName
Me.CurrentX = .Left
Me.CurrentY = (Me.Height / 2) - (Me.TextHeight(.Value) / 2)
Me.Print .Value
End With
If IsNull(Me.txt_1月) = False Then
If IsNull(Me.txt_1月) = True Then Me.txt_1月 = Me.txt_1月
With Me.txt_1月
.Visible = False
Me.FontSize = .FontSize
Me.FontName = .FontName
Me.CurrentX = .Left + 26 '//26は位置調整のための数字
Me.CurrentY = (Me.Height / 2) - (Me.TextHeight(.Value) / 2)
Me.Print .Value
End With
End If
End Sub
ただ、以下のことが出来ずに半日悩んでいました。
通報 ...
1.数字を桁区切り+¥がついた通貨型で表示したい
2.指定した場所から左揃えではなく右揃えで表示したい
3.同じような書式設定にしたいものが複数あるが、同じコードを繰り返す以外のやり方はないのか?
1に関しては
上記のコードだと下記の画像の様に桁区切りも¥もない数字になってしまい、以下を試しました。
.text → SetFocusがレポートの印刷プレビューではできない
.Value → 値を代入できないとエラーが出る
.Format = "Currency" → 何も変化なし
Me.請受金額月額 = Format(Me.請受金額月額, "\#,##0") → エラーで進まない
という感じで、結局希望する「協力会社1回金額」のような表示にはできませんでした。
2に関しては
上記コードだと左揃えだったので
としたらテキストボックスよりもだいぶ右の方に表示されました。
尚、よくわからずに
にしてみましたが、当然エラーでした。
3に関しては
まず、レコードによっては値がNullの場合があるため上記のコードにしています。
テキストを上下中央に配置したいテキストボックスは
テキストが1行のものが15(画像の請求回数・請受金額月額・協力会社1回金額・txt_1月~12月まで)、複数行の可能性があるものが2(協力会社名・作業内容)ありますが、複数行表示の可能性があるものは最悪このままでも、と思っていますが上記のようなコードをあと13書くのはコードがかなり冗長になるので避けたいと思いつつ、いい方法が見つけられませんでした。
(余談ですが、当初テキストボックスの名前が「1月」だったのですが、『Me.1月』にするとエラーになってしまい上記の様に『txt_1月』に変更しました。エラーの理由(規則?)を探しましたが見つけられませんでした)
1~3に関し、どうにかクリアしたいのですがもう少し教えていただけると助かります。(当初の質問とずれて来てすみません、問題があるようでしたら新たなスレッドを立てます)
よろしくお願いします。
本題から遠いので個別に
ニンゲンが記述するものはすべて「文字」なので、それが計算してほしいモノ(計算式)なのか、名前の指定なのかはそれだけでははっきりとしません
例えば「1 + 1」という名前のテキストボックスを作ったらそれを指定するときはどうしたらいいでしょうか?
ACCESSは開発を楽にするためにある程度自動認識でこれらの判別をしています
Me.1月
という記述はその自動認識によって構文エラーとなるような記述ということですねそれがオブジェクトの名前による指定であると明記する場合には
[]
で囲みます。Me.[1月]
とすれば正常に動作します命名規則(の一部)というやつですが、どんな文字でもいいからと言って本当にどんな名前にしてもいいというわけではないということですね
可能な限り数字や記号から始まる名前を付けるのはやめましょう
ありがとうございます。
命名規則に抵触しているのだろうと探していたのですが「こういう風につけましょう」しか見つけられず、「ダメな理由」を見つけることが出来ずにいたのでとても助かりました。
今あるものを確認して修正します。