プロが教える店舗&オフィスのセキュリティ対策術

excel vbaでセル幅、高さを小さくした画面のその上に指定したところから指定したところに別に用意した複数の数値により自動で複数の斜線を引きたいのですが,下記の参考コードを見つけ検討しましたが、目的の結果が得られません、どなたか方法を教えて頂けませんか、

参考コードでは、下段のコード部分で、セルの縦幅(側辺)をポイント指定でセルの任意の位置から位置に引けますが上段部分のコードでは、セルの始端、終端の位置のみに対応できてセルの横辺(セルの横幅)についてのポイント指定ができません。
下段のコードのポイント指定は
   For cnt = 20 to 30 等で複数指定しますと自由に複数の横線を引くことができます。

質問

1・ セルの横幅(横方向)にはポイントという位置付はないのでしょうか。もしあるとしたらどの様に
指定するのでしょうか。また1セルのポイントはいくつでしょうか。

2・ セルの始端、終端の位置を利用する場合、range("c10"),range("g10")の内容を自動で、変える
方法はありませんか。
------------------------------
参考としたコード
Dim rngstart As Range, rngend As Range
Dim BX As Single, BY As Single, EX As Single, EY As Single
'shape を配置するための基準となるセル
Set rngstart = Range("c10")
Set rngend = Range("g10")
'セルのleft,top,widthプロパティを利用して位置決め
BX = rngstart.Left
BY = rngstart.Top
EX = rngend.Left + rngend.Width
EY = rngend.Top

'直線
ActiveSheet.Shapes.AddLine BX, BY, EX, EY
With ActiveSheet.Shapes.AddLine(BX, BY + 10, EX, EY + 10).Line
.ForeColor.RGB = vbRed
.Weight = 0.8
.EndArrowheadStyle = msoArrowheadTriangle
End With
End Sub
 以上。です。 よろしくお願いいたします。

A 回答 (2件)

No.1です。


たびたびごめんなさい。

投稿後、無意味な宣言に気づきました。

myRng の宣言は不要です。
もちろん
>Set myRng = Selection
も削除してください。

どうも失礼しました。m(_ _)m
    • good
    • 0

こんばんは!



質問に対する直接に回答にならないかもしれませんが・・・
あくまで私的見解です。

>1・ セルの横幅(横方向)にはポイントという位置付はないのでしょうか?
↓のサイトに載っていますが、個人的にセル幅(高さ)はポイントで意識したことはありません。
要は文字が収まるかどうか?が重要なのではないかと思います。

http://www.relief.jp/itnote/archives/000343.php

次に
>(2)の件ですが、
↓のコードは選択した最初のセルの中心から最後のセルの中心に矢印を引いています。
(B2:D10の範囲を選択した後にマクロを実行しています)

Sub Sample1()
Dim c As Range, r As Range, myRng As Range
Set myRng = Selection
Set c = Selection(1)
Set r = Selection(Selection.Count)
With ActiveSheet.Shapes.AddLine(c.Left + c.Width / 2, c.Top + c.Height / 2, r.Left + r.Width / 2, r.Top + r.Height / 2).Line
.ForeColor.RGB = vbRed
.Weight = 0.8
.EndArrowheadStyle = msoArrowheadTriangle
End With
End Sub

※ 画面上のセル幅(または高さ)のプラス加減で調整しています。
(厳密に○○ポイントではなく、見た目になります)

※ 仮に選択範囲の左上セルの左上角から右下セルの右下までというコトであれば
>c.Left + c.Width / 2, c.Top + c.Height / 2, r.Left + r.Width / 2, r.Top + r.Height / 2
の部分を
>c.Left, c.Top, r.Left + r.Width, r.Top + r.Height
とすれば角から角までの矢印になります。

具体的に数値で簡単に矢印が引ける方法があればごめんなさいね。m(_ _)m
「VBAでセルにポイント指定で斜線が引けま」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!