[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ディスプレイの解像度によってObjectの高さが変わる。』(じょあ)
AddShapeのmsoShapeRoundedRectangleで四角のオブジェクトを書き、長さでスケジュールを表す(ガントチャート)マクロを書いています。
行の高さを16ポイント、図形の大きさを12ポイント、図形の高さを2ポイント下げたところに設定し、行の中央に配置させています。
4K(3840x2160)では行の中央に配置されるのですが、例えばフルHD(1920x1080)にするとオブジェクトが徐々に下にズレていき、50行位になると一行下に表示されてしまいます。(ディスプレイの解像度を変えるといろんな位置にズレます。)
オブジェクトが問題なのかなと思いますが、ディスプレイの解像度に依存せず、左右の位置は動かさず、オブジェクトの位置(高さ)だけを行の中央に配置する方法はないでしょうか。
もしも良いアイディアがあればご助言ください。
< 使用 Excel:Office365、使用 OS:Windows10 >
こんばんは! 私の勉強不足なんでしょうけど、、、ディスプレイの解像度によって図形の位置が変わるのですね? 試しにこんな↓コードを書いてみましたが、、、やっぱり変わりますか???
Option Explicit Sub kk() Dim MyLeft Dim MyTop Dim MyWidth Dim MyHeight MyLeft = ActiveCell.Left MyTop = ActiveCell.Top MyWidth = ActiveCell.Width MyHeight = ActiveCell.Height Sheets(1).Shapes.AddShape msoShapeRoundedRectangle, MyLeft, MyTop + (MyHeight - MyHeight / 2) / 2, MyWidth, MyHeight / 2 End Sub (SoulMan) 2021/06/04(金) 20:01
数行ではわからない程度のズレなのでネットで拾ったSampleを使って100行以上図形を書いてみましたが、ズレませんでした。
私の記載に問題がありそうです。
行の設定や開始行、幅の計算など、ここで私のコードを示すには長すぎるので、もう少し自分で考えてみます。
ありがとうございました。
(じょあ) 2021/06/04(金) 21:44
まぁ、、そんなに深くお考えにならなくても 高さは、セルの高さでしょ? 今回の場合は、Topはセルの上から図形の半分を引いた残りをさらに半分
図形の高さをセルの1/3にしている場合は セルの高さから図形の高さ1/3を引いた残りをさらに半分 それをTopにプラス。。。です。。。
まぁ、、お気軽にいきましょう(^^; (SoulMan) 2021/06/04(金) 21:51
こんばんは! そうなのですね。。貴重なご意見をありがとうございます。
私の認識では、、Topというのは文字通り上からの距離だと認識しています。 で、上からの距離をすべて上から指示するとこれは当然ずれます。あいません。 なので表示したいセルのTop + その距離と考えています。
なのでこちらが指示するのは上からの距離ではなく、あくまでも表示したいセルのTopからの距離です。 ごくごく少ないほんの僅かな距離です。。。
とは言っても実際にずれるのですからそのことついての異論・討論するつもりはありませんし、 繰り返しになりますが、貴重なご意見をありがとうございます。
今後の参考にさせていただきたいと思います。m(__)m (SoulMan) 2021/06/07(月) 20:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.