[[20150123095913]] 『Excel2013 Ribbonの表示・非表示を確認する方法を』(やっぱり初歩) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Excel2013 Ribbonの表示・非表示を確認する方法を知りたい。PointsToScreenPixelsも?』(やっぱり初歩)

 【ウィンド枠を固定】状態でのフォーム表示について質問します。

 質問1:フォーム位置を次のように設定した時(ユーザーフォーム名:Form1)
         Form1.Top=ActiveCell.Row.Top
 この時に『Ribbon』の有無で表示位置が変化してしまいます。 その有無で位置が2段ズレて来ます。(私の場合)
 この事から『Ribbon』の状態が分かれば次の作業が出来ると思ったのですが問題発生です。
 確認用に   Application.CommandBars("Ribbon").Visible = True (or False)
 としても画面のリボンに何ら変化が見られません。(この時のリボンタブ表示/非表示に関わらず)
 だから、どの様にして『Ribbon』の状態を取得できるか分かりません。 ⇒ 何とか知りたいと思います。

 質問2: PointsToScreenPixelsについての疑問(何れかのセルで固定の場合)
 Form1.Top = PointsToScreenPixelsY(0) * 72 / 96 + ActiveCell.Row.Top
  この時に PointsToScreenPixelsY(0) * 72 / 96 は最初は正の値
 ActiveCellがウィンド固定位置より下方( or 左方向)へ向かうに従って負の値になる。
 何故か解らないので【ウィンド枠を固定】の時は使用していませんが良い方法は有りませんか?
 宜しくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


リボンを最小化する例。

 Sub test()
    If Application.CommandBars.GetPressedMso("MinimizeRibbon") = False Then
        Application.CommandBars.ExecuteMso "MinimizeRibbon"
    End If
 End Sub
(???) 2015/01/23(金) 13:07

???さん 早速のご返答有難うございます。
 Application.CommandBars.GetPressedMso("MinimizeRibbon") を試行しましたところ、
 リボンの『タブとコマンド』の『コマンド』部分が無くなり最小化できました。『タブ』は残ります。
 恐縮ですが、私の希望は『タブとコマンド』全部が隠れる状態の情報取得です。
 理由は最初の質問の様に『リボンのタブ』が表示されている時と非表示の時で『Form1』の縦位置(Vertical)がズレる為です。
 これは[ Excel 2013 ]の特異な現象でしょうか?
(やっぱり初歩) 2015/01/23(金) 13:35

[追記]
 最初の投稿の訂正              ・・・
  ActiveCellがウィンド固定位置より下方( or 左方向)へ向かうに従って負の値になる。
    ↓                                     ↓
   ActiveCellがウィンド固定位置より下方( or 右方向)へ向かうに従って負の値になる。

 私の願望としては Excel 2007 〜 2013 』共通のものを作成したいと思うのです。
 以上、宜しくお願いします。
(やっぱり初歩) 2015/01/23(金) 13:45

表示があるとずれるならば、表示しない状態にしてから処理するのが安全かと思います。

手元にあるのが2010なので試せませんが、"MinimizeRibbon"を"HideRibbon"に変えて試してみてください。
(2007、2010にはない機能なので、使い分けが必要かと思います)

または、Application.CommandBars("Ribbon").Height の値を計算に組み入れて対応できませんか?
(???) 2015/01/23(金) 13:52


???さん 早速のご返答有難うございます。
 即刻試行しました。結果は納得のいく内容でした。このままExce2013であれば利用可能である事を確信しました。

 >(2007、2010にはない機能なので、使い分けが必要かと思います)…について
 恐縮ですが、その『使分け方法』を教えて下さい。私はディレクティブ云々の知識が無く扱い方も知りません。
 以前から私のレベルでは不必要と考えていましたから・・・
 厚かましくも、宜しくお願いします。
(やっぱり初歩) 2015/01/23(金) 14:31

2007&2010版のマクロと、2013版のマクロ2つを用意する(ブックを変える)、というのが、無駄がないですね。

または、2010以前の場合、"HideRibbon"を参照しようとするとエラー停止してしまいますので、
例えば以下のようにエラー判定し、正常な場合のみ実行させても良いでしょう。

 Sub test()
    On Error Resume Next
    If Application.CommandBars.GetPressedMso("HideRibbon") = False Then
        If Err.Number = 0 Then
            Application.CommandBars.ExecuteMso "HideRibbon"
        End If
    End If
    On Error GoTo 0
 End Sub

他にも、Excelのバージョンをチェックして分岐させる方法もあります。
(バージョンチェック案は、今後のバージョンアップで追従できなくなる可能性があるので、お薦めはしません)
(???) 2015/01/23(金) 16:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.