dポイントプレゼントキャンペーン実施中!

Excelで、オートシェイプかテキストボックス、
もしくは結合した大きなセルに、
他セルの参照を入れ込みたいと思っています。

ところが、その入れ込みたいデータが、
場合によって何行にもわたったり一行だけになったりというような性質の
もので、行数が少ない場合は文字を大きくしたいのですが、
どうしたら良いのかわかりません。
しかも、改行関数CHAR(10)を使っており、書式の設定は「折り返して全体を表示」モードにせざるを得なく、「縮小して全体を表示」にできません。

たとえば、シェイプの大きさをあらかじめちょうど良く設定しておいて、
シェイプにあわせて文字の大きさを自動的に変える、
というような事はできるのでしょうか。

それか、セルの書式設定を「折り返し」「縮小」を同時に指定する、という
ような事はできるのでしょうか。

条件付書式で、文字が何バイト以上ならこの大きさ、というような
設定をできるならそうしようか、とも考えたのですが、
そのものズバリの解決法ではありませんし・・・。

面倒な質問ですが、お知恵を貸してくださる方いらしたら
お願いいたします。

A 回答 (2件)

> 改行関数CHAR(10)を使っており、書式の設定は「折り返して全体を表示」


> モードにせざるを得なく、「縮小して全体を表示」にできません。

例えば、A1 セルの参照だとして、

=SUBSTITUTE(A1,CHAR(10),"")

こんな風に改行コードをドロップする参照式で、[折り返して表示]にすれば
良いのでは?

> 条件付書式で、文字が何バイト以上ならこの大きさ、というような
> 設定をできるならそうしようか、とも考えたのですが...

標準フォントが固定ピッチならバイト数で計算は可能でしょうが、プロポー
ショナルフォントであったり、標準フォント以外だと VBA + API で文字幅
を計算することになります。画面解像度によっても幅は異なるますし、加え
て、どのタイミングでフォントサイズを適用するのか、、という問題があり
ます。考慮しなければならない要素が非常にたくさんありすぎて難しいです。

結論としては改行コードをドロップするなど、何とか「折り返して表示」で
再検討してみてはいかがでしょうか。

...というか、Excel に最初から搭載されてても良さそうな機能ですよね?
なんで無いのだろう^^;

この回答への補足

とり急ぎお礼を申しましたが、すみません、補足させてください。

「折り返しモードにせざるを得なく、縮小モードにできない」というのは、
セルに、最小限の情報が入れ込まれた時に大きく表示されるくらいの大フォントに設定しておいて、情報が増えればセルの大きさに合わせて小さくなって行く」という事ができない、という意味で書きました。

また、CHAR(10)は数回にわたり入れ込まれており、
具体的に言うと
A1&B1&CHAR(10)
&
A1&A2&CHAR(10)



という風になっています。

この状況で
CHAR(10)をふるい落としてみると、ただ一行の中にベタで
並んで行くだけで、やっぱり体裁をなしません。

・・・うーん。
EXCELに、「縮小して全体を表示」の他に、
文字の自動拡縮機能があればなぁ、とつくづく思います。

補足日時:2006/10/07 11:23
    • good
    • 1
この回答へのお礼

ありがとうございます。

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

どうもありがとうございます。参考にいたします。

お礼日時:2006/10/06 20:08

参考ということで...



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ポイントにしています
この辺の数値は、いろいろ試行錯誤して決めなければなりませんが、改行の有無等も計算して、フォントサイズを変更する事も出来ます
    • good
    • 0
この回答へのお礼

ありがとうございます。

VBAを使う、これもひとつの手ですね。

参考にさせていただきます。

お礼日時:2006/10/06 20:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!