Textボックスなどで表示の桁を揃えるには?

解決


とっと  2007-10-13 04:39:55  No: 137789

またまた、幼稚な質問ですみません。
Text1のMultiLineプロパティの設定値をTrueとして下記を実行しますと
Private Sub Form_Load()
 Dim dat0(1) As Integer
 Dim dat1(1) As Integer
 Dim dat2(1) As Integer
  dat0(0) = 101
  dat1(0) = 2002
  dat0(1) = 10001
  dat1(1) = 202
 Text1 = ""
 For i = 0 To 1
  Text1.SelText = dat0(i) & " "
  Text1.SelText = dat1(i)
  Text1.SelText = vbCrLf
 Next i
End Sub
  下記のように表示されます。
101 2002
10001 202
  これを、下記のように桁を揃えて表示したいのです。
101   2002
10001 202
  Format関数を使って色々試したのですが上手くいきませんでした。
教えてください。よろしくお願いします。


とっと  2007-10-13 20:23:44  No: 137790

送信時にスペースがつまってしまい正確な表現になっていませんでしたのでその
箇所を補正させていただきます。
>  これを、下記のように桁を揃えて表示したいのです。
>101   2002
>10001 202
  101と10001の左から1文字目(1と1)、および2002と202の左から1文字目(2と2)
を縦に揃えたいです。
  皆さんの書き込みに比べますと恥かしいような内容ですがよろしくお願いします。


すいと  2007-10-13 21:48:09  No: 137791

こんなのはどうでしょう?

Private Sub Form_Load()
 Dim dat0(1) As Integer
 Dim dat1(1) As Integer
 Dim dat2(1) As Integer
 Text1.FontName = "MS ゴシック"
  dat0(0) = 101
  dat1(0) = 2002
  dat0(1) = 10001
  dat1(1) = 202
 Text1 = ""
 For i = 0 To 1
  Text1.SelText = Left(dat0(i) & "         ", 7)
  Text1.SelText = dat1(i)
  Text1.SelText = vbCrLf
 Next i
End Sub


とっと  2007-10-14 20:25:38  No: 137792

すいと様  ありがとうございます。
すみませんがもう少し教えていただけないでしょうか。
>Text1.SelText = Left(dat0(i) & "         ", 7)
"         " のスペース数と、7 の数値はどのように求められたのですか。
半角・全角混在でも支障ないですか。
 よろしくお願いします。


すいと  2007-10-15 22:58:03  No: 137793

>"         " のスペース数と、7 の数値はどのように求められたのですか。
適当です。

全角半角混在した場合は
LenB(StrConv(Text1.Text, vbFromUnicode))
でバイト数が取得できます。
strconvで全角を半角、半角を全角
なんかにも変換できます。


KG  2007-10-16 03:17:43  No: 137794

Text1.SelText = dat0(i)
 Text1.SelText = String(6-Len(dat0(i)) & dat1(i)

とかでも出来そうですけど。最長データのdat0()と合わせると
いうことであれば、最長を求めて6の部分を変更する必要が
あります。


KG  2007-10-16 03:18:40  No: 137795

失礼しました。

誤)Text1.SelText = String(6-Len(dat0(i)) & dat1(i)
正)Text1.SelText = String(6-Len(dat0(i)," ") & dat1(i)

です。

#確認する癖つけないとなぁ、、トホ


とっと  2007-10-18 18:03:46  No: 137796

すいと様、KG様  ありがとうございます。
急用ができまして遅くなりすみません。
>適当です。
スペース数と数値7 を適当に試しましたが何故かうまく行きませんでした。
>最長を求めて6の部分を変更する必要が
  Text1.SelText = dat0(i)
  Text1.SelText = String(6 - Len(dat0(i)), " ") & dat1(i)
エラーがでましたので、")"を追加して、6を変えてみましたが目指すようにはなら
ないようです。
  もう少し教えて頂けないでしょうか。お願いします。


ささき  2007-10-18 19:39:28  No: 137797

>エラーがでましたので

そのエラーメッセージを正確に開示することがまずはこういった
相手が何をやっているのか見えない状況での解決に至る第一歩かと


くま  2007-10-18 19:42:11  No: 137798

>  もう少し教えて頂けないでしょうか。お願いします。
もう少し教えて、も良いですけれど

KGさんは最長を求めてとアドバイスがあったと思いますが、
何処で最長を求めていますか?


なな  2007-10-18 19:42:51  No: 137799

KGさん、すいとさんの意見を参考に組むとこんな感じでしょうか

 Dim dat0(1) As Integer
 Dim dat1(1) As Integer
 Dim dat2(1) As Integer
 Dim intLen As Integer

 Text1.FontName = "MS ゴシック"
  dat0(0) = 101
  dat1(0) = 2002
  dat0(1) = 10001
  dat1(1) = 202

 'MAXを求める
 If LenB(StrConv(CStr(dat0(0)), vbFromUnicode)) > LenB(StrConv(CStr(dat0(1)), vbFromUnicode)) Then
  intLen = LenB(StrConv(CStr(dat0(0)), vbFromUnicode)) + 1  '後ろにスペースを付ける分+1
 Else
  intLen = LenB(StrConv(CStr(dat0(1)), vbFromUnicode)) + 1  '後ろにスペースを付ける分+1
End If
 
 Text1.Text = ""
 For i = 0 To 1
  '後ろにスペース1文字と桁が少ない方には長い方分のスペースを加える
  Text1.SelText = Left(dat0(i) & Space(intLen), intLen) & dat1(i)
  Text1.SelText = vbCrLf
 Next i


とっと  2007-10-21 05:02:33  No: 137800

皆 様  ありがとうございます。
なな 様、助けて頂きましてありがとうございます。
解決しました。
  本当に有難うございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加