セルを楕円で囲むマクロ
選択したセル範囲を囲むように楕円を描くマクロです。
セルを選択して右クリックをするとセル範囲の内側に合わせて楕円が描かれます。
With ActiveSheet.Shapes.AddShape(msoShapeOval, _
Target.Left, _
Target.Top, _
Target.Width, _
Target.Height)
.Fill.Visible = msoFalse
.Line.Weight = 0.75
End With
End Sub
楕円をもう少し大きくしたければ、次のようにします。5ピクセルずつ上下左右に大きくなります。
「Target」はここではセル範囲を表します。順に左端、上端、幅、高さを表します。
Target.Top - 5, _
Target.Width + 10, _
Target.Height + 10
色を指定したい場合は、次のようにします。赤い線になります。
[ 2011年8月11日 | カテゴリー: Excel | タグ: VBA , セル , 楕円 ]
« CamiAppを自作 | Yahoo!の形態素解析をPHPで »
コメント
-
ありがとうございました。やはり難しいのですね。でもマクロって実際に動いた時の感動があって何とも言えないですね。また,ご指導お願いいたします。
-
[…] 2012 年 8 月 15 日 コメントをどうぞ コメント 以前、セルを楕円で囲むマクロという記事を書きました。 […]
-
お久しぶりです。本当にお世話になっております。貴女のマクロを参考にして,こんなマクロで今作業をしています。ところが,パソコンによってというかエクセルのバージョンなのか,楕円の位置が右に行けば行くほど大きくずれて描画されてしまいます。どのパソコンでもどのエクセルでもセル内にうまくおさめて楕円を描く方法はないのでしょうか?何か,方法があればご指導お願いいたします。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim mySh As Shape, shp As Object
Cancel = True
For Each shp In ActiveSheet.Shapes
If Target.Left = shp.Left And Target.Top = shp.Top Then
shp.Delete
Exit Sub
End If
Next
For Each shp In ActiveSheet.Shapes
If Target.Width = shp.Width And Target.Height = shp.Height Then
shp.Delete
Exit Sub
End If
Next
With Target
Set mySh = ActiveSheet.Shapes.AddShape(msoShapeOval, .Left, _
Target.Top, _
Target.Width, _
Target.Height)
mySh.Fill.Visible = msoFalse
End With
Set mySh = Nothing
End Sub -
さっそくありがとうございます。どうも2007だとダメなような感じなのですが,我が家の2007では正常に動くんです。全く原因が分かりません。きちんと動くパソコンを使っていくことにします。また,ご指導お願いいたします。
-
[…] 以前、セルを楕円で囲むマクロという記事を書きました。 これはセルを右クリックするとそのセルを囲むような楕円を描画するというマクロです。 今回、「もう一度、右クリックしたら、その楕円を削除するマクロは考えられないか」というコメントをいただきました。 そこで少し考えて作り直したのが次のコードです。 […]
素晴らしいマクロです。ありがとうございます。できれば,もう一度右クリックすると楕円を消すにはどうすればいいのでしょうか?教えていただけないでしょうか。