|
▼B_BOSS さん:
こんばんは。
以下に示すコードを標準モジュールに貼り付けて実行してみて下さい。
対象は、アクティブシートです。
尚、アクティブシートの次のシート(右シート)を作業シートとして
使っていますから、フリーにしといてください。
'===================================================================
Private st_col
Private st_point
Private myscale
'===================================================================
Sub main()
With ActiveSheet
Call open_scale(3, 10, 10)
.Columns("a:b").ColumnWidth = 5
.Columns("c:u").ColumnWidth = 10
.Range("a1:a5").Value = Application.Transpose(Array("開始位置", 4, 28, 45, 60))
.Range("b1:b5").Value = Application.Transpose(Array("サイズ", 20, 10, 7, 5))
For idx = 2 To 5
Call mk_rectangle(.Rows(2), .Cells(idx, 1).Value, .Cells(idx, 2).Value)
Next
End With
End Sub
'================================================================
Sub open_scale(開始列, 開始列までのセル巾, 目盛り巾)
st_col = 開始列
st_point = 開始列までのセル巾
myscale = 目盛り巾
End Sub
'================================================================
Function mk_rectangle(rng As Range, 開始, 巾, Optional sht As Worksheet = Nothing) As Shape
If sht Is Nothing Then Set sht = ActiveSheet
cnv_left = get_point(開始 + st_point, sht.Next)
cnv_width = get_point(巾, sht.Next)
With rng
Set mk_rectangle = sht.Shapes.AddShape(msoShapeRectangle, _
cnv_left + 3.75 * (st_col - 1 + Int((開始 - 0.1) / myscale)), .Top, cnv_width + 3.75 * Int((巾 - 0.1) / myscale), .Height)
End With
End Function
'=====================================================
Function get_point(セル幅, sht As Worksheet)
With sht
.Cells(1, 1).ColumnWidth = セル幅
get_point = .Cells(1, 1).Width
End With
End Function
これで、プロシジャーmainを実行してみて下さい。
セルA2〜A5が開始位置のデータ、セルB2〜B5をサイズデータ
として、四角が作られるはずですが・・・。
確認してみて下さい。
|
|