アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォームにtxt1、txt2、txt3というテキストボックスを作成し、txt1に「1」、txt2に「1000」と入力したところ、パーセント表示したいtxt3に「#########」と表示されてしまいました。
本来100000.00%と表示されるところが、テキストボックスの幅が狭すぎてこのようになっているものと思われます。

その為、「#########」と表示されてしまうのを抑止したいと思うのですが、良い方法(表示可能桁数のみ表示するなど)をご存知の方がいらっしゃいましたらご教示のほど、よろしくお願いします。

なお、下記の制限事項があります。
1. テキストボックスの横幅を広げる事はできません。
2. フォーム内に本件のような計算項目が多数あるため、1つのテキストボックスあたりの修正量が少ないと助かります。

【プロパティ】
txt1・・・デフォルト
txt2・・・デフォルト
txt3・・・書式を「パーセント」、幅を「2cm」に変更

【ソース】
Private Sub txt2_AfterUpdate()
Me.txt3 = Me.txt2 / Me.txt1
End Sub

以上、よろしくお願いします。

A 回答 (4件)

#1 再回答です



IDを拝見し、プログラミング知識がお有りなご様子ですので、概略で説明します。

プログラム側の負荷(=手間)を避けるなら、利用者へツケをまわす・・・です。

通常は計算&表示を、各テキストボックスのイベントで行い(=現行のまま)、
###表示が出た場合用の「再表示ボタン」をフォーム上へ設置。

ボタンのクリック時イベントにて、計算結果が表示されるテキストボックス内の値を判断し、表示サイズを変更する。
勿論、このボタンのイベント内では、計算結果を表示するボックス「全て」を対象とした判断とサイズ変更を行います。

当然、計算結果がまだ入っていない物については、判断はするが処理は行わないものとします。

こうすることで、PG側では一箇所に(全てのボックスへの)処理記述を行える上、ユーザーは「例外時のみ」ボタンを利用するだけで済みます。


御質問の説明には、フォーム上のデータがクリアされるタイミングが明記されておりませんので概要説明は曖昧になりますが、いち画面上でのデータ処理が完了するタイミング(≒イベント)にて、フォーム上のボックスのプロパティー変更をデフォルトへ戻せば、次処理時は通常サイズでの表示で利用できます。

最後に、
丁寧に返信を頂きましたが、当初の御質問では「存在しない隠れた条件」を、後から持ち出すというのは、質問をする(他人へ依頼をする)側として、いかがなものでしょうか?

PG経験がお有りなら御理解できると思いますが、「条件ありきでロジックを考える」のが普通の順番です。
この再回答すらも、隠れた条件で否定(とまでは行かないけど)される=善意の回答側へ無駄な手間をかけさせる(≒一種のツリ行為と同じ)・・・様な気がしていますが、回答を寄せる側の一ユーザーとして、他の回答者さん達が同様の経験をしなくても済むような配慮をして頂きたいと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

いただいたご意見は検討させていただこうと思います。
今の所、#が表示されたからといって
「再表示ボタン」を押してもらえるかわからない為、
「登録」ボタン押下時のチェックルーチンに組み込む(エラー表示)方向で
検討したいと思います。

なお、登録時に画面は初期化(クリア)されます。

後、条件が漏れており、申し訳ございませんでした。
以後気をつけます。

以上、よろしくお願いします。

お礼日時:2010/01/12 15:38

#2です。


仮にtxt2と同じTBが50個とかあると修正が面倒ですね。
方法として2つ挙げさせていただきます。

まずtxt1、txt2、txt3がtxt1-1からtxt1-50、txt2-1からtxt2-50、txt3-1からtxt3-50まであると仮定して。
□方法1
「再表示ボタン」を配置しtxt3-1~txt3-50に対し#2で挙げた文字数判断によるフォントサイズ変更をする。
この方法であればコマンドボタン1つの追加とコード記入の手間だけです。

□方法2
txt2-1~txt2-50の中でタブストップ最終に方法1で挙げたコードを実行させる。
この方法であれば1つの既存テキストボックスの修正だけで良い訳ですがタブストップを無視して入力を行った場合は再表示が実行されないデメリットがあります。

用途に合わせご検討ください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

方法2は入力項目はすべて必須というわけではない為、
方法1に近いやり方で検討してみたいと思います。

具体的には今の所、#が表示されたからといって
「再表示ボタン」を押してもらえるかわからない為、
既存の「登録」ボタン押下時のチェックルーチンに組み込む(エラー表示)方向で
検討したいと思います。

以上、よろしくお願いします。

お礼日時:2010/01/12 15:40

こんにちは。


Me.txt3の文字数で判断を掛けフォントサイズを変更する方法はいかがでしょうか?
現在のフォントサイズがいくつなのか分かりませんが
例えば
Private Sub txt2_AfterUpdate()
Me.txt3 = Me.txt2 / Me.txt1
If Len(Me.txt3) >= 4 Then
Me.txt3.FontSize = 6
End If
End Sub
と言った感じです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

いただいたご意見は検討させていただこうと思いますが、
この方法ですと、すべての計算項目で同様の修正が必要になり、
制限事項2に引っかかりそうな感じがします。

以上、よろしくお願いします。

お礼日時:2010/01/11 19:20

テキストボックスのプロパティーにある「フォントサイズ」の設定を小さくする。

この回答への補足

ご回答ありがとうございます。

いただいたご意見は検討させていただこうと思いますが、
今回の事例は例外的な入力があった場合に発生する事象のため、
例外にあわせ本来の表示を変えるのは出来れば避けたいと考えています。

以上、よろしくお願いします。

補足日時:2010/01/11 19:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!