列を自動的に表示したり、非表示にするマクロを組みました。
例えばA列にあるオートシェイブXを置いて、それに以下のマクロを登録します。
Sub 表示1()
Dim col As Integer
col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column
Columns(col + 1).Hidden = False
End Sub
次に、B列に別のオートシェイブYを置いて以下のマクロを登録します。
Sub 非表示()
Dim col As Integer
col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column
Columns(col).Hidden = True
End Sub
これで、YをクリックするとB列が非表示になり、XをクリックするとB列を表示にすることができました。
ところが、このオートシェイブX、Yを別の列にコピーして使おうとすると、うまくいくときといかないときがあります。
例えば、オートシェイブXをG列にコピーしたとき、
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column
の値が、7になるときと、1のままのときがあります。
オートシェイブのコピーにおいて、そのままコピーされるとき(7になるとき)と、ちょうどショートカットのようなものになるとき(1になるとき)があるようです。
両者の違い(どのようなときに違いが出るのか)についてどなたか、お教えください。
お礼
どうやら、コピーする前にマクロ登録をしたのがダメだったようです。 マクロ登録せずにコピーして、その後に一斉登録したらOKでした。
補足
図形(オートシェープ)のプロパティの「位置関係」は、 「セルに合わせて移動やサイズ変更をする」 になっています。