[[20130709203756]] 『印刷時のフォントサイズの自動調整』(のぶ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『印刷時のフォントサイズの自動調整』(のぶ)
Excel 2000 or 2003 Os Xp

 セルの列、行幅は決まっており、A4サイズで印刷できる大きさに設定してあります。
 セルに入る文字数によってフォントサイズを大きくしたり、小さくしたりしたいと考えています。
現在、手動でプレビューをみながら、セルの文字の大きさを変更しています。

文字数によって自動で調整する方法はありますでしょうか?

宜しくお願いします。


今晩は

 見当はずれでしたら申し訳ありません。

 セルの書式設定
 配置
 文字の制御
 縮小にして全体を表示するにチェック
 なわけないですよね
                             2013/07/09 22:07 aki

返信ありがとうございます。

縮小にして全体を表示で対応できるところもありますが、文章がながくなってしまうところがあり、1行になってしまいます。2行、3行で表示したい。

折り返して表示でき、かつ、全体を縮小表示ってできないのですかね・・・(のぶ)


そうですか

 >折り返して表示でき、かつ、全体を縮小表示

 配置
 文字の制御
 折り返して全体を表示するにチェック

 と併用する形になるかと思います。
 フォントにもよりますが
例えば、MSPフォントで既存の幅(8.38 72ピクセル)で、8文字表示できます
即ち、文字数によってセル内の表示を変更すればいいのかな?
何文字以下なら、縮小表示で、それ以外は折り返し表示みたいな感じで、、、

 Sub Macro1()
    With Selection
        .WrapText = False                   '[折り返して全体を表示する]
        .ShrinkToFit = False                '[縮小して全体を表示する]
    End With
End Sub

 こんなものと組み合わせると出来るのかも
ごめんなさい、自分には出来ません
                             2013/07/11 00:013 aki

           

 とりあえず、こんなのを動かしてみるとどうですか?

 調整したいセル範囲がわからないので
 とりあえず E列 にしてあります。

 複数列、複数ヶ所ある場合は コードの変更が必要なので
 どの列・どの範囲 なのか 詳しく教えて下さい。

 標準モジュールに貼りつけて、実行して 様子を見てもらえると良いのですが。

 '------
Sub NOBU()
Dim CWith As Double, FSize As Double
Dim i As Long
Dim MyCell As Range, MyCells As Range

    Application.ScreenUpdating = False
    With Columns("E:E")     '←実際の列に変更
        .Font.Size = Application.StandardFontSize
        .WrapText = True
        Set MyCells = .Range("A1", .Range("A" & Rows.Count).End(xlUp))
    End With

    Range("A:A").Insert Shift:=xlToRight
    For Each MyCell In MyCells
        If MyCell.Value <> "" Then
            CWith = MyCell.ColumnWidth
            FSize = MyCell.Font.Size
            MyCell.Copy Range("A1")
            MyCell.Value = Range("A1").Value
            With Range("A1")
                For i = FSize To 0 Step -2
                    .Font.Size = i
                    .ColumnWidth = CWith
                    .EntireColumn.AutoFit
                    If .ColumnWidth <= CWith Then
                        FSize = i
                        Exit For
                    End If
                Next
            End With
            MyCell.Font.Size = FSize
        End If
    Next
    Range("A:A").Delete Shift:=xlToLeft
    Set MyCells = Nothing
    Application.ScreenUpdating = True
End Sub
 '------

 (HANA)

返信ありがとうございます。

vbaで文字数が8文字単位で区切り、例えば15文字なら2行としてカウントし、文字の大きさを60とする。
1、2行の場合は文字は60サイズ
3行は48サイズ
4行は32サイズとする。

セルB4に=A28のような式が入っています。
  B10、B16、B22のような感じで等間隔で上記のような数式が入っています。

ファンクションを作成し、数式で文字フォントを変更しようとするとできない。
但し、ファンクションを実行すると文字サイズの変更ができる。

B4に数式=test(A28)と入力しても文字フォントが変更されない。
ボタン等を作成し、testを呼ぶとフォントが変更される。

public function test(a as range)
プログラムは省略
end function

=test(A28)のような形で自動でフォントサイズを変更する事はできないのでしょうか?

宜しくお願いします。(のぶ)


 Excel のユーザー定義関数の制限について - Microsoft Support
http://support.microsoft.com/kb/170787/ja
 ワークシートのセル内の数式から呼び出されるユーザー定義関数では、
 Microsoft Excel の環境を変更できません。
 つまり、このような関数では次の処理が実行できません。
   •スプレッドシートでのセルの挿入、削除、または書式の設定。

 って書いてあるので、ユーザー定義関数では駄目なんじゃないかと思います。

 (HANA)

返信ありがとうございます。

やはりだめですか・・・。Excelもユーザー関数で環境を変えられたらすごく便利なのに・・・残念。

とういうことは、ボタンか何かで関数を呼び出すしかないということですね。

ありがとうございます。(のぶ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.