2014年8月4日月曜日

Excel 2013/2010:意図しないListBoxコントロールのリサイズ

ListBoxコントロールのサイズが勝手に変わってしまうことがあります。IntegralHeightをFalseにすれば避けられると思っていたのですが、どうもそう単純ではないようなので少し試してみました。

下図はWindows 7上のExcel 2010でシートに配置したListBoxコントロールです。AddItemで項目が追加されるようになっています。これをWindows 8.1上のExcel 2013で実行すると、見た目の結果が異なりました。


IntegralHeightがTrueの場合、Windows 8.1上ではListBoxコントロールが元のサイズより大きくなってしまいました。 IntegralHeightがFalseの場合このリサイズは起こらず、代わりに中の文字が小さくなりました。

逆にWindows 8.1上のExcel 2013で同じものを作ってみると、Windows 7上のExcel 2010で実行してもこのようなことは起こりませんでした。


実際には若干サイズが変わっているようですが、冒頭の例ほど大きな違いはありません。

念のため、画面の解像度が異なる場合も見てみました。同じWindows 7上のExcel 2010でも、解像度が異なると冒頭と同じ結果になりました。8.1上の2013でも同様でした。

Windows 7(解像度:1920×1200)・Excel 2010で作成

一方、8.1上の2013で作ったものは解像度が違ってもこのようなことは起こりませんでした。また、7上の2010でも結果は同じでした。

Windows 8.1(解像度:1920×1200)・Excel 2013で作成

ExcelよりWindowsのバージョンの違いに原因があるのでしょうか。
ちなみにWindows 7上のExcel 2013で作成した場合は結果が少し異なりました。AddItemを実行する前、ActiveXコントロールをアクティブにした時点でリサイズが起こりました。

Windows 7(解像度:1920×1200)・Excel 2013で作成

これはIntegralHeightの値は関係ありませんでした。

8.1上で作成できれば問題はなさそうです。7で作成せざるを得ない場合は、AddItem実行後にHeightとWidthを設定し直すくらいしか対処法は思いつきませんでした。なんか腑に落ちませんが。

2 件のコメント:

西浦 正純 さんのコメント...

「Excel-VBA ActiveX 意図しない動き」で検索をかけて貴殿の投稿にHitしました。
私の場合は、Worksheet内に、ComboBoxを配置しているのですが、
このComboBoxをクリックした瞬間に、Worksheet内のセルへの書き込みができなくなる現象に悩まされています。
現象が起こるのは、Excel2013を使用しているPCで、同じExcel-VBAのシステムをExcel2007、2010で実行しても現象は起こりません。OSはいずれもWindows7 です。
Win8.1でも現象は起こってますので、OSのバージョンについては問題なさそうです。
2013特有の問題なのでしょうか・・・

bardiel さんのコメント...

クリックして以降書き込みができなくなるのでしょうか?自分には経験ありません。
お役に立てずすみません。

コメントを投稿