Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9539 / 13644 ツリー ←次へ | 前へ→

【26785】「オブジェクトを選択」を解除する方法 nagopa 05/7/18(月) 7:58 質問[未読]
【26786】Re:「オブジェクトを選択」を解除する方法 りん 05/7/18(月) 8:45 回答[未読]
【26807】Re:「オブジェクトを選択」を解除する方法 nagopa 05/7/18(月) 23:50 お礼[未読]
【26789】Re:「オブジェクトを選択」を解除する方法 yuu1 05/7/18(月) 11:19 回答[未読]
【26808】Re:「オブジェクトを選択」を解除する方法 nagopa 05/7/19(火) 0:21 お礼[未読]

【26785】「オブジェクトを選択」を解除する方法
質問  nagopa  - 05/7/18(月) 7:58 -

引用なし
パスワード
   はじめまして。
Excel VBAの中で、図形描画ツールバーにある「オブジェクトを選択」ボタンの状態をコントロールしたいのですが、方法をご存知の方教えてください。

困っていることは、マクロの起動時に「オブジェクトを選択」になっていると、PageSetupのPrintAreaの設定がエラーになってしまうことです。次のようなコードです。

 Dim pg As PageSetup
 Set pg = SheetTmpl.PageSetup

 With SheetOut.PageSetup
  .PrintTitleRows = pg.PrintTitleRows
  .PrintTitleColumns = pg.PrintTitleColumns
  .PrintArea = pg.PrintArea '★ここでエラーになる

Excelで操作しても、「オブジェクトを選択」状態では、印刷範囲の設定をメニューで選べないので、「オブジェクトを選択」を解除する必要があるのだろうと思います。
よろしくお願いします。

【26786】Re:「オブジェクトを選択」を解除する方法
回答  りん E-MAIL  - 05/7/18(月) 8:45 -

引用なし
パスワード
   nagopa さん、おはようございます。

>Excel VBAの中で、図形描画ツールバーにある「オブジェクトを選択」ボタンの状態をコントロールしたいのですが、方法をご存知の方教えてください。

>困っていることは、マクロの起動時に「オブジェクトを選択」になっていると、PageSetupのPrintAreaの設定がエラーになってしまうことです。次のようなコードです。

>  .PrintArea = pg.PrintArea '★ここでエラーになる

Worksheets(1)の印刷範囲を設定した後で、図形を適当に配置後選択してから、以下を実行しました。
Sub test()
  Worksheets(2).PageSetup.PrintArea = _
     Worksheets(1).PageSetup.PrintArea
End Sub
エラーになりませんでした。(XL2000 & Win98)

>Excelで操作しても、「オブジェクトを選択」状態では、印刷範囲の設定をメニューで選べないので、「オブジェクトを選択」を解除する必要があるのだろうと思います。
>よろしくお願いします。
これは、セル範囲が選択されていないからです。
ページ設定で手動で範囲入力が可能なので、別のエラーかもしれません。

ちなみに、オブジェクトの選択を解除するには、セルを選択すればいいです。
ただし、選択するにはそのオブジェクトがあるシートをアクティブにする必要があります。
Sub test()
  Worksheets(1).Activate 'オブジェクトが選択されているシートを表示
  ActiveCell.Activate  'セルを選択
End Sub
です。

【26789】Re:「オブジェクトを選択」を解除する方法
回答  yuu1  - 05/7/18(月) 11:19 -

引用なし
パスワード
   >Excelで操作しても、「オブジェクトを選択」状態では、印刷範囲の設定をメニューで
>選べないので、「オブジェクトを選択」を解除する必要があるのだろうと思います。

ツールバー[図形描画]-[オブジェクトの選択]を解除するには
以下のマクロで出来ると思います。
ちなみにID:=182は、CommandBars("Drawing").Controls("オブジェクトの選択(&S)")

 '[オブジェクトの選択]を解除
 With Application.CommandBars.FindControl(ID:=182)
  If .State = msoButtonDown Then .Execute
 End With

【26807】Re:「オブジェクトを選択」を解除する方法
お礼  nagopa  - 05/7/18(月) 23:50 -

引用なし
パスワード
   ▼りん さん:
>ちなみに、オブジェクトの選択を解除するには、セルを選択すればいいです。
>ただし、選択するにはそのオブジェクトがあるシートをアクティブにする必要があります。

早速の回答をありがとうございました。
ただ、うまくいきませんでした。次のように、activateやselectを入れてみたのですがやはり同じところでエラーになります。

 SheetOut.Activate ' SheetOutはWorksheet変数
 SheetOut.Cells(1, 1).Activate
 SheetOut.Cells(1, 1).Select
 With SheetOut.PageSetup
  .PrintTitleRows = pg.PrintTitleRows
  .PrintTitleColumns = pg.PrintTitleColumns
  .PrintArea = pg.PrintArea 'ここでエラー

オブジェクトを選択ボタンを押していなければちゃんと動くのですが。
selectやactivateのことをよく理解できていないのでしょう。マクロを記録したコードを埋め込んで、動かないで苦労したりしています。
も少し勉強します。

【26808】Re:「オブジェクトを選択」を解除する方法
お礼  nagopa  - 05/7/19(火) 0:21 -

引用なし
パスワード
   ▼yuu1 さん:

> '[オブジェクトの選択]を解除
> With Application.CommandBars.FindControl(ID:=182)
>  If .State = msoButtonDown Then .Execute
> End With

これでエラーが出なくなりました。ありがとうございます。

9539 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free