エクセルでフォントサイズを自動で変更する方法

このQ&Aのポイント
  • エクセルでインデックスラベルを作成する際、文字数によってフォントサイズを自動で変更したいです。
  • 現在は手動でサイズ変更をしているため、時間がかかっています。
  • もし不可能な場合は、ショートカットキーを使ってサイズ変更する方法を教えてください。
回答を見る
  • ベストアンサー

エクセル フォントサイズ変更

エクセルでインデックスラベルを作成しています。 1シート目に罫線等でラベルの様式を作り、それに文字データを入れ、 2シート目に参照して文字のみ印刷するようにしています。 そこで、文字数が3~8文字ぐらいなのですが、 文字数によってフォントサイズを自動で変更できないかと思っています。 1行に入れる文字数は5文字で、それ以上はAlt改行で2行にしており、 セル内には収まっているので「折り返して全体を表示」や「縮小して全体を表示」ではなく、フォントサイズを変更したいです。 例えば、3文字は11、4文字は10、5文字は9、それ以上の2行になるものは8という風に、 入力すると自動でそのサイズになってほしいです。 その都度サイズ変更するのはかなり手間ですし、参照しているところには、 サイズ変更はされないのでとても時間がかかります。 もし、不可能なのであれば、ショートカットキー(Ctrl+△)などで、 サイズ変更するという方法もあるようなのですが、やり方がわかりません。 素人ですので、あまり難しいことはわかりませんが、ご指導よろしくお願いします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.5

条件にしたがってマクロを修正してみました。 以下のマクロに置きかえていただけますか? 1シート目のB列、F列、J列、N列の偶数行のセルに文字を入力したとき、1シート目と2シート目の両方のセルのサイズを変更するようにしています。最後から3行目の"Sheet2"のところだけを、実際の2シート目のシート名に変えてください。 3シート目と4シート目も同様です。シート名だけを変更すれば多分うまくいくかと思います。 Private Sub Worksheet_Change(ByVal Target As Range) Dim T As Range, S As Integer Set T = Target.Cells(1, 1) If T.Row Mod 2 <> 0 Then Exit Sub Select Case T.Column Case 2, 6, 10, 14 'B列、F列、J列、N列  Select Case Len(T.Value)  Case Is <= 3   S = 11  Case 4   S = 10  Case 5   S = 9  Case Else   S = 8  End Select T.Font.Size = S Worksheets("Sheet2").Range(T.Address).Font.Size = S End Select End Sub

sd3746
質問者

お礼

説明不足でご面倒をおかけしたうえ、何度も教えていただきありがとうございます。 おかげさまで、うまくいきました。 私もマクロを勉強しないといけないな、と思わされました。 本当にありがとうございました。

その他の回答 (4)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

No.2です。まず最初に確認しておきたいのですが、3シート~4シートというのは入力するシートでしょうか。それとも印刷するシートでしょうか。それによって、その他の質問の回答内容、マクロの内容も変わってくるので、それを教えていただけますか? それでは改めて、 > 他のどのセルも対応するようにするにはどのようにすればいいのでしょうか? ですが、罫線つきのシートと印刷するシートで対応するセルが1組、というのでなく、複数あるわけですよね。 そうなるとちょっと処理は複雑になりますが、1シート目のセルと2シート目のセルに規則性があれば割と簡単にできると思います。(例えば同じセル番地だとか、1シート目の3つ右のセルだとか) とりあえず、 ・入力する1シート目のセル番地(全て、あるいは規則性があるならその規則) ・それに対応する2シート目のセル番地(上記のセル番地と何らかの規則性があるなら、その規則) を教えていただけますか? (ここで上に出てくる3シート目、4シート目というのが上のどちらになるかで処理は変わってきます。3シート目、4シート目がからんでくるのであれば、1シート目、2シート目との関連も補足願えますか?) それから、 > それから、入力したシートの文字も変えることはできますか というのは、入力したシートの文字の大きさも同じ大きさに変える、ということでしょうか。 それはもちろんできますが、マクロに手が入るので、上記の事項を補足していただいてから、入力したシートの変更も含めてマクロを修正し、一緒に回答しようかと思います。(先ほど回答したマクロを修正しても、多分再度修正し直す必要がでてきそうなので)

sd3746
質問者

補足

お手数をおかけする聞き方をしてしまいすいません。 >とりあえず、 >・入力する1シート目のセル番地(全て、あるいは規則性があるならその規則) 入力セルは[B2][F2][J2][N2]そして[B4][F4]・・・という風に B,F,J,Nの偶数行という感じで続いていきます。 >・それに対応する2シート目のセル番地(上記のセル番地と何らかの規則性があるなら、その規則)を教えていただけますか? 2シート目はすべて1シートと同じセル番地になります。 > それから、入力したシートの文字も変えることはできますか >というのは、入力したシートの文字の大きさも同じ大きさに変える、ということでしょうか。 はい。1シート目に入力して出来上がりのラベルを確認して、その中の文字のみが2シート目に反映されて、枠付のラベルに印刷できればと思っています。 ※3シートと4シートの関係は、1シートと2シートの関係と同じです。色別に2種類のラベルを作成するために分けました。 説明が不十分で何度もご面倒をおかけしてすいません。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

No.2です。すみません、1シート目と2シート目が逆でしたね。 それで、うまくいかないとのことですが、まず前の回答の > 2シート目のシートタブを右クリックして「コードの表示」を選択すると、 この部分が、「1シート目のシートタブを」になります。文字を入力するシートです。 それから、VBAの修正点ですが、4行目の、 If T.Address(False, False) <> "B2" Then Exit Sub ここの B2 を、1シート目の文字を入力するセル番地に書き換えてください。 そしてその次の行の、 With Worksheets("Sheet1").Range("A1").Font の Sheet1 を、印刷するシート名(2シート目のシート名)に変えて、さらに A1 の部分を、フォントサイズを変えたいセル番地に変えてみてください。 うまくいかないようでしたら、また補足をお願いします。

sd3746
質問者

お礼

すいません。補足の質問で、3シート~4シートへの部分はできました。 先程やってみてならなかったので質問したのですが、シート名が間違っていたようで、直したらできました。 その他の2つの質問についてご回答いただければうれしいです。 よろしくお願いします。

sd3746
質問者

補足

早々のご回答ありがとうございます。 B2のセルはうまくいきました。 他のどのセルも対応するようにするにはどのようにすればいいのでしょうか? また、3シート~4シートも同じようにしたいのですが、シート名の部分をかえるだけでいいのでしょうか? それから、入力したシートの文字も変えることはできますか? いくつも質問してすいません。できる部分だけのご回答でかまいませんので、よろしくお願いします。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

「2シート目に参照して」という部分の意味がちょっとよくわかりませんが、2シート目を参照して、ということでしょうか。 2シート目にデータを入力すると、1シート目のセルに反映されて、そのラベルの文字の大きさを自動的に調整したい、ということだと解釈して、マクロを書いてみました。 2シート目のシートタブを右クリックして「コードの表示」を選択すると、VBAの画面が開くので、右の白い画面に以下のマクロをコピーして貼り付けてください。その際、このマクロでは「2シート目のB2に文字を入力すると、1シート目のA1の文字の大きさを変更する」という仕様にしているので、マクロの中の"B2"と"A1"というセル番地を実際のシート構成にあわせて変更してください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim T As Range Set T = Target.Cells(1, 1) If T.Address(False, False) <> "B2" Then Exit Sub With Worksheets("Sheet1").Range("A1").Font  Select Case Len(T.Value)  Case Is <= 3   .Size = 11  Case 4   .Size = 10  Case 5   .Size = 9  Case Else   .Size = 8  End Select End With End Sub 貼り付けたらVBAの画面は閉じてかまいません。2シート目の指定したセルに入力すると、そのセルを参照している1シート目のセルのフォントサイズが文字数に応じて変わります。

sd3746
質問者

補足

ご回答ありがとうございます。説明不足ですいません。 ラベル自体に枠があるので、それをイメージして入力できるように 罫線等で実際のラベルのように1シート目につくっていて、1シート目に入力をします。 ラベルには枠があり印刷する時は文字のみ印刷されればいいので、 2シート目にはその入力した文字のみが表示されて印刷するようになっています。 ですので、VBAのシートの1と2を逆にすればいいのだと思うのですが、うまくできません。 セルの番地もシート1のB2がシート2のB2になります。 セルの番地を実際のシート構成にあわせるということですが、A1のところをB2にすれば他のセルも対応するんでしょうか? 初歩的なことですいません。VBAが全くわからないので。

  • meron_
  • ベストアンサー率40% (51/127)
回答No.1

マクロならできますが、どうですか?

関連するQ&A

  • ラベルフォントサイズの自動変更

    .net2003にて開発しています。 ラベルに表示する文字数によってフォントサイズを変更し、 常に全体を表示させたいと考えています。 Excelで言うところの 「縮小して全体を表示する」 の機能を実現したいのですが、良い方法はありますでしょうか?

  • Excelでセルのフォントを自動で変更したい

    Excelで罫線でかこまれた用紙に印字する際、下記のようなことができると作業が楽になります。 シート1には印刷用フォーマット(行幅列幅ともに固定)があり、シート2には(VLOOKUPでシート1の該当セルに参照されるための)データが入っています。 例: シート2のA1(製品名)の内容はシート1のA1にVLOOKUPで参照されるとして… シート2のA1に入れた文字数が既定を超えると、文字が切れた状態で印字がなされます。 現在はそれを避けるために、文字が収まるOR収まらないの判断を(当たりまえですが)人の目でおこなっています。 シート2で入力後にシート1を開いてその都度フォントサイズを変更して印刷。 入力→人間の目で判断→フォントサイズの変更→印刷、入力→また人間の目で判断→フォントサイズの変更→印刷、入力→またまた人間の目で・・・の繰り返しです。 作業効率のわるさを感じますし、印刷用のフォーマット(シート1)とデータ入力(シート2)が別々なので、シート間を行き来するのも手間なのです。 入力した桁数が既定を超えたとき、列幅や段組を変えずにフォントサイズだけを小さくし、次に既定内の文字が入ったときはそれに対応するフォントになる、というようなことを自動でおこない、現在の当たりまえを変えたいのです。 半角を1単位=1桁 例: シート2のA1(製品名)の内容はシート1のA1にVLOOKUPで参照されるとしてシート1のA1のフォントサイズが 【例 1】25桁以下ならフォントサイズ16 【例 2】26桁以上30桁以下ならフォントサイズ14 【例 3】31桁以上ならフォントサイズ12 というような設定を自動でおこなうことは可能でしょうか。 過去の質問も検索しましたが、さがし方がうまくないようで、道に迷いこの時間です…。 VBAのことはよくわかりません。 が、この作業が楽になるならAlt+F11で貼り付けますので、よろしくお願いします。

  • 文字数に応じてfont-sizeを自動変更

    エクセルのセルの書式の中にある「縮小して全体を表示する」の様な ことをしたいのです。 具体的にはtableの固定幅セルのfont-sizeを、文字数に応じて自動的に 設定して、セル内で折り返しが発生しないようにしたい。 といっても、そんなに厳密でなくてもいいので、 「文字数が○文字未満ならfont-size:normal、以上ならsmall」 程度でいいんですが、これをCSSのみかCSS+JavaScriptで 実現できないものでしょうか。 文字数に応じて<td>のclassを変えればいいのでしょうが、 できれば、テキストの修正をすれば自動的に変わる様にしたいです。

  • エクセル グラフのフォント既定値の変更をしたい

    エクセルのグラフシートのフォントの既定値だけを変更することは可能でしょうか? 具体的には、データラベルのフォントの自動サイズ調整のチェックをはずしたいのです。 今作成しているグラフは、系列が50以上あるため、いちいちデータラベルをクリックして書式設定ウインドウから選択しなければならず非常に面倒です。 フォントの大きさはブックの「標準フォント」を反映しているようですが、できればこの「標準フォント」は変更せずに、データラベルのフォントの大きさの既定値だけ変更できればなお幸せです。

  • ActiveReport中のフォントサイズ変更

    ActiveReportの中で、文字数によってフォントサイズを変更したいのですが、どこに値をセットすればフォントサイズが変更できるか教えて下さい。

  • ラベルのフォントサイズの変更

    VB.NETでラベルを動的に作成して、 ラベルのフォントサイズを変更したいのですが、 どうやって設定するか分かりません。 (オブジェクト名).Font.sizeはReadOnlyのようですし どなたかご教授いただけないでしょうか? ラベルを作成する部分は問題ないのですが、変更のやり方 が分かりませんどうかよろしくお願いします。

  • フォントサイズ変えたら、文字数行数がおかしく

    マイクロソフトのワードを使って、レポートを書いています。 1ページの設定が、1行25文字。1ページ40行になるように、という指定があります。 これまで、それで問題なくやっていました。 変更がありました。  「あ。でも12ポイント以上の文字の大きさにして」、という新しい条件が付け加わりました。 指示にしたがって、ページ全体のフォントの大きさを10.5 から 12に変えました。 すると、自動的に 【1行22字 1ページも35行】になってしまいました。 今度はこの字数と行数を調節しようと「ページ設定」に行ったのですが、 そこをみると 【1行25文字 1ページ40行】 という設定になっていました。 文字の大きさ 文字数・行数設定 以上2つの条件を同時に満たすためには、どうしたらよいでしょう??

  • Word2003でフォントサイズ変更のショートカットキーはある?

    Word2003でフォントサイズをキーボードのショートカットキーで変更することはできますか(マウスでフォントサイズの数字をクリックするのが面倒なので)?

  • Dreamweaver CS5.5 フォントサイズ

    Dreamweaver CS5.5を使い始めたのですが、フォントサイズの変更方法がわかりません。 ページプロパティから変更出来るのはわかるのですが、ページ全体が変更されてしまい、一部分だけ変更したい場合、どうすればよいのかわかりません。 フォーマットで見出し 1などに切り替えても全体が変わってしまい、マニュアルを見てもわからず質問させて戴きます。 例えば1行ごとに文字サイズを変更するにはどのような手順で操作すればよいのでしょうか?

  • フォントのサイズ変更

    今無料ソフトで日記をつけているのですが、本文中の文字のサイズを一部だけ大きくする方法について <FONT size="1"> などで変更するようにとアドバイスが載っていましたが、この<FONT、、、をどこでどうやって入力して文字を変更するのかわかりません。 パソコン初心者なもので恥ずかしい質問かもしれませんが、よろしくお願いします。

専門家に質問してみよう