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

エクセルVBAで、ユーザーフォームを利用していますが、そのユーザーフォーム内にエクセルに最初から備わっているツールバーのコマンドボタンを貼り付けることは出来るのでしょうか?

というのも、図形をマウスで範囲選択して、選択された図形をDELETEで全部削除するマクロを組もうと思っているのです。
が、図形描画のツールバーに範囲選択をすると、その範囲内にある図形を全部選択できるコマンドボタンがあったので、その機能をそのままユーザーフォームに設置できればOKと思ったのですが・・・。
それと同様のことが出来るマクロを組めれば問題なのかもしれませんが、私にはちょっと無理そうです。
よろしくお願いします。

A 回答 (4件)

こんばんは。



こんな風にしたらどうですか?

オブジェクトの選択ボタンのIDは、182 ですから、FindControl で探して、設定し、
凹んだ状態を、○で表示。そのまま、オートシェイプ類を選択し、コントロールキーを押しながら、コマンドボタンを押すと、オートシェイプ類を削除。

UserForm が小さいほうがやりやすいようですね。なお、UserForm の プロパティの ShowModal は、False ですから、忘れないようにしてください。


Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  With Application.CommandBars.FindControl(, 182)
   If Shift = 0 Then
     If .State = msoButtonUp Then
      .Execute
      Me.CommandButton1.Caption = "○" '選択可
     Else
      .Execute
      Me.CommandButton1.Caption = "●" '選択不可
     End If
   ElseIf Shift = 2 Then 'コントロールを押しながら
     If TypeName(Selection) = "DrawingObjects" Then
      Selection.Delete
     End If
   End If
  End With
End Sub
    • good
    • 0
この回答へのお礼

完璧です。確かに出来ました。本当にありがとうございます。FindControlというやり方があるのは始めて知りました。これならいろいろと出来そうです。

お礼日時:2006/02/27 23:36

#2 のWend02です。



追伸:

忘れていたけれども、必ず、以下のコードを入れて、ボタンを戻しておいてくださいね。ツールバーを出していませんから、ボタンが見えない状態で、そのままにすると、何が起こったか分らず、Excelのトラブルのようになりますから。(^^;

Private Sub UserForm_Terminate()
With Application.CommandBars.FindControl(, 182)
  If .State = msoButtonDown Then
   .Execute
  End If
End With
End Sub
    • good
    • 0
この回答へのお礼

確かに、こういったフォローをしておかないと初心者の多い職場では、トラブルになりますね。重ねてありがとうございます。

お礼日時:2006/02/27 23:37

#1です。


ご質問を誤解し、失礼いたしました。

ど素人の私といたしましては、ユーザーフォームではなくて、新規ツールバーにマクロのボタンを乗せるという方法ぐらいしか思い浮かびません。(ツールバーなら、既存のコマンドボタンは乗せられますので・・・)

私の知識が及ばない世界でございますので、これにて撤退させていただきます。申し訳ありませんでした。
    • good
    • 0
この回答へのお礼

そうですね。確かに、マクロをツールバーに登録するという逆転の発想もありました。この方法も今後使ってみたいと思います。ありがとうございました。

お礼日時:2006/02/27 23:34

範囲選択で図形が選択状態になったら、「Del」キーで一発削除できますので、そこからマクロを起動させる必要はないと思いますが・・・。

この回答への補足

早々の回答ありがとうございます。

実は、社内のパソコン初心者にも簡単に使えるように、様々な機能をユーザーフォームに集約させたいと考えています。
当然、コマンドボタンでマクロを実行させるものも数多く使っていますが、質問したように「範囲選択のボタンそのものをユーザーフォームに設置できないか?」と考えているのです。

補足日時:2006/02/27 01:14
    • good
    • 0

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