Excel2013を使用しています。表中の空欄にShapeを使って斜めにラインを引いていますが、この線をデータのカウントに合わせて上端を変化させたい。AddLineにて線を挿入するコードとマクロでのSelection.ShapeRange.ScaleWidth 1.3605442177, msoFalse, msoScaleFromBottomRight
'Selection.ShapeRange.ScaleHeight 0.7500001875, msoFalse, _では希望通りできますが、いちいちポイントをつかまなくてはなりません。名前を付けたラインをセレクトして「I27(右上)~B31(左下固定)」等と上端を変化できる方法を教えてください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
返事が遅くなりました。
マクロ自体は早速作ってしまったのですが、オヤっと思って、確認の必要がありました。
そして、そのままになってしまい、申し訳ありません。
使い方としては、必要な場所を、まず範囲設定してから、以下のマクロの実行をすれば、前にあった罫線などは削除されて、新たに線を引きます。ポイント(角)という考え方ではなく、あくまでも、セル(連結を含む)部分の左下と右上を結ぶように出来ています。実務的には、右クリック・イベントに設けるのが一番便利かと思います。
'//
Sub TestLine()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If Not Intersect(Selection, shp.TopLeftCell) Is Nothing Then
shp.Delete
End If
Next
Call SetLine(Selection)
End Sub
Function SetLine(rng As Range)
Dim Lf As Double, Tp As Double, Wd As Double, Ht As Double
Dim x1 As Double, y1 As Double, x2 As Double, y2 As Double
With rng
Lf = .Cells(1).Left
Tp = .Cells(1).Top
Wd = .Cells(1, .Columns.Count + 1).Left - .Cells(1).Left
Ht = .Cells(.Rows.Count + 1, 1).Top - .Cells(1).Top
End With
x2 = Lf + Wd: y2 = Tp
x1 = Lf: y1 = Tp + Ht
With ActiveSheet.Shapes.AddLine(x1, y1, x2, y2).DrawingObject
.ShapeRange.Fill.Visible = msoFalse
.ShapeRange.Line.Weight = 0.75
.ShapeRange.Line.DashStyle = msoLineSolid
.ShapeRange.Line.Style = msoLineSingle
.ShapeRange.Line.Transparency = 0#
End With
End Function
'//
No.1
- 回答日時:
こんにちは。
一度、マクロは考えたのですが、読みなおしてみると、こちらが勇み足になる可能性があったので、コードのアップは取りやめにしました。
>名前を付けたラインをセレクトして「I27(右上)~B31(左下固定)」等と上端を変化できる方法を教えてください。
「名前を付けたライン」とは、名前などを付けてしまったのでしょうか。
「I27(右上)~B31(左下固定)」とは、ひとつの範囲だけを指すとは思いにくいのですが。言い換えれば、汎用性がなくては、意味がないし、その範囲の元になるのは、四角形(rectangle)という意味ではないでしょうか。
「いちいちポイントをつかまなくてはなりません。」のポイントとは、表計算上にそのような部分が置かれているのでしょうか。一旦は、四角形の左下の角から右上の角を点と点を結ぶものと考えましたが、分からなくなりました。
その斜めに引いた線が、ずれているか、結果的にはずれてしまったと、当初は解釈しました。
しかし、図形(四角形など)内のライン(直線)は他の図形とConnectしていれば、図形の変化に対応するはずなので、ご質問の意味が分からなくなりました。
この回答への補足
windFallerさんご検討ありがとうございます。たとえば請求書の〆の線のように以下空白であれば左斜め下に向かってラインを引くことを想定しています。セル結合していますので罫線では解決できません。コードでAddLineを使い線を挿入することでは「角」をとらえて線を引くことができました。しかし、次は削除しないと追加されていくだけになります。また、ポイントは挿入→図形→直線からマクロを記録するとポイントでコードが記録されます。このポイントを変化させることで可能ですが大変です。わかりづらくて申し訳ありません。
補足日時:2015/01/10 14:36お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Bluetooth・テザリング android(Galaxy S-22)、bluetoothの「この端末名」がコロコロ変わる 1 2022/12/17 13:15
- 物理学 物理基礎です。 質量0.90kgの物体Aを傾きの角θの滑らかな斜面上に置く。物体Aに軽くて伸びないひ 2 2022/07/05 05:38
- Y!mobile(ワイモバイル) Ymobileデータ増量OP550円2GBコスパ悪い。プランSとプランMを月ごと交互に契約可能ですか 5 2023/05/23 17:43
- Y!mobile(ワイモバイル) ワイモバイルで、シンプルMプランから、4月中に、シンプルSプランに変更しました 0.53Gしか使って 4 2023/04/20 20:58
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- その他(Microsoft Office) エクセルマクロ オートフィルターでで選択コピー 2 2022/04/18 11:05
- 電気工事士 120ボルトの電圧が流れていて、上のSのスイッチが閉じられたとき、ab間の電圧を求めたいのです。 S 1 2022/03/25 21:43
- 物理学 物理の問題(車関係)で質問があります。 東方向に15.5m/sで走行中の車(1250kg)が角度不明 6 2022/12/09 13:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
ExcelのVBA。public変数の値が...
-
ソース内の行末に\\
-
ピボットテーブルでの毎回可変...
-
特定文字のある行の前に空白行...
-
ExcelVBAでPDFを閉じるソース
-
マクロの連続実行
-
TERA TERMを隠す方法
-
エクセルに張り付けた写真のフ...
-
VBA初心者 Ctrl+での操作、ボタ...
-
TeraTermマクロの文字列結合
-
エクセルのマクロについて教え...
-
エクセル マクロ 指定日の指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
他人が作ったマクロの理解
-
ExcelVBAでPDFを閉じるソース
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
TeraTermマクロの文字列結合
-
PDF出力マクロについて。マクロ...
-
#defineの定数を文字列として読...
-
エクセルのマクロをセルの値に...
-
wordを起動した際に特定のペー...
おすすめ情報