セルを楕円で囲むマクロ

Pocket

選択したセル範囲を囲むように楕円を描くマクロです。
セルを選択して右クリックをするとセル範囲の内側に合わせて楕円が描かれます。

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

楕円をもう少し大きくしたければ、次のようにします。5ピクセルずつ上下左右に大きくなります。
「Target」はここではセル範囲を表します。順に左端、上端、幅、高さを表します。

Target.Left - 5, _
Target.Top - 5, _
Target.Width + 10, _
Target.Height + 10

色を指定したい場合は、次のようにします。赤い線になります。

.Line.ForeColor.RGB = RGB(255, 0, 0)

[ 2011年8月11日 | カテゴリー: Excel | タグ: , , ]

« | »

コメント

  1. kashio より:

    素晴らしいマクロです。ありがとうございます。できれば,もう一度右クリックすると楕円を消すにはどうすればいいのでしょうか?教えていただけないでしょうか。

  2. stabucky より:

    @kashio
    申し訳ありません。消す方法は分かりません。
    セルと楕円は実は無関係なので、どの楕円を削除するのかを指定できないのです。
    シート上の図形をまとめて削除する方法ならば分かるのですが。
    http://stabucky.com/wp/archives/2411

  3. kashio より:

    ありがとうございました。やはり難しいのですね。でもマクロって実際に動いた時の感動があって何とも言えないですね。また,ご指導お願いいたします。

  4. stabucky より:

    @kashio
    「これはマクロでできるんじゃないか」と気付くのが大事なのではないかと思います。
    こちらこそよろしくお願いします。

  5. […] 2012 年 8 月 15 日 コメントをどうぞ コメント 以前、セルを楕円で囲むマクロという記事を書きました。 […]

  6. stabucky より:

    @kashio
    ちょっと考えてみました。
    一応、できたので、記事にしてみました。
    http://stabucky.com/wp/archives/4371

  7. kashio より:

    お久しぶりです。本当にお世話になっております。貴女のマクロを参考にして,こんなマクロで今作業をしています。ところが,パソコンによってというかエクセルのバージョンなのか,楕円の位置が右に行けば行くほど大きくずれて描画されてしまいます。どのパソコンでもどのエクセルでもセル内にうまくおさめて楕円を描く方法はないのでしょうか?何か,方法があればご指導お願いいたします。
    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

  8. stabucky より:

    @kashio
    コードを見る限りでは右にずれていく原因は見つかりません。
    今、手元にあるExcel97で試してみましたが、やはりずれません。
    Excelのマクロはバージョンによる挙動の違いというのはあまりないように思います。
    何でしょうね?

  9. kashio より:

    さっそくありがとうございます。どうも2007だとダメなような感じなのですが,我が家の2007では正常に動くんです。全く原因が分かりません。きちんと動くパソコンを使っていくことにします。また,ご指導お願いいたします。

  10. […] 以前、セルを楕円で囲むマクロという記事を書きました。 これはセルを右クリックするとそのセルを囲むような楕円を描画するというマクロです。 今回、「もう一度、右クリックしたら、その楕円を削除するマクロは考えられないか」というコメントをいただきました。 そこで少し考えて作り直したのが次のコードです。 […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報