• ベストアンサー

Excelで、行数に合わせて文字を拡縮できる?

Excelで、オートシェイプかテキストボックス、 もしくは結合した大きなセルに、 他セルの参照を入れ込みたいと思っています。 ところが、その入れ込みたいデータが、 場合によって何行にもわたったり一行だけになったりというような性質の もので、行数が少ない場合は文字を大きくしたいのですが、 どうしたら良いのかわかりません。 しかも、改行関数CHAR(10)を使っており、書式の設定は「折り返して全体を表示」モードにせざるを得なく、「縮小して全体を表示」にできません。 たとえば、シェイプの大きさをあらかじめちょうど良く設定しておいて、 シェイプにあわせて文字の大きさを自動的に変える、 というような事はできるのでしょうか。 それか、セルの書式設定を「折り返し」「縮小」を同時に指定する、という ような事はできるのでしょうか。 条件付書式で、文字が何バイト以上ならこの大きさ、というような 設定をできるならそうしようか、とも考えたのですが、 そのものズバリの解決法ではありませんし・・・。 面倒な質問ですが、お知恵を貸してくださる方いらしたら お願いいたします。

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

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

> 改行関数CHAR(10)を使っており、書式の設定は「折り返して全体を表示」 > モードにせざるを得なく、「縮小して全体を表示」にできません。 例えば、A1 セルの参照だとして、 =SUBSTITUTE(A1,CHAR(10),"") こんな風に改行コードをドロップする参照式で、[折り返して表示]にすれば 良いのでは? > 条件付書式で、文字が何バイト以上ならこの大きさ、というような > 設定をできるならそうしようか、とも考えたのですが... 標準フォントが固定ピッチならバイト数で計算は可能でしょうが、プロポー ショナルフォントであったり、標準フォント以外だと VBA + API で文字幅 を計算することになります。画面解像度によっても幅は異なるますし、加え て、どのタイミングでフォントサイズを適用するのか、、という問題があり ます。考慮しなければならない要素が非常にたくさんありすぎて難しいです。 結論としては改行コードをドロップするなど、何とか「折り返して表示」で 再検討してみてはいかがでしょうか。 ...というか、Excel に最初から搭載されてても良さそうな機能ですよね? なんで無いのだろう^^;

noname#101292
質問者

お礼

ありがとうございます。 ・・・はい、おっしゃるとおり、文字のバイト数で設定するのは 苦しいですよね。 シェイプのほうを文字の大きさに合わせる機能はあるのに、 逆に、シェイプのほうに文字を合わせる機能は無い事に気づきました。 どうもありがとうございます。参考にいたします。

noname#101292
質問者

補足

とり急ぎお礼を申しましたが、すみません、補足させてください。 「折り返しモードにせざるを得なく、縮小モードにできない」というのは、 セルに、最小限の情報が入れ込まれた時に大きく表示されるくらいの大フォントに設定しておいて、情報が増えればセルの大きさに合わせて小さくなって行く」という事ができない、という意味で書きました。 また、CHAR(10)は数回にわたり入れ込まれており、 具体的に言うと A1&B1&CHAR(10) & A1&A2&CHAR(10) ・ ・ ・ という風になっています。 この状況で CHAR(10)をふるい落としてみると、ただ一行の中にベタで 並んで行くだけで、やっぱり体裁をなしません。 ・・・うーん。 EXCELに、「縮小して全体を表示」の他に、 文字の自動拡縮機能があればなぁ、とつくづく思います。

その他の回答 (1)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

参考ということで... Sub Macro1()   ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 30#,100, 50).Select   x = Cells(1, 1): l = Len(x)   If l < 20 Then    fs = 16   Else     fs = 12   End If   Selection.Characters.Text = x   With Selection.Characters(Start:=1, Length:=l).Font    .Name = "MS Pゴシック"     .FontStyle = "標準"     .Size = fs     .Strikethrough = False     .Superscript = False     .Subscript = False     .OutlineFont = False     .Shadow = False     .Underline = xlUnderlineStyleNone     .ColorIndex = xlAutomatic   End With   Range("E10").Select End Sub これは、マクロの記録で、テキストボックスを作成して、適当に文字を入れて出来たマクロに手を加えた物です セルA1の文字数を数え、20文字より少なければ、フォントサイズを16ポイントにし、そうでなければ12ポイントにしています この辺の数値は、いろいろ試行錯誤して決めなければなりませんが、改行の有無等も計算して、フォントサイズを変更する事も出来ます

noname#101292
質問者

お礼

ありがとうございます。 VBAを使う、これもひとつの手ですね。 参考にさせていただきます。

関連するQ&A