• ベストアンサー

結合したセルの高さを内容に合わせてVBAで設定したい

EXCELのVBAで質問です。 ファイルから文章を取り出し、 別のファイルの指定された位置に その文章をはめ込む作業を行っています。 文章を入れるセルは結合されたセルで、 折り返して全体を表示する設定にしてあります。 セルの幅は固定、フォントはプロポーショナルフォントを使用します。 (英文の場合半角で入力されるので) この時、文章の長さに合わせて、 文字が切れることなく印刷されるように マクロでセルの高さを設定したいと考えています。 そういう方法はありますでしょうか?  あれば教えていただきたいと思います。 文章の長さは数文字~数百文字とまちまちで、 あらかじめ適当な高さを取るわけにはいきません (はめ込む文章は1つではなく、複数あり、 はめ込む先も複数行あるため、 1つ1つのセルの高さを多めに取ると、 文章が短い場合にやたら空白ができてしまうため) 宜しくお願いいたします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんばんは。KenKen_SP です。 例えば、   1. テンポラリーなシートを用意   2. 本番で流し込む結合セルと同じ環境に A1 セルを設定     ・セル幅     ・フォント&フォントサイズ     ・ボールド等のフォント属性   3. A1 セルを「折り返して表示」にする   4. データを流しこんで、行の AutoFit 実行     Rows(1).AutoFit   5. Range("A1").Height で必要なセルの高さが求められる   6. 本番用シートで結合セルのセルの高さを調整   7. データを流し込む   8. 最後に 1. のシート削除 のような手順でできませんか? 計算でセルの高さを求めるのは、#1 ご回答のように複雑な要素が絡んで 難しいですね。 AutoFit を利用した方が簡単です。

boxing_day
質問者

お礼

失礼しました。せっかくのご意見を正しく読み取っていませんでした。 直接結合セルにAutoFitを用いるのではなくて、 同幅に設定した単一セル(ダミー)に一度内容を入れて AutoFitを用いるということですね。 大変参考になりました。ありがとうございます。

boxing_day
質問者

補足

丁寧な提案ありがとうございます。 しかしながら、手元のExcel2003では、 結合したセルに対してはAutoFitが機能しないようなのです。

その他の回答 (2)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.3

VBA以外でセルの高さの自動調整を利用する方法がありました。 結合しているセルと同じ行の、結合されていないセルに、 =REPT(CHAR(10),LEN(<結合セル>)/15+3) と、この場合は15文字につき改行1回+3行の文字列を表示する式を設定し、 セルの書式設定で「折り返して全体を表示する」をONにします。 該当行を選択し、[書式]-[行]-[自動調整]にします。 折り返しやマージンの行数を調整すると、それなりの表示になるのでは?と思います。 英単語等の折り返しで行数の予想が難しいのはNo.1の回答の通りです。

boxing_day
質問者

お礼

度々ありがとうございます。 以前、文字数からおおよ必要な高さを推測して、 VBAで設定しましたが、プロポーショナルフォントを使うと なかなかドンピシャとはいきませんでした。 関数を用いるという方法は発想になかったので 参考にさせていただきます。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> マクロでセルの高さを設定したいと考えています。 > そういう方法はありますでしょうか?  日本語なら、大雑把に何文字ごとに改行だからで大まかなセルの高さが計算できますが、英単語や数字が入ってると折り返し位置が定まらないので、強烈に難しいと思います。 ましてや、プロポーショナルフォントでは…。 Wordに差し込み印刷すれば、票の高さなどは適宜整形してくれたと思います。

boxing_day
質問者

お礼

回答ありがとうございます。 フォーマットファイルがEXCELであることと、 私自身EXCELの方が扱いやすいので 何かいい方法があればと思っておりますが、 Wordで作成するという方法も検討したいと思います。 ありがとうございました。

関連するQ&A