プロが教えるわが家の防犯対策術!

エクセルのコマンドボタンの使い方について質問です。

選択している画像のサイズを大きくするマクロを作りました(※1)。
これをボタン(フォームコントロール)で実行すると、キチンと作動します。

しかし、これを、コマンドボタン(ActiveXコントロール)で実行すると
「実行時エラー’438’
オブジェクトは、このプロパティまたはメソッドをサポートしていません」
とエラーが出てしまいます(※2)。

基本的な質問で申し訳ないのですが、コマンドボタンで実行した際に
エラーがでる理由と解決方法について、ご教授頂けないでしょうか??


↓(※1)
Sub Macro8()
'
' Macro8 Macro
'
Selection.ShapeRange.ScaleHeight 1.75, msoFalse, msoScaleFromMiddle
Selection.ShapeRange.ScaleWidth 1.75, msoFalse, msoScaleFromMiddle
'
End Sub




↓(※2)
Private Sub CommandButton1_Click()

Macro8

End Sub

A 回答 (2件)

エラーになる理由については No.1 さんの言うとおり。


対策としては、
CommandButton の TakeFocusOnClick プロパティ を False に すること。
    • good
    • 1

>コマンドボタンで実行した際に


>エラーがでる理由と解決方法について、ご教授頂けないでしょうか??

Selection という意味は、今、選んでいるものということなのですが、
画像のShape オブジェクトの場合は、フォームコントロールのボタンを押しても、Selection を移動することはありませんが、
ActiveX コントロールの場合は、そのSelection が移動してしまいます。

ですから、Selection を使用して、画像の大きさを変えようとして、ボタンの自分自身を選択していますから、通常の方法ではコマンドは無理だということです。

あえて、ActiveX コントロールのボタンを用いるのでしたら、画像のShape オブジェクトを指定してあげることが前提になります。Selection が使えません。
動的なもの(その都度変わるもの)では、設定が極めて難しくなってしまいます。

Private Sub CommandButton1_Click()
Dim MyShape As Shape
 Set MyShape = Shapes("図 1") '<- 固定したもの
  MyShape.ScaleHeight 1.75, msoFalse, msoScaleFromMiddle
  MyShape.ScaleWidth 1.75, msoTrue, msoScaleFromMiddle
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!