| 
    
     |  | こんにちは。他のシートから抽出した値をオートシェイプ内にて下記のイメージ で簡単な作表を試みました。
 195    52    36    26    39
 1654    201    632    101    296
 SPACE関数にて文字の桁数に応じてスペースを作り、均等配置となるようにしたつもりですが結果はずれてしまいました。以下がそのコードです。
 
 
 Sub test()
 Dim Rng As Range
 Set Rng = Range("B6:Z8")
 'オートシェイプの作成
 With ActiveSheet.Range("B6:Z8")
 Set tshape = ActiveSheet.Shapes.AddShape _(Type:=msoShapeFoldedCorner, Left:=Rng.Left, Top:=Rng. _
 Top, Width:=Rng.Width, Height:=Rng.Height)
 End With
 '名前を付ける
 tshape.Name = "シェイプ01"
 
 
 Dim 出桁数(1 To 8) As Integer
 Dim 在庫桁数(1 To 8) As Integer
 Dim 出荷数(1 To 8) As String
 Dim 在庫数(1 To 8) As String
 Dim TEXT(1 To 8) As String
 Dim TEXT2(1 To 8) As String
 Dim 列 As Integer
 
 列 = 25
 For i = 1 To 8
 出荷数(i) = Sheets("3628").Cells(1 + i, 列).Value
 在庫数(i) = Sheets("3628").Cells(1 + i, 列 + 1).Value
 
 出桁数(i) = Len(出荷数(i))
 在庫桁数(i) = Len(在庫数(i))
 
 TEXT(i) = Space(10 - 出桁数(i))
 TEXT2(i) = Space(10 - 在庫桁数(i))
 
 Next
 ActiveSheet.Shapes("シェイプ01").TextFrame.Characters.TEXT = TEXT(1) _
 & 出荷数(1) & TEXT(2) & 出荷数(2) & TEXT(3) & 出荷数(3) & TEXT(4) _
 & 出荷数(4) & TEXT(5) & 出荷数(5) & vbCrLf _
 & TEXT2(1) & 在庫数(1) & TEXT2(2) & 在庫数(2) & TEXT2(3) & 在庫数(3) _
 & TEXT2(4) & 在庫数(4) & TEXT2(5) & 在庫数(5)
 ActiveSheet.Shapes("シェイプ01").TextFrame.Characters.Font.Size = 12
 '垂直方向の位置
 ActiveSheet.Shapes("シェイプ01").TextFrame.VerticalAlignment _
 = xlVAlignBottom
 '水平方向の位置
 ActiveSheet.Shapes("シェイプ01").TextFrame.HorizontalAlignment _
 = xlHAlignLeft
 End Sub
 
 初心者ゆえ原因を掴みかねており、かなり立ち止まっております。
 1桁前後のずれならかまわないのですが状況しだいでは最後は3桁程度もずれてしまい非常に見づらいです。何かアドバイスをよろしくお願いいたします。
 
 |  |