• 締切済み

エクセルのシート上のマクロボタン

エクセルのシートに貼り付けたマクロボタンを、シートのスクロールにかかわらず、位置を変えないようにしたいのですが、どうすればよいのでしょうか。ボタンの順序の背面とか前面とかの指定がその目的かと思ったんですが・・・

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

>SelectionChangeとWorkSheetActivateの両方に貼り付けてみましたところ 私の回答はSelectionChangeイベントProcだけです。 両方にやらないで下さい。 もう一度私が解答コードををコピーしてやって見ましたが、エラーはでず、動きも予想どおりでした。 旨く行かず、原因が判らないようでしたら、回答はないものとしてください。

miwaki
質問者

お礼

ありがとうございます。 エクセルのバージョンの違いの所為ではないでしょうか。私のエクセルは、2002です。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

これが正統な回答かどうか分ちませんが 例えばSheet1のSelectionChangeイベントを下記とする。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Worksheets("sheet1").CommandButton1.Top = Rows(ActiveWindow.ScrollRow).Top + 2 End Sub 画面がスクロールされても、いつも右上に現れています。 上例ではシートにコマンドボタンを1つ}貼りつけ、 ツール-マクロ-VBEでVBEの画面になる。VBAProjectのSheet1をダブルクリックするとVBE画面になり、GeneralをWorksheet、DeclarationをSelectionChangeを選ぶ。 そして上記中間1行を貼りつける。 デザインモードを脱して、シートに戻る。 シート内の上下のアクチブセルの移動に対してはいつもボタンは右上に現れている。

miwaki
質問者

補足

仰せの通り、ご指導いただいたコマンドをSelectionChangeとWorkSheetActivateの両方に貼り付けてみましたところ、どちらで実行時エラー438で「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」というエラーメッセージが出ました。

  • taocat
  • ベストアンサー率61% (191/310)
回答No.3

  汎用性を求めるのであれば ボタンを配置したUserFormをモードレス で利用するすることをお奨めします。  

miwaki
質問者

お礼

モードレスで利用とは具体的にどうすればよいのでしょうか

  • taranko
  • ベストアンサー率21% (516/2403)
回答No.2

ボタンの順序の背面や前面というのは、画像やボタン等が どちらが手前に表示されるかというものです。 貼りつけたのが後の物ほど手前に表示されるのですが その順番を変えたいときに使用します。 例:画像の中にボタンを作り、後で画像を他のものに 変更すると画像が手前にきてボタンが消えます。 そのような時に画像を後にしてボタンを見えるように したりします。 スクロールしてもボタンの位置をそのままにする方法 ですが、お望みのものとは違うとは思いますが、 ボタンを一番上や左端に作成し、ウインドウ枠の 固定をすると上下のみや左右のみの移動の場合 ボタンが表示されたままということはできます。

miwaki
質問者

お礼

ありがとうございました。やはりこれしか方法はないのでしょうか。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

アクセスなら可能だと思いますが、エクセルではできないかと... ツールバーに登録する形なら可能です。 こちらなら「表示」「ツールバー」「ユーザー設定」で まず新規ツールバーを作成、ここにコマンドからマクロボタンをドラッグして追加 ボタンを右クリックしてマクロの登録になります。 ボタンは状態に応じて、文字列か絵を選択表示してください。

miwaki
質問者

お礼

ありがとうございました。やはりこれしか方法はないのでしょうか。

関連するQ&A

専門家に質問してみよう