VBAで折り返し表示と行高さの設定

このQ&Aのポイント
  • Excel2002でのVBAプロシージャーによる値のセルへの表示時に、折り返し表示と行高さの設定を自動化したいです。
  • 文字数によっては折り返して表示する必要があるため、求めた値の文字数を計算し、表示に必要な行数と行高さを決定します。
  • また、他のブックでも使用するため、表示するセルの列幅と行高さは可変に対応できるように希望しています。
回答を見る
  • ベストアンサー

VBAで折り返し表示と行高さの設定 

環境:Excel2002です あるプロシージャーで求めた値をセルに表示する時、折り返し表示と行高さの設定を自動化したいのです。 求めた値(例) r="(1)~(3),(6),(8)~(11),(15)~(20),(23),(28)~(33),(35)~(38),(40),(42)~(48)" rを入力するセル Range("I14:T14") Range("I14:T14")は結合されていて列幅は 7*11=77 … 列幅は7*11=77で固定 行高さは24.75 求めた値 r は可変です 求めた値rの文字数が少なければ行高さ24.75 1行に問題なく表示されますが 文字数が多い場合は折り返し表示と行高さの設定をする必要があります これを自動化する方法をご教示願います 入力される文字は MS Pゴシック 文字サイズ14 です 自動化する手順は以下だと思うのですが (1)求めた値の文字数を求める 半角、全角が混在なのでLENBで求めるのでしょうか? (2)入力するRange("I14:T14")の入力可能文字数(1行あたり)を求める (3) (1)を(2)で割って行14の表示必要行数を求め、行高さを決定する (4) rを折り返して表示する 贅沢な望みですが、この『VBAで折り返し表示と行高さの設定』は他のブックでも使用することになるので、表示するセルの列幅及び行高さは可変に対応できるようにしていただきたい 折り返して表示した時に【(1)~(3),(6),(8)~(11),(15)~(20),(23),(28)~(33】のように折り返して表示したら )が切れた状態で表示されるのを回避できるのでしょうか? 【(1)~(3),(6),(8)~(11),(15)~(20),(23),(28)~】 よろしくお願いします

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.1

一言だけ。 Excelのセルに入る文字数は、使うフォントと接続されているプリンター、 OSやExcelのバージョンによって変わってきますから、長さを計算する ことは事実上不可能です。 「このくらいで折り返すと入る」という文字数を目視で勝手に決めて、 その文字数で折り返す・・・というなら可能ですが、その場合、環境に よっては、右側が目いっぱい空く・・・という可能性は十分にあり得 ますよ。

sadacchi12
質問者

お礼

お礼遅くなりました 色々試してみましたがご指摘の以下の方法をとることにしました 「このくらいで折り返すと入る」という文字数を目視で勝手に決めて、 その文字数で折り返す

その他の回答 (1)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.2

セルのプロパティでやるしかないのでは?

関連するQ&A

  • エクセル マクロ 列幅は固定、行高さのみ可変+余白

    こんにちは。 列幅は固定にしたいが、行高さは入力内容に従って「全体を折り返して表示」し且つ上下に少し余白を設けたいと思っています。 「全体を折り返して表示」にしても、フィルター操作などでいじっている内に行高さが不足してちゃんと全体を表示しなくなってしまいます。 そこで、ネットを探していたら列幅と行高さを共にフィットさせてかつ余白を設けるマクロは見つけたのですが、列幅が動いては困るのです。 列幅に関わるのであろう箇所を削除して使用するとどうにも不安定というか、ちゃんとできる事もあればできない事もあり。。。 コードは変えてないのに。。。 列幅は固定しつつ、行高さのみ可変+余白にするコードを教えて頂けますでしょうか。 よろしくお願いします。 EXCEL2010 Windows7

  • Excelの行高を自動調節

    Excelのセルに何行にもわたって折り返して入力する場合、全部見えるよう自動的に行高を調節してくれる方法ありますか? そうなっている場合とならない場合があるのです・・・ 宜しくお願いします。

  • エクセルのセルサイズ

    セルの「列幅、行高」のサイズ表示をmm表示にする事は出来ないのでしょうか。又、表示数が同じでも用紙サイズが変わると「文字サイズ、列幅、行高」が、プリントした場合に変わるのは仕方ない事なんでしょうか。

  • 複数連続した列幅や行高を一発でチェックしたいのですが。

    Excelで、列幅や行高をよくチェックします。ところで、個々の列幅はすぐわかるのですが、例えばB~E列まで4列まとめた列幅の合計値を一発でチェックする方法、または個々の列幅を自動的にセルに転送してSUMで合計する方法など、ご存知の方、教えて下さい。

  • エクセルで行高が合わない

    EXCEL2003を使用しています。 行高を数値で変更した後、 行番号で確認したら、数値で入力した値と若干違っています。 数値17を入力    ↓ 行番号の行高さのポップアップヒントが 16.5になっている。 どうしてでしょうか? また2つとも揃えることはできないのでしょうか? ご存知の方よろしくお願いします。

  • エクセルVBA 行の高さ自動設定

    エクセル2002のVBA時、行の高さを自動設定することに関して、ご教授願います。  行の高さは Autofit を使用する事となっているのですが、Autofitでは文字の大きさから高さを自動設定するようですが、私は入力されている行数で自動設定をしたいと思っています。  1個のセルに200文字くらい入力された場合、列幅を30ポイント(マージして)行の高さを自動的に取得する方法ではフォントサイズの10ポイントで設定しています。 どうすればよいのでしょうか?良い方法を教えてください。

  • Excelで、値や書式、行幅、行高はそのままセルの数式とリンク先を削除してコピーしたい

    Excelで、セルの数式とリンク先を削除し、シートの内容(値と書式、列幅、行高)をそのままコピーしたいです。貼り付けオプションの「値と元の書式」を指定してコピーし、さらに「元の列幅を保持」を指定しても、行高が変わってしまったままです。 値と書式、列幅、行高はそのまま、数式とリンク先を削除して、新しいシートにデータを貼り付ける方法はありますでしょうか?

  • EXCELのセル内の文字の折り返しがうまくいかない

    EXCEL2003でセル内で文字の折り返しを指定しているなか、 セルの書式設定で文字の折り返しを選んだのに文字が折り返して表示されません。 折り返しにはなっていますが、行の幅が自動で広がりません。 行の高さの指定も特に指定してないとこのことです(人に質問 されています)。 可能な行もあります。 なので何かが行に対して設定されているのだとは思うのですが 原因が思い浮かばないのです。 ただ、列幅をダブルクリックして自動調整を一度行っておけば、 そのあとはその行も折り返しがされ、行高さも自動調整します。 何かが行に設定されているようですが、 何が考えられるでしょうか? よろしくお願いします。

  • VBAのプログラムでうまく動かなくて困っています。

    VBA初心者です。 エクセルのVBAのプログラムでうまく動かなくて困っています。教えていただける方がいらしたら、ぜひ教えて下さい!よろしくお願いします。エクセルの内容は以下のとおりです。 (内容) セル    E H J L N P R・・・ 8行目100 200 50 40 30 80 9行目130 350 10 50 60 120 110 ・ ・ (1)列Hの値が列Eの値より大きい場合その下に行を追加します。 (2)セルJ+セルL+セルN+・・をしてセルEの値を超えたセル以降の値を追加した行のセルJ列から順にコピペする処理です。 上のセルの1行目の内容でいいますと、 (1)列Hの値「200」が列Eの値「100」より大きいのでその下に行追加 (2)セルJ、L、N「50」+「40」+「30」でセルEの値「100」より大きいので、追加した行のセルJ列にセルN、Pの値をコピペするです。 以下が私が書いたプログラムです。 Sub test() Dim x As Integer Dim s As Integer Dim t As Integer x = Range("B8").End(xlDown).Row r = Range("J8").End(xlToRight).Column '8行目から最終行までループ For i = x To 9 Step -1 If Cells(i, 5) < Cells(i, 8) Then ☆【For r = y To 11 Step -2 Cells(s, t).Value = Cells(i, r) + Cells(i, r + 2) If Cells(i, 5).Value < Cells(s, t).Value            Then Exit For Next】 Rows(i + 1).Insert Shift:=xlDown '超えたセルをコピーして、1行下の"J列以降"に代入 ★ x = x + 1 End If Next i End Sub 上記プログラムで★の部分がうまく書けません。☆の部分も間違っているような気がします。よろしくお願いします。

  • Excel 「折り返して全体を表示する」

    1つのセルに表示しきれない長い文字列は「セルの書式設定」の「配置」タブの「折り返して全体を表示する」をチェックすることで、折り返して複数行表示することができます。ところが、ここでセルの列幅を小さくして、例えば2行で表示されていたものが3行じゃないと表示しきれなくなっても、自動的に3行に変更されません。セルの中にカーソルを置いてリターンを入力すると3行に変更されますが、これを複数のセルに対して一括して行うにはどうしたら良いのでしょうか?教えてください。よろしくお願いします。

専門家に質問してみよう