• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでオブジェクトが選択されているかどうかを判定する方法)

VBAでオブジェクトが選択されているかどうかを判定する方法

このQ&Aのポイント
  • エクセル/パワーポイント上で、オブジェクトが選択されているかどうかを判定する方法について質問です。
  • マクロを実行した際に、オブジェクトが選択されていない場合には「オブジェクトを選択してから実行してください」という趣旨のメッセージボックスを表示してエラーを回避したいです。
  • このような機能を実現するためには、VBAの特定の構文を使用する必要があります。具体的には、'Selection'オブジェクトを使用して、選択範囲の要素数を取得し、0であればメッセージボックスを表示するようにします。

質問者が選んだベストアンサー

  • ベストアンサー
  • --HV--
  • ベストアンサー率25% (5/20)
回答No.1

手許にpptの例がありました。 ' 何も選択していない場合 If ActiveWindow.Selection.Type = ppSelectionNone Then MyMsg = MsgBox("オブジェクトを選択していません。", vbCritical, "警告") End End If Excelにも似たような手法があると思います。

foxalf
質問者

お礼

早速ありがとうございました。 エクセルの方は、こちらの構文から探してみようと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル/パワーポイントのVBAについて質問です。

    エクセル/パワーポイントのVBAについて質問です。 エクセル/パワ^ポイント上で、既に選択されているオブジェクトを塗りつぶすマクロを作成しましたが、何も選択されていない状況でマクロを実行するとエラーが返ってしまいます。マクロを実行したときに、オブジェクトが選択されていない場合には「オブジュエクトを選択してから実行してください」という趣旨のメッセージボックスをだしてエラーを回避したいのですが、どのような構文を使えばよろしいのでしょうか。 どうぞ宜しくお願い致します。

  • VBA オブジェクトが空かどうか判定する

    皆様のお知恵を拝借させてください。 エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト が入っているかどうか検査したいのですがどうしたらいいでしょうか。 例えば--- Dim a As Workbook If a <> nothing then ←この部分が分からない。このままだとエラー。 処理 End if --------- 環境 エクセル2003 WinXPsp1

  • オブジェクトの選択(単一/複数選択、グループ)

    グラフを複数製作/修正するような作業を日常的に行っています また、そのグラフにテキストボックスが複数グループ化されていたりグラフが複数グループ化されていたりということもよくあります グラフの名前を与えるとそのグラフに一定の処理をするようなマクロを作ったときに 選択したオブジェクトに含まれるグラフオブジェクトの名前を上記マクロに渡してくれるような 仲立ちをするマクロがあればと思っております 1.単一選択/複数選択に対応 2.グラフオブジェクト以外が含まれていても無視するだけでエラー終了しない 3.グループ化されたオブジェクトがあればその中のグラフオブジェクトまで探す という動きを実現したく思っています エクセルのバージョンは2007(2003も利用することができる環境です) 現状ではシート上の全てのグラフに一括処理をするか 単一選択したグラフに処理をするかの二種類のマクロまで作ることができます

  • ACCESS2007 VBAでのインポートウィザードの呼び出し方

    VBAを使ってテーブルへのインポート、 クエリの実行からEXCELファイルへのエクスポートまでを 一連で行いたいと考えています。 インポート時はファイル名が決まっていないので、 インポートウィザードを呼び出したいのですが、 ACCESS2003以前であれば、 「DoCmd.RunCommand acCmdImport」 でできたところ、 ACCESS2007では ------------------------------ DoCmd.RunCommand acCmdImport オブジェクト モデル呼び出しと Import RunCommand マクロはサポートされなくなりました。このオブジェクト モデル、または RunCommand マクロを呼び出すと、エラー メッセージが表示されます。代わりに、より特化した ImportAttach コマンドを使用します。 ------------------------------ とのことでエラーとなってしまいます。 肝心のImportAttachコマンドを使おうと、検索をかけたのですが、 どこにも情報が無く、構文すらわからない状況です。 ヘルプを探しても情報は見当たりませんでした。 探し方が悪いのかもしれないのですが、 参考となるURLや構文を教えていただければ助かります。 もちろん、インポートするファイルをGUIで選択できるのであれば、 別の方法でも構いません。 よろしくお願いいたします。

  • オブジェクト名をVBAで指定する方法を教えてくださ

    VBAでワークシートにOLEObjectsのコマンドボタンを設置してるのですが ボタンのオブジェクト名をVBAで指定するにはどうすればいいでしょうか? Private Sub CommandButton1_Click() With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False) .Object.Name = "ボタン1" .Object.Caption = "ボタン" .Object.Font.Size = 9 .Width = ActiveCell.Width .Height = ActiveCell.Height End With End Sub を実行すると、 .Object.Name = "ボタン1" の部分で 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)」というエラーになります。 他のコードは大丈夫です。 オブジェクト名をVBAで指定する方法を教えてください。 当方エクセル2003です。

  • エクセルVBAの実行保護について教えてください。

    エクセル2000VBAで構文を複数作り、シート上にボタンを配置し実行させたいと思います。 (パスワードで保護させて、VBAの構文は管理者以外に見えないようにしました) その複数のマクロの中には、実行させたくないものもあります。(管理者のみが行うマクロ) シート上のボタンで配置したもののみ実行可能にして、「ツール」-「マクロ」から誰でも実行させないような方法を教えてください。 つたない説明で申し訳ありませんが、ご理解いただけたでしょうか? よろしくお願い致します。

  • VBAとマクロの違い

    こんばんは。エクセル初心者です。 VBAとマクロの違いについて教えてください。 VBAというのは、プログラミング言語のことで よろしいのでしょうか? そのVBAで記述されたものをマクロとよぶ といったイメージでよろしいのでしょうか? たとえば、あるエクセルにはいってるマクロを 実行する、ということを作業マニュアルに記述 する場合 「○○マクロを実行する」というのが 正しいのでしょうか?それとも 「VBAを実行する」というのが正しいのでしょうか? まったく見当違いのご質問だったら申し訳ありません。 教えてください。

  • エクセル2010 ”オブジェクトの選択”方法

    エクセルでオブジェクトの選択方法について質問です。 以前のエクセル2003では図形描画ツールバーの中に”オブジェクトの選択”矢印がありました。 これで範囲を選択すると選択内のオブジェクトが全て選択されました。 しかし、この矢印が2010では見つかりません。 何処にあるのか?他の方法でできるのか?もうその機能は無いのか? ご存知の方、教えてください。

  • (AcadLisp/VBA) 事前選択して処理

    AutoCAD2004のVBAマクロで、"あらかじめ選択したオブジェクト"を処理する方法を探しています。 選択中のオブジェクト情報は、PickFirstSelectionSetで取得可能なのは分かりました。ただ、ボタンにマクロを登録しようと思うと、vbarunコマンドの実行で選択解除されてしまい、役に立ちません。。。  '例) -vbarun "module1.myfunc"  sub myfunc   msgbox ActiveDocument.PickFirstSelectionSet.Count  End sub 選択解除せず実行する方法(VBE上でF5以外に)や、その他なにか・・・ Lisp側で選択図形の情報を取ってVBAに渡す手もありっぽいですが、Lispよく知らないのでうまく動かず試行錯誤中。ssgetは表示範囲のみらしいのが課題になりそうだと分かり、心折れかけてます。 何かご存知でしたら教えていただけないでしょうか;

  • VBA Dictionaryオブジェクトについて

    まったく分かってませんが、興味があるので教えてください。 エクセルVBAにて、2つのデータを比較して一致したら、その隣のデータを転記する。ということを行うときに、とりあえずDictionaryオブジェクトを使えば、速く処理できると聞いています。 そしてDictionaryオブジェクトが実際にどのような処理をしているかは不明だが、ハッシュ検索じゃないかな。ということも読んだことがあります。 そこで知りたいことは、Dictionaryオブジェクトがハッシュ検索だとして、Dictionaryオブジェクトと同じ動きをするコードをVBAで書けないのでしょうか?という質問です。 VBAの達人達が配列を使ったり、色々なことを駆使して、条件が一致したら転記というコードを書いていますが、最後はDictionaryオブジェクトでどうだ。みたいな感じですよね。 じゃあ、Dictionaryオブジェクトと同じ動作、または近い動作で構わないので、それをコードで書くとどうなるのですか? それともVBAでは出来ないことなのでしょうか? 出来ないとすれば、なぜなのでしょうか? 色々知らないなかでの質問なので、申し訳有りませんが、よろしく教えてください。

専門家に質問してみよう