
エクセルでインデックスラベルを作成しています。
1シート目に罫線等でラベルの様式を作り、それに文字データを入れ、
2シート目に参照して文字のみ印刷するようにしています。
そこで、文字数が3~8文字ぐらいなのですが、
文字数によってフォントサイズを自動で変更できないかと思っています。
1行に入れる文字数は5文字で、それ以上はAlt改行で2行にしており、
セル内には収まっているので「折り返して全体を表示」や「縮小して全体を表示」ではなく、フォントサイズを変更したいです。
例えば、3文字は11、4文字は10、5文字は9、それ以上の2行になるものは8という風に、
入力すると自動でそのサイズになってほしいです。
その都度サイズ変更するのはかなり手間ですし、参照しているところには、
サイズ変更はされないのでとても時間がかかります。
もし、不可能なのであれば、ショートカットキー(Ctrl+△)などで、
サイズ変更するという方法もあるようなのですが、やり方がわかりません。
素人ですので、あまり難しいことはわかりませんが、ご指導よろしくお願いします。
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
説明不足でご面倒をおかけしたうえ、何度も教えていただきありがとうございます。
おかげさまで、うまくいきました。
私もマクロを勉強しないといけないな、と思わされました。
本当にありがとうございました。
No.4
- 回答日時:
No.2です。
まず最初に確認しておきたいのですが、3シート~4シートというのは入力するシートでしょうか。それとも印刷するシートでしょうか。それによって、その他の質問の回答内容、マクロの内容も変わってくるので、それを教えていただけますか?それでは改めて、
> 他のどのセルも対応するようにするにはどのようにすればいいのでしょうか?
ですが、罫線つきのシートと印刷するシートで対応するセルが1組、というのでなく、複数あるわけですよね。
そうなるとちょっと処理は複雑になりますが、1シート目のセルと2シート目のセルに規則性があれば割と簡単にできると思います。(例えば同じセル番地だとか、1シート目の3つ右のセルだとか)
とりあえず、
・入力する1シート目のセル番地(全て、あるいは規則性があるならその規則)
・それに対応する2シート目のセル番地(上記のセル番地と何らかの規則性があるなら、その規則)
を教えていただけますか?
(ここで上に出てくる3シート目、4シート目というのが上のどちらになるかで処理は変わってきます。3シート目、4シート目がからんでくるのであれば、1シート目、2シート目との関連も補足願えますか?)
それから、
> それから、入力したシートの文字も変えることはできますか
というのは、入力したシートの文字の大きさも同じ大きさに変える、ということでしょうか。
それはもちろんできますが、マクロに手が入るので、上記の事項を補足していただいてから、入力したシートの変更も含めてマクロを修正し、一緒に回答しようかと思います。(先ほど回答したマクロを修正しても、多分再度修正し直す必要がでてきそうなので)
この回答への補足
お手数をおかけする聞き方をしてしまいすいません。
>とりあえず、
>・入力する1シート目のセル番地(全て、あるいは規則性があるならその規則)
入力セルは[B2][F2][J2][N2]そして[B4][F4]・・・という風に
B,F,J,Nの偶数行という感じで続いていきます。
>・それに対応する2シート目のセル番地(上記のセル番地と何らかの規則性があるなら、その規則)を教えていただけますか?
2シート目はすべて1シートと同じセル番地になります。
> それから、入力したシートの文字も変えることはできますか
>というのは、入力したシートの文字の大きさも同じ大きさに変える、ということでしょうか。
はい。1シート目に入力して出来上がりのラベルを確認して、その中の文字のみが2シート目に反映されて、枠付のラベルに印刷できればと思っています。
※3シートと4シートの関係は、1シートと2シートの関係と同じです。色別に2種類のラベルを作成するために分けました。
説明が不十分で何度もご面倒をおかけしてすいません。
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 の部分を、フォントサイズを変えたいセル番地に変えてみてください。
うまくいかないようでしたら、また補足をお願いします。
この回答への補足
早々のご回答ありがとうございます。
B2のセルはうまくいきました。
他のどのセルも対応するようにするにはどのようにすればいいのでしょうか?
また、3シート~4シートも同じようにしたいのですが、シート名の部分をかえるだけでいいのでしょうか?
それから、入力したシートの文字も変えることはできますか?
いくつも質問してすいません。できる部分だけのご回答でかまいませんので、よろしくお願いします。
すいません。補足の質問で、3シート~4シートへの部分はできました。
先程やってみてならなかったので質問したのですが、シート名が間違っていたようで、直したらできました。
その他の2つの質問についてご回答いただければうれしいです。
よろしくお願いします。
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シート目のセルのフォントサイズが文字数に応じて変わります。
この回答への補足
ご回答ありがとうございます。説明不足ですいません。
ラベル自体に枠があるので、それをイメージして入力できるように
罫線等で実際のラベルのように1シート目につくっていて、1シート目に入力をします。
ラベルには枠があり印刷する時は文字のみ印刷されればいいので、
2シート目にはその入力した文字のみが表示されて印刷するようになっています。
ですので、VBAのシートの1と2を逆にすればいいのだと思うのですが、うまくできません。
セルの番地もシート1のB2がシート2のB2になります。
セルの番地を実際のシート構成にあわせるということですが、A1のところをB2にすれば他のセルも対応するんでしょうか?
初歩的なことですいません。VBAが全くわからないので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Gmail 「Andoroidスマホ、Gmailで 文字の大きさの変更はどうすればいいのでしょうか?」 普段、文 1 2023/04/04 17:11
- Illustrator(イラストレーター) イラストレーターでA3用のサイズでポスターを作成しましたが、B5サイズに縮め変更したいです。しかしB 4 2022/07/19 20:30
- Word(ワード) Wordでの印刷サイズについて A4の原稿をB5サイズで出力したいとき、 印刷から用紙サイズの指定か 4 2022/04/30 09:51
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- WordPress(ワードプレス) ワードプレスの表示文字サイズの変更 1 2022/07/22 09:31
- その他(インターネット接続・インフラ) Webサイトのフォント・級数変更について 1 2022/10/18 18:08
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Word(ワード) Word2019と365の互換性について質問 1 2023/06/10 19:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルで、加筆修正したセル...
-
Excelでスクロールすると文字が...
-
EXCELのハイパーリンクのセルを...
-
エクセル ハイパーリンクで画像...
-
ExcelでTODAY関数を更新させな...
-
セルの値と同じ名前のシートを...
-
Excelシートの保護時にデータの...
-
エクセルで複写のように自動入...
-
エクセルで指定のセルのみ完全...
-
複数シートの同じセル内容を1シ...
-
エクセルの文字
-
マクロ 新しいシートにデータ...
-
別シートのセルを絶対参照にする
-
マクロ セルに入力されたシー...
-
excelでハイパーリンクになって...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iPhoneのExcelアプリで、別のシ...
-
Excelの「0」だけ非表示、小数...
-
Excelで複数シートの選択セルを...
-
Excelシートの保護時にデータの...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
ExcelでTODAY関数を更新させな...
-
EXCELのハイパーリンクのセルを...
-
別シートのセルを絶対参照にする
-
Excelでスクロールすると文字が...
-
複数シートの同じセル内容を1シ...
-
マクロ 新しいシートにデータ...
-
エクセルで複写のように自動入...
-
エクセルで、加筆修正したセル...
-
エクセル ハイパーリンクで画像...
-
ハイパーリンク で『指定された...
-
エクセルで20万行あるシート...
-
エクセルで特定のセルの値を別...
-
INDIRECT(空白や()がある文字列...
おすすめ情報