• ベストアンサー

Excel2007でVBAを使ったプログラムを作成しています。

Excel2007でVBAを使ったプログラムを作成しています。 その中でTreeView Contorolを使っています。 このTreeViewのコントロールをサイズを変更し、デザインモードから抜けると、別の位置(左上)に移動してしまいます。 また保存をして再度そのファイルを開くと、TreeViewがすごく小さい枠として表示されてしまいます。 プログラム自体はちゃんと動いていますので表示上の問題かと思います。 セルの入力欄を広げたり、Excelのウィンドウ枠に何かしら変更すると、正しくTreeViewが表示されます。 何かプロパティの設定の変更が必要なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

TreeViewを使ってどのようなことをされて いるのかわかりませんが、一度以下のような 方法でTreeViewを作成してみてください。 TreeViewを使用する一般的な方法です。 (1) コード表を表示し、挿入からUserFormを作成します。 適当な名前をつけます。たとえばfrmTreeViewとします。 (2) ツールボックスを表示し、ツールボックスの上で 右クリックし、その他コントロールを表示し、 Microsoft TreeView Controlの一番バージョンの 高いものを選択し、OKとします。 (3) ツールボックスに表示されたTreeViewをクリックし、 UserFormに貼り付け、適当な大きさに調整します。 保存します。 (4) UserFormをクリックするとプロパティ表がUserForm のものに変わります。その中にStartUpPositionがあります。 また、TreeViewの中をクリックするとプロパティ表が TreeViewのものに変わります。 (5) 標準モジュールを挿入し、そこに Sub ShowTheForm() frmTreeView.Show End Sub とし、保存します。 (6) Sheetを表示し、表示、ツールバーからフォームを 選択し、ボタンをシートに張り付けます。 ボタンのマクロにファイル名!ShowTheFormを登録します。 TreeViewコントロールには何も設定していないの で表示するものはありませんが、これでTreeView を表示し、位置や大きさを確認してみてください。

maki55555
質問者

お礼

ありがとうございました。 教えていただいた手順で試してみます。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

>TreeViewのプロパティを見てもそういった項目が見当たりませんでした。 TreeViewのプロパティのプロパティではなく、 TreeViewを設定しているUserFormのプロパティ です。TreeViewコントロールを乗せている UserFormのどこかをクリックすると プロパティがUserFormのプロパティに 変わります。 TreeViewはOS、IEのバージョンに左右されます。 Excel2000、Excel2003で使っていたTreeViewを 含むファイルをIEなどが変更された環境で 実行するとプログラムによってはエラーが 出る場合があります。たとえば、TreeViewに イメージリストコントロールを設定して ノードに画像を設定するような場合です。 ところで、TreeViewコントロールそのものを Sheetに張り付けている、ということでは ありませんよね。

maki55555
質問者

補足

ご回答ありがとうございます。 確かにOSに左右されています。 TreeViewコントロールをSheetに貼り付けています。 これが今回の原因なのでしょうか?

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

(1) >このTreeViewのコントロールをサイズを変更し、 >デザインモードから抜けると、別の位置(左上) >に移動してしまいます。 これはTreeViewを表示しているUserFormの プロパティのStartUpPositionがWindowsの既定値 になっているからだと思います。 オーナーフォームの中央に設定すれば中央に 表示されます。 コードで何らかの設定変更をするようなコードを 記述していると当然ながら変化しますが。 (2) >また保存をして再度そのファイルを開くと、 >TreeViewがすごく小さい枠として表示されてしまいます。 この現象はみたことはないのですが。 TreeViewの中ををクリックしてプロパティを 変更して、Height、Left、Top、Widthをみると TreeViewの大きさがわかります。項目別の位置です。 本来はTreeViewを設定したときに保存し確定 したときのHeight、Left、Top、Widthは プログラムで何らかの変更を加えるような ことを記述していない限り変化しないはずです。 保存したときのHeight、Left、Top、Widthの 値と、開いてTreeViewの大きさが変化したときの Height、Left、Top、Widthは変化していますか。 (1)(2)に関連して、プログラムのなかで、プロパティの 設定をするようなコードが記述されていますか。

maki55555
質問者

補足

ご教授ありがとうございます。 (2)についてはもう少しいろいろ試してみたいと思います。 (1)ですが、プログラムの中ではプロパティは設定していません。 ただExcel上にTreeViewコントロールを配置して、デザインモードの切り替えを行っただけです。 (実際はツリーコントロールの実装は行っているのですが、EXCEL2000,2003では問題なく、EXCEL2007でこういった現象が起きたので、現在テストプログラム的に行っています。) このような場合StartUpPositionはどのように設定するのでしょうか? TreeViewのプロパティを見てもそういった項目が見当たりませんでした。 Excel2007ですが、保存形式として97-2003としています。 お手数をおかけして申し訳ありませんが、ご助言いただければと思います。

関連するQ&A