• ベストアンサー

結合したセルの高さを内容に合わせて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

  • 結合されたセルの移動 VBA

    「結合されたセルの一部を変更することはできません」と言うメッセージイベントでVBAを実行するにはどうしたらよいでしょうか? 結合されたセルあるいは複数の結合されたセルを選んで移動する場合、移動先が自分のセルに重なると、「結合されたセルの一部を変更することはできません」と言うメッセージが現れます。 これを回避するには一旦何も無い離れたところに移動し、それから再び目的の場所に移動します。 私の技能では以下のようなマクロになると思います。 最初に元の結合セルを選び、場所を覚えるマクロを実行しする。 次に移動先を指定し、「一旦何も無い離れたところに移動し、それから再び目的の場所に移動」するマクロを実行します。 これをワン・アクションで、「結合されたセルの一部を変更することはできません」と言うメッセージが出るタイミングで実行するにはどうしたらよいでしょうか。 よろしくお願い申し上げます。

  • エクセルVBAでセル結合

    いつもお世話になっています。 エクセル2003でVBAを使って下記をしたいのでその、VBA構文を教えて下さい。 特定の列のあるセルに文字が入っています。 (文字が入っている列は固定ですが、行番号はデータによって変わります。例えば、Aデータの場合は「J30」、Bデータの場合は、「J55」だったりします。) この文字が入っているセルをVBAで検索し、検索したセルを右隣のセルと結合します。(先ほどのAデータの場合、J30:Z30に結合します。) 更に、文字が入っているセルが2以上の複数の場合があります。(先ほどのAデータの場合、「J30」と「J40」と「J45」という感じです。文字が入っているセルの数はデータにより異なります。) 結合が終わり、このシートのデータがあるところだけに罫線を引きます。(このシートのデータというのは、前述の文字とそれ以外は、「数字」と「・」です。 ややこしいですが、よろしくお願いします。

  • Excel VBAで結合セルに連番を振っていくには?

    Microsoft Excel 2003での質問です。 表を作成しました。 結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、連番を振っていく作業をしています。 これをVBAを使って自動化したいのです。 列に連番がすでに入力されている最終行の下のセル(つまりこれから連番が入る空白セル)を選択、 範囲指定し(セル数はまちまちなのでこれは手作業)、 セルを結合させるまではできたのですが、 この結合させたセルに、[(一つ上の結合セル)+(1)]の値を入力させるにはどうプログラムしたらよいでしょうか? わかりにくい説明で恐縮ですが、どなたかご教示ください。

  • VBAにてエクセルのセルを結合するには?

    VBAにて、エクセルのセルを結合したいのですが? やっていることは、Access97よりVBAで、 Excel97へファイルを落とし込んでいるのですが 罫線を引いたり、列幅等をかえることはできたのですが セルを結合する方法がわかりません。 よろしくおねがいします。

  • セルの結合

    エクセルについてですが、 セルの結合は2つのセルの場合1つのセルのみ文字(数値)が入力されていればその入力文字(数値)が表示されますが、 複数だと左上端の文字(数値)だけが表示されますよね? これを、例えば横に並んだ2つのセルそれぞれに 文字が入力されているとします。 セルのみを結合して、その結合された1つのセルの中に両方の文字が表示されることって出来ないのでしょうか?

  • エクセルで二つの列を結合して作ったセルと、一つの列で作ったセルがあるの

    エクセルで二つの列を結合して作ったセルと、一つの列で作ったセルがあるのですが、 同じ幅(ピクセル数)でそのほかの条件は同じなのに、 『縮小して文字全体を表示する』にすると 同じ桁数でも、文字の高さが違う状態になってしまいます。 フォント数を変えようかとも思ったのですが、6だと小さすぎて8だと大きすぎます^^; 何か良い方法はないでしょうか。 結合したセルと単独のセルとでは、同じ文字の大きさはできないのでしょうか。 困っております。。よろしくお願いします。

  • セル結合 印刷

    Excelについて。 セルの結合を行い、文字を入力し、印刷すると、一部が欠けてしまいます。 原因は、結合したセルの幅よりも文字の幅が広い。 私は、セルの結合した方が文字の入力しやすので、セルの結合をよくするのですが、 上記の問題が発生しては結果として大きなミスです。大切な文字が欠けている。 セルの結合をせず、文字の配置設定により中央に表示させる方法などは勉強したのですが。 本質問は、 仕事などでExcelを使う際に、セルの結合はすべきではないのでしょうか? 印刷結果を確認すればよいですが、機械的(結合しないという選択肢によって)に絶対にミスがないようにすべきでしょうか? セルの結合でも、文字が欠けない方法はありますでしょうか? お手数ですが、よろしくお願いします。 Excel2010以上

  • EXCEL VBA 結合セルに行列操作 

    初めまして、VBA初心者です。 http://okwave.jp/qa4809370.html これと同じような感じなのですが、この場合だと結合セルにコピー できませんでした。 10行目以降がそれぞれAからDまで結合されていた場合はどうなるのでしょうか、また元値A1からH5まで結合してません、さらに空白の場合もあります。どなたか教えてください。

  • Excelでセルとセルを結合したいのですが・・・

    質問させていただきます。 Excel2007を使っています。 複数のセルを結合して一つのセルにまとめる作業をしているのですが、 =A1&" "&A2&" "A3 のようにすると結合できました。&" "&でスペースも確保できました。 しかし、結合するデータの中に空白があります。 データの中の空白を無視し、スペースを消してほしいのですがどうすればよいかわかりません。 例えば、A1にデータがない場合、スペースが空いてからA2が出てきます。 その空白をなくす方法を教えてください。お願いします。

  • エクセルで複数のセルの内容を「ハイパーリンクを生かしたまま」単一のセルに結合したい

    エクセルで複数のセルの内容を「ハイパーリンクを生かしたまま」単一のセルに結合したいのですが、どのようにしたらよろしいのでしょうか? たとえば、 セルA1に、「ヤフー」という文字列が入っていて、Yahoo!Japanへのハイパーリンクが設定されており、 セルA2に、「グーグル」という文字列が入っていて、Googleへのハイパーリンクが設定されている といったケースです。 &を使って A1&A2 としてみたのですが、文字だけがつながって、ハイパーリンクが失われてしまいました。これをハイパーリンクを生かしたまま、他の一つのセルに表示させたいのですが、どのようにしたらよろしいのでしょうか? できれば、マクロを使わないで考えたいと思っています。 よい知恵がございましたらよろしくお願いします。