印刷を行う場合に数値データの右揃えをしたいと思っています。
現在は、入力された数値の文字数をLen関数で取得してprinter.currentx と printer.currenty の数値を微妙に変えながら実行しています。
もっと簡単に右揃えする方法はあるのでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

はじめまして。


#1の方の回答されたとおりです。補足させていただきます。
こんなのでいかがでしょうか?

フォントは、必ず固定幅のものを指定して下さい。
(MS ゴシックなど)

------
Dim dblNum As Double '数値
Dim strPrn As String '印字用文字列
Dim intLen As Integer '印字する数の最大文字数

intLen = 14 '印字する数の最大文字数を入れる
dblNum = "12345678.6666" '数値の例

'文字列にしてやる → この「"#####0.000"」は任意です
'数値の範囲によっては動的に変えることが必要かもしれません
strPrn = Format(dblNum, "#####0.000")

If Len(strPrn) > intLen Then
'最大文字数を超えると不正な数値になります
'その場合の処理をここに書きます
MsgBox "長すぎ!"
strPrn = "over!"
Else
'前に空白を付けて、右から文字数ぶんをカットする
'(前に付ける空白の個数を計算する方法もあり)
strPrn = Right(String(intLen, " ") & strPrn, intLen)
End If

'このあと、位置を指定して strPrnをPrintしてください

-----
(字下げがきかなくて見にくいですが)
では!
    • good
    • 0
この回答へのお礼

遅くなりましたが、ありがとうございました。
現在教えていただいた方法でコードと格闘中です。

お礼日時:2001/08/02 18:25

詳しくはわからないのですが


出力する最大桁数を決めておいて
スペースを頭に付加してあげる方法は、どうでしょう?
ただしフォントとフォントサイズには、気をつけないとダメだと思いますが。
    • good
    • 0
この回答へのお礼

ありがとうございました。
スペースを付加する方法で現在格闘中です。

お礼日時:2001/08/02 18:26

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q小学生算数 「上から2けた」の考え方

小学生算数 「上から2けた」の考え方

お世話になります。
数学のカテゴリで恐縮ですが、小学生の子供に算数を教えていてわからなかったので教えてください。
答えを上から2けたのおよその数で答えなさい、というときに、計算結果が0.536になった場合は、小数第1位を上から1けた目と考えて、小数第3位の6を四捨五入して0.54とすればよいのでしょうか?
1のくらいの「0」を1けた目と数えていいのかどうか、わからなくて質問させていただきました。よろしくお願いいたします。

Aベストアンサー

小数の場合、「上から?桁」はゼロを無視して数えます。

例)0.00829の上から2桁の概数 → 0.0083

Qexcelシートにマクロ実行ボタンを何個か置いて、実行ボタンを押したら指定フォルダ内の...

excelシートにマクロ実行ボタンを何個か置いて、実行ボタンを押したら指定フォルダ内excelシート,accessシート等を開くプログラム教えてぇ~ ください^^

Aベストアンサー

シート上にコマンドボタンを貼り付け、Wクリックすると
VBEの画面に飛んで
Private Sub CommandButton1_Click()

End Sub
が出る。
その間に
指定フォルダの師弟ブックの
ブックを開き、
指定名のシートをSelectする。
>実行ボタンを何個か置いて、
はどういう意味が有るのか説明不足。
ーー
>accessシート
アクセスでシートとは?
結局指定Mdbファイルを開き、指定テーブルなり、指定クエリを開けばよいのでは。
Googleででも調べればコード例が出てくることではないですか。
例 「アクセス テーブル 開く VBA」
「エクセルから アクセス テーブル 開く VBA」  など
他人に頼りすぎ。またはもう少し判らない(行き詰まった)点に絞って質問したほうが、質問者が進歩すると思う。

Q小学生の算数問題です

子どもが塾で出された課題です。
「0から9までの数字を1回づつ使用して、4けた+2けた=4けたの式が成り立つものをすべたあげなさい。」
4通りは発見できたのですが、はたして全部で何通りあるかもわかりません。
どなたか助けて下さい。

Aベストアンサー

ABCD+EF=GHIJ とすれば、
B=9
H=0
A+1=G

また、各桁の偶奇を調べると、
偶+偶=偶、偶+奇=奇、奇+奇=偶
なので、繰り上がりを考えないと、奇数の数は偶数個でなければなりません。
0~9のうち奇数は5個なので、繰り上がりしている桁は奇数個あることになります。
2桁目、3桁目は繰り上がりしているので、1桁目も繰り上がりしています。

以上のことを踏まえて、
CとE、DとFは交換しても和は同じなので、C>E、D>Fとして、
2桁目の組み合わせを調べると、
A92D+8F=G01J (3,4,5,6,7)
A93D+7F=G01J (2,4,5,6,8)
A93D+8F=G02J (1,4,5,6,7)
A94D+6F=G01J (2,3,5,7,8)
A94D+7F=G02J (1,3,5,6,8)
A94D+8F=G03J (1,2,5,6,7)
A95D+6F=G02J (1,3,4,7,8)
A95D+7F=G03J (1,2,4,6,8)
A95D+8F=G04J (1,2,3,6,7)
A96D+7F=G04J (1,2,3,5,8)
A96D+8F=G05J (1,2,3,4,7)
A97D+8F=G06J (1,2,3,4,5)
の12通り。(括弧内は残りの数字)

さらにそれぞれの組み合わせを調べると、

4926+87=5013
5934+78=6012
5934+87=6021
2947+68=3015
5943+78=6021
1956+78=2034
1956+87=2043
1965+78=2043
2964+87=3051
の9通り。

1桁目、2桁目を交換したものも加えると、合計36通りとなります。

ABCD+EF=GHIJ とすれば、
B=9
H=0
A+1=G

また、各桁の偶奇を調べると、
偶+偶=偶、偶+奇=奇、奇+奇=偶
なので、繰り上がりを考えないと、奇数の数は偶数個でなければなりません。
0~9のうち奇数は5個なので、繰り上がりしている桁は奇数個あることになります。
2桁目、3桁目は繰り上がりしているので、1桁目も繰り上がりしています。

以上のことを踏まえて、
CとE、DとFは交換しても和は同じなので、C>E、D>Fとして、
2桁目の組み合わせを調べると、
A92D+8F=G01J (3,4,5,6,7)
A93D+7F=G01J...続きを読む

QVisual Studio .NET 2003:右揃え印刷の設定

お世話になります。現在Visual Studio .NET 2003にてアプリケーション作成に挑戦しています。

フォーム上に表示されている各項目を印刷したいのですが、左揃えの文字は普通に座標指定するだけで問題ないのですが、桁数の違う数字を右揃えで統一して印刷したい場合の方法を教えていただきたく、よろしくお願いいたします。

Aベストアンサー

String.Formatを使うことで書式化した文字列を作ることができます。
例えば、10桁の幅で、数値を右揃えしたい場合

String.Format("{0,10:D}", 112)

の様にすることで、10桁の幅が確保されます
解説:String.Format("{引数の番号,確保桁サイズ:書式指定文字}", 数値)
書式指定文字その他詳細は、String.Formatからのヘルプを見て下さい。

Q小5算数パズルの宿題が解りません。

1から9までの数字を1回ずつ使用し、5けたひく4けたの筆算式を2つ作り、
それぞれの答えが22222と33333になる筆算式を作ります。

     □□□□□
   -  □□□□
     2 2 2 2 2

     □□□□□
   -  □□□□
     3 3 3 3 3 

どうしても解けません。助けてください。

 

Aベストアンサー

回答例です。

31874
9652
22222

41286
7953
33333

QVisual Studio .NET 2003:右揃え印刷の設定(その2)

フォーム上に表示されている各項目を印刷したいのですが、左揃えの文字は普通に座標指定するだけで問題ないのですが、桁数の違う数字を右揃えで統一して印刷したい場合の方法を教えていただきたく、よろしくお願いいたします。

以前、上記の内容の質問をさせていただきましたところ、String.Formatを使えばよいとのご回答をいただきました。いろいろと調べてみたのですが、実際にどのようにコードに記述すればよいのかがわからずにおります。現在、フォーム上の項目のうち、数値が入力されている項目を印刷するためのコードを次のように記述しています。

'数値の印刷位置
e.Graphics.DrawString(Suuchi1.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 100)
e.Graphics.DrawString(Suuchi2.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 150)
e.Graphics.DrawString(Suuchi3.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 200)
e.Graphics.DrawString(Suuchi4.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 250)
e.Graphics.DrawString(Suuchi5.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 300)
'ここまで

これらの数値を右揃えで印刷したい場合、どのようにコードを記述したらよいのか、アドバイスを願います。上記のコードよりももっとスマートなコード記述で、私が望んでいる様な印刷結果を実現できるようでしたら、ご教授のほどよろしくお願いいたします。

フォーム上に表示されている各項目を印刷したいのですが、左揃えの文字は普通に座標指定するだけで問題ないのですが、桁数の違う数字を右揃えで統一して印刷したい場合の方法を教えていただきたく、よろしくお願いいたします。

以前、上記の内容の質問をさせていただきましたところ、String.Formatを使えばよいとのご回答をいただきました。いろいろと調べてみたのですが、実際にどのようにコードに記述すればよいのかがわからずにおります。現在、フォーム上の項目のうち、数値が入力されている項目を印刷する...続きを読む

Aベストアンサー

(回答No.1の補足への回答です)

e.Graphics.DrawString(Suuchi1.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 100)

となっているところを

e.Graphics.DrawString(Suuchi1.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380 - e.Graphics.MeasureString(Suuchi1.Text, New Font("MS ゴシック", 12)).Width, 100)

と変更(追加)すると、「座標(380,100)から左詰」が、「座標(380,100)まで右詰」に変わるかと思います。

Q小3の算数


1.2.3.4.5.6
1~6までのカードが1まいづつあります。
このカードを使って、
(3けた)-(3けた)の式を作りなさい。
Q1答えが111になる式はなんでしょうか?
 (111になるようにしましょう 答えは6パターンあります)
Q2答えが一番小さくなるのは?


よろしくお願いします。

Aベストアンサー

1
246-135 264-153 426-315 462-351 624-513 642-531
隣り合う数字を引けば1になることに気づく。それをうまくならべる方法。パターンをもれなく数え上げるコツ。こんなところを学ぶ問題でしょうか。

2
ほんとはマイナスの数字がいちばん小さいですが、小3ですからそれは考えないんでしょう。だとすると、

100の位は隣り合う数にすべきだというのをまず思いつく。
で、残りの10の位と1の位の数字で、できるだけ、引かれる方を小さく、引く方を大きくするのがいいなと考えるんでしょう。
そうすると65がいちばんでかくて、12がいちばん小さい。のこりの3と4で100の位を作ろう。

みたいな感じでしょうか。
412-365

QVB6のPrinter.ScaleWidth に対応するvb.netの

VB6のPrinter.ScaleWidth に対応するvb.netの命令はありますか。

VB.netでプリンタにグラフ印刷させようとしているのですが、VB6の場合Printer.ScaleWidth、Printer.ScaleHeightでA4サイズにスケーリングできたのですがVB.netではScaleWidth,ScaleHeightに変わるものを見つけることができません。

たとえばA4サイズにスケーリングする場合自分で座標の最大値を取り出しスケールを計算し座標に掛けてやるしかないのでしょうか。

環境Windows XP
VisualBasic 2010 Express

Aベストアンサー

グラフのイメージがファイルやBitmapオブジェクトとして取得できて
これを拡大(縮小)する方向でしょうか?

それなら
Graphics.DrawImage( Img, Rectangle )でスケーリングしてしまえばいいのではないかと思います

PrintPageイベントなどの 引数からe.PageSettings.PrintableAreaなどから印刷領域を取得して
Rectangleを決定してみてはいかがでしょう
縦横(アスペクト)比を考慮するなら 計算はしないといけないでしょうね …
縦基準なのか 横基準なのかの判定やそれに伴う他方の倍率の決定など

QACCESSで10桁の中から中の3桁を抜き出す関数

ACCESSで7けたの数値7654321から765の部分3桁と43の部分の2桁、21の桁を分けて抜きとりたいのですが、どういう関数を使ったらよいかわかりません、LEFT関数を使ってみたりしたのですがどうも欲しいものが取り出せないので基礎的なことですが教えてください
よろしくおねがいします

Aベストアンサー

クエリのデザイングリッドの「フィールド」のセルに

a: [x] \ 10000
b: ([x] Mod 10000) \ 100
c: [x]-[a]*10000-[b]*100

と入力してください。ここで、x は 7654321 などが入っているフィールドの名前、a, b, c は計算結果が入るフィールドの名前です。

7654321 に対しては、a に 765、b に 43、c に 21 が得られます。

Qプロセス終了実行後...

このような関数を処理することによって、filepath変数内にある
先頭10個のファイルを削除されますが、
たまにファイルがすべて削除されないまま、最終行で行っている
frmFinishダイアログが表示されることがあります。

現状の処理をファイルの削除が完全に完成してから、frmFinishダイアログを
表示させるのには、どのようにソースを改良したらよろしいでしょうか?

Aベストアンサー

Kill ステートはOSに削除させるステートです。

制御をOSに渡してみては?
For i = 1 To 10
  Kill (filepath(i))
  DoEvents
Next i


人気Q&Aランキング

おすすめ情報