◆◆MS-Excel2000スキルアップ講座/VBA編◆◆

相対座標による範囲指定
以下のような表があり、B1セルにマクロボタンを張り付けています。

 

  A B
1   [Button]
2    

 マクロを実行させると、B1のセルからA2のセルまで範囲選択した後、コピーペーストを行う という作業がしたいんです。この「マクロボタンのある枠」を いくつも作っているので、セルの範囲選択については「相対座標」で行いたい場合に、1つのマクロで対応させる手順を説明しています。

回答

Sub Macro1()
'
    Dim cl1
    Set cl1 = ActiveSheet.Buttons(Application.Caller).TopLeftCell
    MsgBox Range(cl1, cl1.Offset(1, -1)).Address
End Sub

−−−−−−−−−−

鴻池です。

"のりこびと" <furu_nori@hotmail.com> wrote in message
news:8p70g2$6pm$1@news.osakagas.co.jp...
> のりこびとです。

> 始点B1終点A2の四角の枠を選択したもので、B2も選択範囲内です。
> 現在ある記録の内容はこうですが、絶対値なので、応用が利かない…。

相対座標?ってので範囲を選択するには,
Dim tmp As Range
Set tmp = ActiveCell

> Range("B1:A2").Select の代わりに
Range(tmp.Offset(0, 0), tmp.Offset(1, -1)).Select
を使えばよと思います。

>   Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
ここは,
Selection.Copy
だけでもよいのでは。

以下の貼り付け先の選択に"A1"以外を選びたいなら,同一マクロ内では記述できない
と思います。(コピ−用と貼り付け用マクロに分ける必要があると思います。)

>   Sheets("シート1").Select
>   ActiveSheet.Unprotect
>   Range("A1").Select

>   ActiveSheet.Pictures.Paste.Select
ここは,
ActiveSheet.Paste
だけでもよいのでは。

>   Selection.Locked = False
>   ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True

> #シートにはいろんなパターンの四角形がいくつもあり、
> #希望の四角形の図を選ぶと、その図が別シートに貼り付けられて参照できるよう
> #にしたかったのです…。

マクロでなくても,マウスによる普通のコピ−と貼り付けで十分ような気もします
が。