[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『範囲指定して区切り(シェイプ)を描くには』(yuu)
区切り線をシェイプで描きたいのですが以下のマクロだと
一定の長さでしか描くことが出来ません。
範囲(セル)を、指定し指定したセル上側に指定範囲まで
Lineを引きたいのですが、以下どのように編集すれば可能でしょうか
ご指導よろしくお願いします。
Sub 点線区切り挿入()
Dim c As Range
Set c = ActiveCell
With ActiveSheet.Shapes.AddConnector(msoConnectorStraight, _
c.Left, c.Top, 878.6, c.Top).Select
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 255)
.Weight = 3
End With
End With
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 255)
.DashStyle = msoLineSysDash
End With
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
でしょうか?
(マナ) 2016/12/24(土) 17:29
Sub 点線区切り挿入2()
Dim c As Range
Set c = ActiveCell
With ActiveSheet.Shapes.AddLine(c.Left, c.Top, c.Left + c.Width, c.Top).Line
.ForeColor.RGB = vbBlue
.Weight = 3
.DashStyle = msoLineSysDash
End With
End Sub
(マナ) 2016/12/24(土) 18:24
(yuu) 2016/12/24(土) 20:44
横から失礼します。
>>質問がうまく伝わらなかったようですが
回答側は、要件としての説明もさることながら、アップされたコードをみて、あぁ、これは ActiveCell(どんな選択状態でも、これは「1つ」しかありません)の上に線を引く、 その線の終端の横位置がコード内で固定されている(878.6)
なので、その横位置を、選んだセルの実際の横幅に合わせればいいのでは? というポイントでのマナさんの 回答です。
もし、横位置の終端をActiveCellではなく、選んだセル領域の全体の横位置の終端に設定したいなら
Set c = ActiveCell を Set c = Selection に。 878.6 を c.Left + c.Width に。
これで試してください。
(β) 2016/12/24(土) 21:01
↑ でコメントしたものは、あくまで選択領域の一番上に線を引きます。
>>範囲指定とは複数行指定して、その範囲にLineを引きたいのですが、 >>例としてD10〜K10とか任意の指定した上でマクロの実行です。
D10〜K10 は 複数行ではなく、単一の行ですが、仮に D10:K30 を選択したら、どこにどんな線を引きたいのですか?
(β) 2016/12/24(土) 21:04
>仮に D10:K30 を選択したら、どこにどんな線を引きたいのですか?
各行ごとにセル上に描ければ、いいと思います。
よろしくお願いします。
(yuu) 2016/12/24(土) 23:38
Selection内の各行を c に取り込み繰り返しをすればOKです。
Sub 点線区切り挿入3()
Dim c As Range
For Each c In Selection.Rows
With ActiveSheet.Shapes.AddLine(c.Left, c.Top, c.Left + c.Width, c.Top).Line
.ForeColor.RGB = vbBlue
.Weight = 3
.DashStyle = msoLineSysDash
End With
Next
End Sub
(β) 2016/12/25(日) 07:25
↑で目的は達成できるかと思います。 でも、通常の行の高さのシートでこの太さの破線を図としてセットすると、その中の各セルを選択するのが ちょっと難しくなりますね。 すでに表のようなものがあって、そこに破線をセットするだけで、見るだけの目的ならいいのですが。
罫線を使うと、線の太さは制限があって、希望の太さにはできませんけど、以下で、ループなし処理ができます。
Sub 参考()
With Selection
.Borders.LineStyle = xlNone 'いったん選択領域内の罫線をすべて消す
With .Borders(xlEdgeTop)
.LineStyle = xlDash
.Color = vbBlue
.Weight = xlMedium
End With
With .Borders(xlInsideHorizontal)
.LineStyle = xlDash
.Color = vbBlue
.Weight = xlMedium
End With
End With
End Sub
(β) 2016/12/25(日) 07:50
そこで、罫線を使う方法ありがとうございます。(確かに罫線なら選択が容易です)が
元々の帳票には、既に罫線のある帳票なんですけど
> .Borders.LineStyle = xlNone 'いったん選択領域内の罫線をすべて消す
この部分だと思いますが、セル選択範囲の縦線まで消去してしまいます。
選択範囲の縦罫線は消去しないようにできますか?
よろしくお願いします。
(yuu) 2016/12/25(日) 13:08
.Borders.LineStyle = xlNone 'いったん選択領域内の罫線をすべて消す
この1行を消してみてください。
(β) 2016/12/25(日) 15:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.