• ベストアンサー

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

  • Excel2003 コマンドボタンのプロパティ

    Excel2003 の vba の初心者です。 (Access2003 の vba の方が得意です。) 既に出来上がっているExcelのvbaを編集したいのですが、 コマンドボタンのプロパティが表示できません。 Accessであれば、コマンドボタンを選択して右クリックするとプロパティがあります。 しかし、Excelでは、コントロールツールボックスでデザインモードを押下し、 コマンドボタンを選択してコントロールツールボックスのプロパティを押下しても、 プロパティの一番上のプルダウンの所は「Sheet1 Worksheet」となっていて、 ▼を押下しても、他には何もありません。 どうも、Worksheetのプロパティが表示されているようです。 コマンドボタンのプロパティを表示させるには、どうすればよいのでしょうか。 基本的なことでお恥ずかしいですが、 ご教授いただければ幸いです。 よろしくお願いいたします。

  • Excel2007での VBAの動作不良?

    Excel2007がインストールされた環境で拡張子を変えて動作させようとしたら 変更直後でしか動作しませんでした。 やり方としては (1)VBAマクロを作成したボタンに登録(Excel2007にて)。 ※ボタンは[開発]タブの[挿入]からActiveXコントロールのボタンを配置しました。 (2)Excelファイルを2003バージョンで保存(拡張子はxls:Excel97-2003タイプ)。 ※この拡張子だと何度でも正常に機能しました。 (3)保存形式(拡張子)を変更して(拡張子はxlsm:マクロ有効ブック)マクロを実行したら正常に動作した。 ただし、一度ブックを閉じて開くとボタンがグレイアウトはしてないのですが使用不可でした。 デザインモードになってましたが解除不能です(クリックしても変化なし)。 2007のマクロの安全性に関する設定は (1)左上の丸いリボン(?)をクリック (2)[Excelのオプション]をクリック (3)左のメニュー欄において[セキュリティセンター]をクリック、[セキュリティセンターの設定]をクリック (4)左のメニュー欄[信頼できる場所]に[MyDocument]に設定し、[サブフォルダも信頼する]にチェック これで2003バージョン(拡張子:.xls)では問題なく動作しました。 (VBAマクロを作成したExcelファイルは全て[MyDocument]以下に保存してました) VBAコードを記述したマクロではファイルを開いたり、データを比較したりと色々な処理をしました。 ファイルを開いたのはExcel、Access、CSVデータなどです。 拡張子を「xlsm」にするとマクロ有効ブックになると思いますが他にも変化があるのでしょうか? ご存知の方、いらっしゃったらご教授願います。

  • EXCEL2010のVBAでのユーロ通貨記号(€)

    EXCEL2010のVBA(マクロ)利用して、指定したセルの書式をユーロ通貨記号(€)にしたいのですが VBAのエディタで、 € を記入すると ?の疑問符になってしまいます。 VBAを使わずに、通常のワークシート上でセルの書式変更から表示形式を € を選択すると €123.45 のようにユーロの通貨記号表示でき印刷問題なく出来ます。 VBAを利用して、指定のセルに € の通貨記号で表示変換させるにはどうすれば良いのかを 教えてください。 いろいろとググッてはみたのですが、有効な情報が見当たりませんでしたので ご教示をお願い致します。

  • excel vbaのプログラムが作成できません

    プログラミングでexcel vbaを勉強しています。 excel vbaのプログラムでフィボナッチ数列のプログラムを作れという問題なんですけど、正直全くわかりません。誰かこのプログラミングを教えてください。お願いします。 フィボナッチ数列は次のように帰納的に定義される。 fib(1) = fib(2) = 1 fib(n) = fib(n - 1) + fib(n - 2) (ただしn >= 3) この関数fib(n)を定義せよ。ただし引数nはInteger型、fib関数の返す値はLong型とする。 またfib関数を呼び出す適当なメインプロシージャを定義し、A1セルからA20セルまでに fib数列の1~20番目の値を書き出すようにせよ。 という問題です。ほんとに困ってますお願いします

  • エクセルVBA コントロールのプロパティの変更

    エクセル2003でシート上に割り付けたラベルコントロールをVBAでCaptionプロパティで 変更するプログラムを作ってみました。(同じ様にボタンコントロールのCaptionプロパティに ついても作りました。) ステップ実行(F8)では、思ったとおり変更されますが、普通の実行(F5)では思ったとおり 変更されず、遅れて最後のコマンド分しか変更されませんでした。 *条件ループでセルのテキストを順番に読みコントロールのCaptionとして変更するプログラム  です。  なぜ出来ないのか分かりません。  原因又は、方法を教えていただけないでしょうか?    VBAでは、オブジェクト名に配列を使えないらしかったのでOLEObjects(コントロール?、  コレクション?)でオブジェクト名の配列のように使っています。  あまり、詳しくないので用語が間違っていたらすいません。  後、途中にインターバルタイマー入れたりして、動作確認しましたがやはりダメでした。

  • Excel-VBA>コントロールをグレイアウトするには?

    Excel-VBAでユーザーフォームのコントロールをグレイアウト(灰色にして入力不可能にする)するには、プロパティのどの項目を変更すれば良いのでしょうか? 具体的には、2つのオプションボタンの一方が選ばれたとき、その隣にあるテキストボックスをグレイアウトしたいのです。 ちなみに、グレイアウトの方法は、オプションボタンの状態を監視して、値がTrueになったときにテキストボックスのプロパティを変更させればいいのかな?・・・と考えていますが、この方法が間違っているようでしたら、それについてもアドバイスお願いします。 どうぞ宜しくお願いします。

  • Excelで組んだVBAプログラムと同等の事をExcel無しで動作させるには?

    よろしくお願いします。 現在、EXCELのVBAでプログラムを組み、 それをEXCEL上で使っているのですが、 他のプログラミング言語や.NET Frameworkなどを使い、 同等のプログラムソフトをEXCEL無しで組む事は 難しいのでしょうか? もちろん、技術的には可能であると理解していますが、 プログラミングの技術がVBA初級レベルしかない自分が 組めるのかどうか、その点がわかりません。 漠然とした質問内容ですが、 やりたい事はセルを参照した自動計算が中心になります。 大変お手数ではありますが、ご回答よろしくお願い致します。

  • EXCEL2003 VBAについて【コントロールの追加】

    EXCEL2003のVBAのコントロールツールボックスに、カレンダー機能を追加しようと思い、インターネットで検索した通りに行った所、利用可能なコントロールのリストにカレンダーが表示されません。何かファイルをダウンロードすると、表示されるようになるのでしょうか?

  • EXCEL・VBAフォームの日付(表示形式を変更したい)

    VBA初心者です。フォームの中にテキストボックスを作成しています。規定値にあるシートのセルを表示しています。このセルは日付(西暦4桁)で入力しているのですがテキストボックスでは(西暦2桁)で表示されてしまいます。 FORMATというのを使用すればよいようなのですがどうつかえばいいのかわからないのです。 プロパティでテキストボックスのコントロールソースにそのセルを指定しています。 どのように記述すればよいでしょうか。 詳しい方教えていただけますでしょうか。 よろしくお願いいたします。

  • excel2007 新規ブック作成時のvba処理

    excel2007にてVBA処理を行っています。 vbaにて 新規ワークブックを作成 最初に開いているワークブックのシートを、新規ワークブックへコピー この作業を行っているのですが、実行時に --- 移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 --- このエラーが表示されます。 保存拡張子も「.xls」から「.xlsx」へ変更するも、互換モードの表示が外れません。 さらに原因を探ると、現在使っているPCのエクセルにて エクセルオプション→保存→ファイルの保存形式 この設定が「excel ブック」ではなく、「excel 97-2003ブック」のため、 新規ワークブック作成時に互換モードでファイルが作成されてしまうことで、2003と2007の行列数の違いからエラーになるようです。 確認のため、ファイル保存形式を2007仕様にすると、問題なく実行されました。 新旧のPCが混在するため、できたらファイル保存形式を97-2003モードで保持したまま、vbaでの新規ワークブックの作成は互換モードを外した状態で行いたいのですが、背景の色など、2007での特色があるため、2003形式には戻したくないのが心情です。 解決する方法はありますでしょうか?よろしくお願いします。

専門家に質問してみよう