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))

でいかがでしょうか?