またまた、幼稚な質問ですみません。
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関数を使って色々試したのですが上手くいきませんでした。
教えてください。よろしくお願いします。
送信時にスペースがつまってしまい正確な表現になっていませんでしたのでその
箇所を補正させていただきます。
> これを、下記のように桁を揃えて表示したいのです。
>101 2002
>10001 202
101と10001の左から1文字目(1と1)、および2002と202の左から1文字目(2と2)
を縦に揃えたいです。
皆さんの書き込みに比べますと恥かしいような内容ですがよろしくお願いします。
こんなのはどうでしょう?
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
すいと様 ありがとうございます。
すみませんがもう少し教えていただけないでしょうか。
>Text1.SelText = Left(dat0(i) & " ", 7)
" " のスペース数と、7 の数値はどのように求められたのですか。
半角・全角混在でも支障ないですか。
よろしくお願いします。
>" " のスペース数と、7 の数値はどのように求められたのですか。
適当です。
全角半角混在した場合は
LenB(StrConv(Text1.Text, vbFromUnicode))
でバイト数が取得できます。
strconvで全角を半角、半角を全角
なんかにも変換できます。
Text1.SelText = dat0(i)
Text1.SelText = String(6-Len(dat0(i)) & dat1(i)
とかでも出来そうですけど。最長データのdat0()と合わせると
いうことであれば、最長を求めて6の部分を変更する必要が
あります。
失礼しました。
誤)Text1.SelText = String(6-Len(dat0(i)) & dat1(i)
正)Text1.SelText = String(6-Len(dat0(i)," ") & dat1(i)
です。
#確認する癖つけないとなぁ、、トホ
すいと様、KG様 ありがとうございます。
急用ができまして遅くなりすみません。
>適当です。
スペース数と数値7 を適当に試しましたが何故かうまく行きませんでした。
>最長を求めて6の部分を変更する必要が
Text1.SelText = dat0(i)
Text1.SelText = String(6 - Len(dat0(i)), " ") & dat1(i)
エラーがでましたので、")"を追加して、6を変えてみましたが目指すようにはなら
ないようです。
もう少し教えて頂けないでしょうか。お願いします。
>エラーがでましたので
そのエラーメッセージを正確に開示することがまずはこういった
相手が何をやっているのか見えない状況での解決に至る第一歩かと
> もう少し教えて頂けないでしょうか。お願いします。
もう少し教えて、も良いですけれど
KGさんは最長を求めてとアドバイスがあったと思いますが、
何処で最長を求めていますか?
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
皆 様 ありがとうございます。
なな 様、助けて頂きましてありがとうございます。
解決しました。
本当に有難うございました。
ツイート | ![]() |