• ベストアンサー

VBのフォーマットで+と-の値をそろえたい

Visual BASICで値をフォーマット命令を使い、+あり、-ありの値を縦に表示させ、各桁をそろえたいのですが、+の場合は、+を表示しないので、+の値だけ、1桁左詰めで表示されてしまいます。簡単に解消できる方法はありますか? 教えてください。 現在のプログラム  print Format(変数,"###") 今の例 123 -123 希望する表示  123 -123      ブラウザで見ると3と3がそろっていませんが、合わせて書いたつもりです

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

  • ベストアンサー
回答No.2

Format(変数, " ###;-###") の書式部分は、 空白・シャープx3・セミコロン・マイナス・シャープx3 で、間に入るのは、セミコロン。 書式をセミコロンで区切って最大4つまで指定できます。 正の数、ゼロ、負の数の別などで書式を選択する機能があるのですよ。 ヘルプでFormat関数の関連項目で「数値を表すその他の書式 (Format 関数)」というトピックを参考にしてください。

greenhope
質問者

お礼

正と負の区切りは ; だったのですね。 おかげで、縦列がまっすぐになり、たいへんすっきりしました。 ありがとうございました。

その他の回答 (1)

回答No.1

正負別複数書式で対応できますよ。 Format(変数, " ###;-###")

greenhope
質問者

補足

回答、ありがとうございます。 Format(変数,"###,-###")とのことですが、 - が中間に入るのはおかしくないですか? 試してみたらうまくいかないようですが。 またFormat(変数,"-###") とすると、 -123の場合 --123と表示してしまいます。 正の場合は空白を頭に、負の場合は、-を頭につけたいのです。もしくは 正の場合は+を頭に、負の場合は、-を頭につけたいのです。 なにかのBASICで S(符号)があったようですが、VBではないようです。 プログラムで判別するのでなく、formatコマンドだけで簡単に行う方法はありますか?

関連するQ&A

  • String::Formatの右詰めの文字幅調整

    現在、Visual C++のフォームアプリケーションを使用して、textBoxに座標ごとの3つの値を表示するプログラムを書いています。 例:(x,y)=(r,g,b) textBox1->AppendText(String::Format("({0,2},{1,2})=( {2,3},{3,3},{4,3} )\r\n",x,y,r,g,b)); ↑のようにxとyを右詰2ケタ、rとgとbを右詰3ケタでtextBoxに表示するようにしているのですが、 実際プログラムを実行すると以下のように幅がずれてしまいます。 ( 0, 0)=( 0,144, 49 ) ( 1, 0)=( 207,149,122 ) ( 2, 0)=( 89,229,210 ) ( 0, 1)=( 191, 44,219 ) ( 1, 1)=( 181,131, 77 ) ( 2, 1)=( 3, 23, 93 ) ( 0, 2)=( 37, 42,253 ) ( 1, 2)=( 114, 30, 1 ) ( 2, 2)=( 2, 96,136 ) この幅をきれいに合わせたいので、ぜひ回答をお願いします。

  • VB初心者。小数点以下の表示でつまづいています(2

    『VB初心者。小数点以下の表示でつまづいています(涙』 (・・・過去質問 解決済み) では大変お世話になりました。 さて、上記質問は解決したかに思い、お礼もしてして終了したのですが、 検証しておりましたら問題が見つかりました。 以下、質問内容を修正して、再質問します。よろしくお願いしますm(__)m VB .NET環境 Microsoft Visual Studio / ActiveReportで帳票を作成しています。 DBからの値が、小数点以下ありの場合(例:1.07)の時はそのまま表示し、小数点以下が.00の場合(例:1.00)の時、整数部分のみを表示させたいのです。 質問の『値』ですが、今回の値は小数点第2位までです。 #.00 の時 → # と表示。 #.01~99 の時 → そのまま表示。 としたいのです。 ちなみに、小数点から左(整数部分)の桁は9桁まで入る可能性があります。 前回解決した際は、小数点より右1桁、左1桁で質問してしまったので、  H_数量.Text = Format(Val(H_数量.Text), "0.0")  If Right(H_数量.Text, 2) = ".0" Then  H_数量.Text = Format(Val(H_数量.Text), "0")  End If と回答いただき、このパターンではうまく動きました。 小数点以下2桁のパターンも、コードを変更し、  H_数量.Text = Format(Val(H_数量.Text), "0.00")  If Right(H_数量.Text, 2) = ".00" Then  H_数量.Text = Format(Val(H_数量.Text), "0")  End If でOKでした。 しかし、小数点より左9桁、右2桁を試してみると、ダメなのです。 1行目、  H_数量.Text = Format(Val(H_数量.Text), "0.00") を、  H_数量.Text = Format(Val(H_数量.Text), "#,##0.00") と変更しても、 小数点左が9桁には対応できません。 "###,###,##0" とか、"000,000,000" とか色々試しましたが、 500.00 の時、 000,000,500 と表示されました。 どのようにコードを書いたら良いでしょうか? アドバイスお願いしますm(__)m

  • 小数点の表示について

    Long型の変数の値を、 テキストボックスに表示しているのですが、 「10」の値を表示する時に 「10.000」と小数点以下3桁まで表示したいと考えております。 複数の値を並べて表示するので 桁数を合わせて見やすくしたいのですが なにか簡単な方法で実現できないでしょうか? 宜しくお願いします。 現在はFormat関数を利用しています Format(変数名, "##.###") 当然ですが「10.000」とは表示されません。

  • Format関数でこんなにカンタンなことが・・

    できない、と言うか、思い出せずに困ってます。 Debug.print lNum1,lNum2 という感じで、Long型の整数を、5桁×2で表示したいのですが、どうやればいいんでしたっけ? format(lNum,"#####") では、うまくいきませんでした。 ヘルプや過去質問検索でも、こんなにカンタンなことは見つかりません。 悲しい・・・・

  • バーコード縦表示で値が全て表示されません

    マイクロソフトバーコードコントロールを使ってエクセルにバーコードを作成しました。 方向を縦にしてバーコードを設定するといくら縦の長さを伸ばしても全ての値が表示されません。 90度回転させるとエンドは表示されますがスタートと前の二桁が表示されません。 プロパティはCODE39、スタートエンド表示、値は30桁 どうしたら全てのスタートエンド含め全ての値が表示されるようになるのでしょうか? ご教授お願いいたします。

  • Visual StudioC#で、変数を見る機能

    Visual StudioC#には、作ったプログラムを実行しているときに変数がどんな値になっているのかを見る機能って無いのでしょうか? Microsoft Visual Studio 2010 Expressを使っています。 例えば、 ボタン1を押す→A=1代入 ボタン2を押す→B=2代入 ボタン3を押す→C=3代入 上のだと、今までだとテキストボックス3つに各変数の値を表示していました。でもいちいち全てをそんなデバッグするの面倒です・・・実行中に直接、Visual Studio上で変数の値を見ることってできないのでしょうか? よろしくお願いします。

  • unsigned long long 型のフォーマット指定子

    unsigned long long 型の変数の値を表示したいのですが、 フォーマット指定子は%ldですか? よろしくおねがいします。

  • 使わなくなった変数に違う値を入れるのはマズイ?

    CやJAVAのような、厳密な型の存在しない言語(Perl、PHP、Javascriptなど)についての質問です。 プログラミングをしていて、途中である変数が要らなくなることがあります。これを、せっかく宣言したので別の値、それも型が違ったりプリミティブ型の値を入れてたのにオブジェクト型を入れるとか、そういう使い方をすることがあります。 例(Javascriptの場合) $hen = new Array(10); $hen[0] = 0; $hen[1] = 1; . . . for (i=0; i<10; i++) { print $hen[$i]; } //ここで配列henは要らなくなった。変わりに文字列が欲しい。 $hen = "String"; //せっかく変数henがあるので、これを入れ物として使う。 最近、C++の勉強をして、このようなケースで変数名との結びつきが無くなった変数の中身は、存在はするがアクセスする手段を失った「ゴミ」となるということを知りました。多くの言語も、同じような構造だとも知りましたが、同時に「ガベージコレクション」を装備している言語は、プログラムがその値が以降使われないと判断された場合は自動でその変数に割り当てているメモリを開放して処理速度向上を図る・・・とありました。では、例として挙げたケースでは、ガベージコレクションを装備していれば、ゴミは発生するがプログラムが自動でメモリを開放してくれるのでそこまで気にしなくても良い、という解釈で良いのでしょうか?私はPHPが得意なのですが、PHPは標準ではガベージコレクションを装備していないようなので、気をつけてプログラミングしようと思っているのですが。 余談ですが、「変数名と内容が一致しなくなるケースがある($arr = new Array();を後で$arr = "String";とするなど)からやめたほうが良い」という突っ込みはナシでお願いします。その点は承知していますので。

  • VB初心者です。よろしくお願いします。

    すみません。 プログラム中で数式を書きたいのですが、       9/1    9/2 データ1 10000 20000 データ2 15000 300 データ3 18000 40000 累計 43000 60300 たとえば↑みたいな表の場合、 累計は数式をプログラムに書いて出力したい場合、 (例の表が見ずらくてすみません) 行と列は固定ではなく可変で intRow,intColという変数にセットされているとした時、 (値はプログラム中で算出してセットされている事を前提) 累計はどのように書いたらよろしいでしょうか・・・ 書きたいセルの場所が固定の場合は分かるのですが、 行と列が可変で変数にもたせた場合の書き方が よく分かりません。 よろしくお願い致します。

  • プログラミング float型

    float型の変数x、yを定義し、scanfを使ってキーボードから値を入力して代入する。この2個の変数を引数として平均値を計算し、その値をfloat値として返す関数heikinを作成し、mainから呼び出し、結果を表示する表示するプログラムを作成するという命令なのですが、このプログラムのソースを教えていただけないでしょうか?

専門家に質問してみよう