選択したセル範囲を囲むように楕円を描くマクロです。
セルを選択して右クリックをするとセル範囲の内側に合わせて楕円が描かれます。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With ActiveSheet.Shapes.AddShape(msoShapeOval, _
Target.Left, _
Target.Top, _
Target.Width, _
Target.Height)
.Fill.Visible = msoFalse
.Line.Weight = 0.75
End With
End Sub
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.Left - 5, _
Target.Top - 5, _
Target.Width + 10, _
Target.Height + 10
Target.Top - 5, _
Target.Width + 10, _
Target.Height + 10
色を指定したい場合は、次のようにします。赤い線になります。
.Line.ForeColor.RGB = RGB(255, 0, 0)
コメント
素晴らしいマクロです。ありがとうございます。できれば,もう一度右クリックすると楕円を消すにはどうすればいいのでしょうか?教えていただけないでしょうか。
@kashio
申し訳ありません。消す方法は分かりません。
セルと楕円は実は無関係なので、どの楕円を削除するのかを指定できないのです。
シート上の図形をまとめて削除する方法ならば分かるのですが。
http://stabucky.com/wp/archives/2411
ありがとうございました。やはり難しいのですね。でもマクロって実際に動いた時の感動があって何とも言えないですね。また,ご指導お願いいたします。
@kashio
「これはマクロでできるんじゃないか」と気付くのが大事なのではないかと思います。
こちらこそよろしくお願いします。
[…] 2012 年 8 月 15 日 コメントをどうぞ コメント 以前、セルを楕円で囲むマクロという記事を書きました。 […]
@kashio
ちょっと考えてみました。
一応、できたので、記事にしてみました。
http://stabucky.com/wp/archives/4371
お久しぶりです。本当にお世話になっております。貴女のマクロを参考にして,こんなマクロで今作業をしています。ところが,パソコンによってというかエクセルのバージョンなのか,楕円の位置が右に行けば行くほど大きくずれて描画されてしまいます。どのパソコンでもどのエクセルでもセル内にうまくおさめて楕円を描く方法はないのでしょうか?何か,方法があればご指導お願いいたします。
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
@kashio
コードを見る限りでは右にずれていく原因は見つかりません。
今、手元にあるExcel97で試してみましたが、やはりずれません。
Excelのマクロはバージョンによる挙動の違いというのはあまりないように思います。
何でしょうね?
さっそくありがとうございます。どうも2007だとダメなような感じなのですが,我が家の2007では正常に動くんです。全く原因が分かりません。きちんと動くパソコンを使っていくことにします。また,ご指導お願いいたします。
[…] 以前、セルを楕円で囲むマクロという記事を書きました。 これはセルを右クリックするとそのセルを囲むような楕円を描画するというマクロです。 今回、「もう一度、右クリックしたら、その楕円を削除するマクロは考えられないか」というコメントをいただきました。 そこで少し考えて作り直したのが次のコードです。 […]