Microsoft Access 掲示板

高さが可変のテキストボックスの上下中央に文字を配置したい / 16

27 コメント
views
4 フォロー
16
亞紀姐 2024/01/05 (金) 21:51:05 修正 6b68c@61731

色々試したのですが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

ただ、以下のことが出来ずに半日悩んでいました。

通報 ...
  • 17
    亞紀姐 2024/01/05 (金) 21:53:41 6b68c@61731 >> 16

    1.数字を桁区切り+¥がついた通貨型で表示したい
    2.指定した場所から左揃えではなく右揃えで表示したい
    3.同じような書式設定にしたいものが複数あるが、同じコードを繰り返す以外のやり方はないのか?

    1に関しては
    上記のコードだと下記の画像の様に桁区切りも¥もない数字になってしまい、以下を試しました。
    .text → SetFocusがレポートの印刷プレビューではできない
    .Value → 値を代入できないとエラーが出る
    .Format = "Currency" → 何も変化なし
    Me.請受金額月額 = Format(Me.請受金額月額, "\#,##0") → エラーで進まない
    という感じで、結局希望する「協力会社1回金額」のような表示にはできませんでした。

    2に関しては
    上記コードだと左揃えだったので

            Me.CurrentX = .Left + (Me.Width / 2) - (Me.TextWidth(.Value) / 2)
    

    としたらテキストボックスよりもだいぶ右の方に表示されました。

    尚、よくわからずに

            Me.CurrentX = .Right
    

    にしてみましたが、当然エラーでした。

    3に関しては
    まず、レコードによっては値がNullの場合があるため上記のコードにしています。

    画像1

    テキストを上下中央に配置したいテキストボックスは
    テキストが1行のものが15(画像の請求回数・請受金額月額・協力会社1回金額・txt_1月~12月まで)、複数行の可能性があるものが2(協力会社名・作業内容)ありますが、複数行表示の可能性があるものは最悪このままでも、と思っていますが上記のようなコードをあと13書くのはコードがかなり冗長になるので避けたいと思いつつ、いい方法が見つけられませんでした。
    (余談ですが、当初テキストボックスの名前が「1月」だったのですが、『Me.1月』にするとエラーになってしまい上記の様に『txt_1月』に変更しました。エラーの理由(規則?)を探しましたが見つけられませんでした)

    1~3に関し、どうにかクリアしたいのですがもう少し教えていただけると助かります。(当初の質問とずれて来てすみません、問題があるようでしたら新たなスレッドを立てます)
    よろしくお願いします。

    19

    本題から遠いので個別に

    『Me.1月』にするとエラーになってしまい

    ニンゲンが記述するものはすべて「文字」なので、それが計算してほしいモノ(計算式)なのか、名前の指定なのかはそれだけでははっきりとしません
    例えば「1 + 1」という名前のテキストボックスを作ったらそれを指定するときはどうしたらいいでしょうか?

    ACCESSは開発を楽にするためにある程度自動認識でこれらの判別をしています
    Me.1月という記述はその自動認識によって構文エラーとなるような記述ということですね

    それがオブジェクトの名前による指定であると明記する場合には[]で囲みます。Me.[1月]とすれば正常に動作します


    命名規則(の一部)というやつですが、どんな文字でもいいからと言って本当にどんな名前にしてもいいというわけではないということですね

    可能な限り数字や記号から始まる名前を付けるのはやめましょう

    22
    亞紀姐 2024/01/09 (火) 10:23:05 6b68c@61731 >> 17

    ありがとうございます。

    命名規則に抵触しているのだろうと探していたのですが「こういう風につけましょう」しか見つけられず、「ダメな理由」を見つけることが出来ずにいたのでとても助かりました。

    今あるものを確認して修正します。