- 締切済み
エクセル フォームの ボタンがすぐにはへこまないのはなぜ?
エクセルですが フォームよりボタンを作成しVBAにリンクを張りました。 ボタンを押すと処理は正常に実行~完了されるのですが ボタンを押す際 ・押しながら少しドラッグする ・1秒ほど押し続ける のどちらかでないとボタンがへこんでくれません。 なぜなのでしょう? どうすればすぐ反応してへこんでくれるのでしょうか? 単に動きが重いわけではありません。 Office Excel 2003 (11.8169.8172) SP3
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >エクセル フォームの ボタンがすぐにはへこまないのはなぜ? 表題の回答としては、フォームツール自体は、Ver.5 のもので、ダイアログシートなら、すぐに反応するけれども、ワークシートでは、単に、Shapes の一群(Member) としてしか扱われないから、最初に、フォームツールの反応を優先してから、Shape という扱いで、影が反転するのだろうと思います。 もちろん、Shapeとして、クリックした時点で影を反転させるようなマクロを作れば、出来るのだろうけれど、それ自体がなかなか面倒なような気がします。 マクロでコマンドボタンを設定するとか、コントロール配列の真似事をするようなことをしなければ、表現力やイベントの豊富なコントロールツールにしたほうが良いということにしか、回答は思いつきません。
- lark_0925
- ベストアンサー率63% (37/58)
>のどちらかでないとボタンがへこんでくれません。 現象確認しました(Excel2002)。 気が付かなかったなあ!! いくつかプロパティを探りましたが、これを是正するようなプロパティは 見つけられませんでした(あるかもしれませんが)。 で、代替案。 1 「コントローツールボックス」のコマンドボタンを使う これだときちんと凹みますよね!! 2 オートシェイプの四角形を使って、ボタンを作成する。 これでも凹みませんが、クリック時にボタンに色の変化が 見られるから、それらしく見える オートシェイプの擬似ボタンの一例です。 新規ブックの標準モジュールにて '============================================================= Sub main() Dim btn As Shape [c10].Select Set btn = newbutton(ActiveSheet) btn.OnAction = "test" [f10].Select Set btn = newbutton(ActiveSheet, "Button2", , , , , &H800000, &HFFFF00) btn.OnAction = "test" Set btn = Nothing End Sub '================================================================= Function newbutton(ByVal sht As Worksheet, _ Optional ByVal txt As String = "", _ Optional ByVal left As Single = -1, _ Optional ByVal top As Single = -1, _ Optional ByVal width As Single = 72, _ Optional ByVal height As Single = 24, _ Optional ByVal folor As Long = &H80000012, _ Optional ByVal bcolor As Long = &HC0C0C0) As Shape 'sht 作成シート txt Caption文字列 left,top,width,heightは、ボタンの位置とサイズ 'fcolor 文字の色(RGB) bcolor ボタンの色(RGB) If txt = "" Then txt = "button" If left < 0 Then left = ActiveCell.left If top < 0 Then top = ActiveCell.top Set newbutton = sht.Shapes.AddShape(msoShapeRectangle, _ left, top, width, height) With newbutton .Fill.Visible = msoTrue .Fill.Solid .Fill.ForeColor.RGB = bcolor .Fill.Transparency = 0# .Line.Visible = msoFalse .Shadow.Type = msoShadow14 With .TextFrame .Characters.Text = txt .Characters.Font.Color = folor .HorizontalAlignment = xlHAlignCenter .VerticalAlignment = xlVAlignCenter End With End With End Function '================================================================= Sub test() MsgBox "ok" End Sub mainを実行してみてください。アクティブシートに二つの ボタンが作成されます。 これで代替できませんか? まっ、こんな面倒なことをするなら、 対した問題もないなら、そのまま既成のボタンを使うという 選択もありますねえ!! 検討してみてください
お礼
朝早くからの回答ありがとうございます。 どうやら仕様であり、回避できないということがわかりました。 どの道をとるか、しばし思案検討したいと思います。 ありがとうございました。
お礼
回答ありがとうございます。 なるほどなぁ・・・ 仕組みからみれば、なんとなく納得です。 やはり別段必要がないからそういう仕様にしてある (あるいは、そういう仕様のまま)、なのですかね♪ ありがとうございました。