TITLE: [42] Re: 固定長での出力
DATE : 2000-12-14 00:54:00
--------------------------------------------------
> buff=Text1.text & Space(10-LenB(StrConv(Text1.text,vbFromUnicode)))
>
> このコードでエラーが出ます。
> どうすれば、いいのでしょうか?
StrConvという関数がサポートされていないようですね。
Help検索してもありませんし。
で、Text1.textの文字数をUNICODEではなくて、S-JISで数える方式を模索
してみました。
標準のLenBは、UNICODEで数えるため、半角も全角もすべて1文字が2byte
で帰ってきますよね。なので、この関数はこの場合使えません。
そうなると、自前で数える関数を作ることになるわけですが、Asc関数で
半角か全角かを判断して、カウントしていけば良いでしょう。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
'S-JISコードで文字列をカウントする関数
Function LenAsc(Str)
Dim StrLen
Dim Count
Dim i
Dim Code
’変数初期化
Count = 0
StrLen = Len(Str)
'文字数をカウントするループ
For i = 1 To StrLen
Code= AscW( Mid(Str,i,1) )
'Asc()関数で良いかと思ったら、全角文字も256以下の
'数字が返ってしまうのでだめで、AscW()を使いました
'これで何とかできているみたいです。
If 0<=Code And Code<256 Then
Count = Count + 1
Else
Count = Count + 2
End If
Next
'戻り値の設定
LenAsc = Count
End Function
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
それで、ROCKさんのコードを書き換えると、
buff=Text1.text & Space(10-LenAsc(Text1.text))
でいかがでしょうか?