[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでの線種変更について』(いけっち)
オートシェイプにマクロを登録し、そのオートシェイプをクリックすることで線種を実線・点線への切り替えを行っています。
このとき、点線を「Selection.ShapeRange.Line.DashStyle = msoLineRoundDot」の記述により変更をしているのですが、手動で「点線(丸)」を選択する場合と点線の粗さ(点と点の間隔)が違います。
細かい間隔にしたいのですが、何か知恵はないでしょうか?
ちなみに、記述しているマクロは下記のようなマクロです。(オブジェクトは50ぐらいあって、一つ一つ名前を付けてマクロもそれぞれsubを作成しています。下手くそですが・・・・。)
Sub Object1()
Dim L As Integer
i = ActiveCell.Address
ActiveSheet.Shapes("オブジェクト1").Select
L = Selection.ShapeRange.Line.DashStyle
If L = msoLineSolid Then
Selection.ShapeRange.Line.DashStyle = msoLineRoundDot Selection.ShapeRange.Line.Weight = 0.75 Else Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Weight = 1.75
End If
Range(i).Select
End Sub
外しているでしょうが・・ (mitsu)
>Selection.ShapeRange.Line.Weight = 0.75 を Selection.ShapeRange.Line.Weight = 0.25 へ変更。
>、一つ一つ名前を付けてマクロもそれぞれsubを作成しています。 この50のオートシェイプに投稿されたような破線と実線の切り替えを行うVBAコードを登録したいという ことなら、オートシェイプの数VBAコードを用意する必要はありません。
標準モジュールに
'======================================================================== Sub swich_dot_solid() Dim shp As Variant shp = Application.Caller If TypeName(shp) = "String" Then With ActiveSheet.Shapes(shp).Line If .DashStyle = msoLineSolid Then .DashStyle = msoLineRoundDot .Weight = 0.75 Else .DashStyle = msoLineSolid .Weight = 1.75 End If End With End If End Sub
上記のswich_dot_solidを個々のオートシェイプに登録してください。
ichinose
mitsuさん 私も初めは線の太さの問題かと思いましたが、そうではありませんでした…。単なるエクセルのバグなんですかね。。。
ichinoseさん ありがとうございます。非常にわかりやすい!後学のために「If TypeName(shp) = "String" Then」はどういう意味ですか??
あっ、これ間違いです。
Sub swich_dot_solid() If TypeName(Application.Caller) = "String" Then With ActiveSheet.Shapes(Application.Caller).Line If .DashStyle = msoLineSolid Then .DashStyle = msoLineRoundDot .Weight = 0.75 Else .DashStyle = msoLineSolid .Weight = 1.75 End If End With End If End Sub
図形に登録したマクロ内では、Application.Callerは、図形の名前を文字列として返します。
よって、
If TypeName(Application.Caller) = "String" Then
これは、図形に登録されている場合だけ、If以下の処理を行うという意味です。 もっとも、図形以外でも文字列を返す場合もあるので、簡単なチェックですけどね!!
Application.Callerは、よくHelpで確認してみてください。
ichinose
ありがとうございました!
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.