表示位置・印刷位置を揃える |
表示位置・印刷位置(文字列)を揃える (090) | |
リストボックスに表示したり、印刷した時に文字列を揃えたい所にうまく揃わなかったり、微妙にずれる事があるかと思います。そのような時には、下記のプロシージャと等幅文字を使って見て下さい。 Private Sub Command1_Click() Dim PostalNo(2) As String Dim Address(2) As String Dim strName(2) As String Dim i As Integer PostalNo(0) = "〒527-0000" Address(0) = "滋賀県 八日市市 1-2-3" strName(0) = "蚊取 新語" PostalNo(1) = "〒527-1111" Address(1) = "滋賀県 大津市 1-2" strName(1) = "仲居 摩砂廣" PostalNo(2) = "〒527-1234" Address(2) = "滋賀県 彦根市 10-2" strName(2) = "草名木 剛史" sFontSet Picture1, "MS Pゴシック", 10 For i = 0 To 2 Picture1.Print PostalNo(i) & " " & Address(i) & " " & strName(i) Next i Picture1.Print sFontSet Picture1, "MS ゴシック", 9 For i = 0 To 2 Picture1.Print StrCut(PostalNo(i), 12) & _ StrCut(Address(i), 28) & StrCut(strName(i), 14) Next i End Sub 'フォントの設定を変更するプロシージャ Private Sub sFontSet(myObj As Object, _ Optional FName As String = "MS ゴシック", _ Optional FSize As Integer = 12, _ Optional FBold As Boolean = False) With myObj .FontName = FName .FontSize = FSize .FontBold = FBold End With End Sub '文字列を指定の幅にカットするプロシージャ Private Function StrCut(ByRef myString As String, _ ByVal LenN As Long) As String Dim i As Long Dim j As Long Dim k As Long Dim myStringLen As Long Dim strTemp As String If LenN < 1 Then myString = "": Exit Function myStringLen = LenB(StrConv(myString, vbFromUnicode)) If LenN = myStringLen Then '全部半角文字の場合 StrCut = myString Exit Function ElseIf myStringLen < LenN Then '文字数が足りない時 StrCut = myString & String$(LenN - myStringLen, " ") Else strTemp = "": k = 0 For i = 1 To Len(myString) '文字数(半角換算)のカウント j = Asc(Mid$(myString, i, 1)) If j >= 0 And j <= 255 Then '半角の場合のカウント k = k + 1 If k > LenN Then Exit For strTemp = strTemp & Mid$(myString, i, 1) Else k = k + 2 '全角の場合のカウント If k <= LenN Then strTemp = strTemp & Mid$(myString, i, 1) ElseIf k - 1 = LenN Then '漢字分断の処理 strTemp = strTemp & " " Else Exit For End If End If Next StrCut = strTemp End If End Function 結 果 |
|
半角文字2個が全角文字1個分の幅になるようなポイントの文字(等幅文字)を 使用して下さい。 MS 明朝 及び MS ゴシック 文字ポイント 半角幅 全角幅 9 90 180 10 105 195 11 120 225 12 120 240 14 150 285 16 165 315 18 180 360 20 210 405 幅の単位=twip 1 センチは 567twip、1 インチは 1,440twip になります 1 インチは 72 ポイントになります。 |
2002/05/17