表示位置・印刷位置を揃える
                                                         玄関へお回り下さい。
表示位置・印刷位置(文字列)を揃える        (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