• 締切済み

VBAでセルにポイント指定で斜線が引けませんか

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  以上。です。 よろしくお願いいたします。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 たびたびごめんなさい。 投稿後、無意味な宣言に気づきました。 myRng の宣言は不要です。 もちろん >Set myRng = Selection も削除してください。 どうも失礼しました。m(_ _)m

diwk85
質問者

お礼

ありがとう御座います。 セルの基本的なことがはっきりわかりました。このことが大きな収穫でした、ほんとに助かりました。 もう一度考え直し、取り組んでいきたいと思います。 いろいろと、ご親切なご解答を頂きありがとう御座いました、今後ともよろしくお願いいたします。 お礼のご連絡が遅くなりすみません。(74歳)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 質問に対する直接に回答にならないかもしれませんが・・・ あくまで私的見解です。 >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

関連するQ&A

専門家に質問してみよう