|
こんにちは。他のシートから抽出した値をオートシェイプ内にて下記のイメージ
で簡単な作表を試みました。
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桁程度もずれてしまい非常に見づらいです。何かアドバイスをよろしくお願いいたします。
|
|