1つだけ過去を変えられるとしたら?

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/10 16:43

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種類のラベルを作成するために分けました。

説明が不十分で何度もご面倒をおかけしてすいません。

補足日時:2007/04/09 22:51
    • good
    • 0

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シートも同じようにしたいのですが、シート名の部分をかえるだけでいいのでしょうか?
それから、入力したシートの文字も変えることはできますか?

いくつも質問してすいません。できる部分だけのご回答でかまいませんので、よろしくお願いします。

補足日時:2007/04/09 21:33
    • good
    • 0
この回答へのお礼

すいません。補足の質問で、3シート~4シートへの部分はできました。
先程やってみてならなかったので質問したのですが、シート名が間違っていたようで、直したらできました。

その他の2つの質問についてご回答いただければうれしいです。
よろしくお願いします。

お礼日時:2007/04/09 21:52

「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が全くわからないので。

補足日時:2007/04/09 19:57
    • good
    • 0

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

    • good
    • 0

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


おすすめ情報