[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コマンドボタンを自動的に移動』(オク)
ほぼ無理。API駆使すればできるとは思いますが。
シートの1番上にボタンを設置してウインドウを分割り表時にでもすれば、 ボタン位置固定でスクロールはできます。 この方法が多く使われているんじゃないかと思います。(多分)
これ以外だとツールバーを使うとか。 これならスクロールで移動しないし、ブックにも添付できるしね。 ツールバーの位置は、ブックに添付した時にあった位置が記憶されるようです。 マクロで、ある程度の位置に置く事ができますけど。 位置については、ここに少し。 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=56;id=FAQ http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=57;id=FAQ (Jaka)
ユーザーフォームを導入されたら良いのでは? モードレスで表示しておけば、ご希望の動作に近づくと思います。 (ROUGE)
>コマンドボタンを使用した画面をスクロールしたときに
一般にはそのままで,ボタンも一緒に自動的に一緒にスクロールするのではないでしょうか。 スクロールして画面から隠れてしまいませんか。
質問の主旨は逆のことでしょうか。 ワークシート(画面)をスクロールしても,ボタンは画面にそのまま動かない ようにしたいということではないですか??(夕焼)
もし,上記のことが希望でしたら,下記VBAでボタンを作ると画面に浮いてスクロールしても 移動しません。((Jaka)さんの説明のツールバーを自動で作る方法です。
下のVBAは仮の実行マクロです。上のマクロを実行すると自動でボタンが出来て,クリックすると 下のマクロを実行します。(夕焼)
Sub ボタン作成表示()
Dim MyBar As CommandBar Dim MyMenu As CommandBarButton
On Error Resume Next
CommandBars("Mybutton").Delete
Set MyBar = Application.CommandBars.Add(Name:="Mybutton", Position:=msoBarFloating, Temporary:=True)
Set MyMenu = MyBar.Controls.Add(Type:=msoControlButton)
With MyMenu .Caption = "私のコマンドボタン " .Style = msoButtonIconAndWrapCaption .TooltipText = "ここにメッセージ(注記)を書けます。" .FaceId = 2949 .OnAction = "実際のマクロ名" End With
Application.CommandBars("Mybutton").Visible = True MyMenu.Width = 130 End Sub
Sub 実際のマクロ名()
MsgBox "マクロが実行されました。"
End Sub
補足:
一般のツールバーは一回登録すると,EXCELに組み込まれてしまい,いつまでも 住み着いてしまいますが,上記は Temporary:=True としていますので このマクロを実行した時のみ発生し,EXCEL本体には組み込まれませんので EXCEL自身を汚しません。
ブックを開いた時にコマンドボタンも表示したければ,開く時の Workbook_Open() に登録しておきます。
.OnAction = "実際のマクロ名" のところに,マクロ名を記載して 実際に呼んでくるマクロを指定します。 ・FaceId = 2949 ここで,ボタンに付けるfaceIDのID番号を指定します。 この数値により絵柄が変わります。 2949は空欄です。 faceIDの絵柄などについては下記が参考になります。 FaceId =266 などにしてみてください。どんなアイコンになるでしょうか。
http://www.h3.dion.ne.jp/~sakatsu/FaceIdBrowse.htm
>何をしてもうまく実行できていません。
上記VBAマクロ(下記に再掲載)をコピーして実行してみられたでしょうか。 マクロ ,マクロ文の組込み方法は御存知でしょうか?。(夕焼)
Sub ボタン作成表示()
Dim MyBar As CommandBar Dim MyMenu As CommandBarButton
On Error Resume Next
CommandBars("Mybutton").Delete
Set MyBar = Application.CommandBars.Add(Name:="Mybutton", Position:=msoBarFloating, Temporary:=True)
Set MyMenu = MyBar.Controls.Add(Type:=msoControlButton)
With MyMenu .Caption = "私のコマンドボタン " .Style = msoButtonIconAndWrapCaption .TooltipText = "ここにメッセージ(注記)を書けます。" .FaceId = 2949 .OnAction = "実際のマクロ名" End With
Application.CommandBars("Mybutton").Visible = True MyMenu.Width = 130 End Sub
Sub 実際のマクロ名()
MsgBox "マクロが実行されました。"
End Sub
こんにちは
上下方向にしかウィンドウを固定したくないのに横方向にスクロールしたい場合とかは Worksheet_SelectionChange を使って選択したセルの横位置にボタンを移動したりは出来ますよ。
縦横逆でも出来ますし、選択したセルのそばに移動して表示したりも出来ます。
ただスクロールするだけでセルは選択したくないという場合はダメですけど。
(ウッシ) 2013/10/18(金) 14:03
結構古い記事なので、誰かが誤ってあげてしまったのでは?
(稲葉) 2013/10/18(金) 14:13
こんにちは、稲葉さん
ホントですね「20080219085327」って、古い。 気づかなかった。
(ウッシ) 2013/10/18(金) 14:17
検索掛けたときに、誰かの役に立つのかもしれませんし、いいことだと思います! なので私も一つ提案。 Sheetモジュールにコマンドボタンだけ配置したユーザーフォームを呼び出す用意し、コマンドボタン に該当するコードを実行させればよいかと。
(稲葉) 2013/10/18(金) 14:28
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.