エクセルでインデックスラベルを作成しています。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで1月0日と表示される!!
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルの文字
-
Rangeメソッドは失敗しました。...
-
エクセルで条件に一致したセル...
-
マクロ 新しいシートにデータ...
-
別シートのセルを絶対参照にする
-
ExcelでTODAY関数を更新させな...
-
複数シートの同じセル内容を1シ...
-
エクセルでシート保護をかける...
-
Excelシートの保護時にデータの...
-
Excelのファイル容量が減らない...
-
シート参照で変数を使いたい(EX...
-
(Excel)あるセルに文字を入力...
-
エクセルで、加筆修正したセル...
-
エクセルで別シートからの最大...
-
エクセルで20万行あるシート...
-
VBAで、セル(Range)のオブジ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルで1月0日と表示される!!
-
エクセルで条件に一致したセル...
-
Rangeメソッドは失敗しました。...
-
別シートのセルを絶対参照にする
-
シート参照で変数を使いたい(EX...
-
Excelシートの保護時にデータの...
-
複数シートの同じセル内容を1シ...
-
エクセルで複写のように自動入...
-
エクセルの文字
-
Excelでスクロールすると文字が...
-
(Excel)あるセルに文字を入力...
-
Excelのファイル容量が減らない...
-
マクロ 新しいシートにデータ...
-
エクセルで別シートからの最大...
-
ExcelでTODAY関数を更新させな...
-
エクセルのセルに、マウスで選...
-
EXCELマクロで、シート間でのコ...
おすすめ情報