こんにちは。
マクロやVBAの知識が乏しいため非常に困っています。
エクセルにてシート(1)から
文字をとっているシート(2)があるのですが
文字数が多くなるとシート(2)のほうがセルからはみ出てしまいます。
そこで文字数でフォントサイズを変更したいと考えました。
19文字以上ならサイズを14に。。という具合に自動でできるコードを
ご教授願えないでしょうか?
よろしくお願いします。
また、それ以外に良いものがあればそれを採用したいとも考えています。
以下条件になります。
シート(1)のA1の文字が15文字以下ならシート(2)のB2のサイズを18に
シート(1)のA1の文字が16文字以上ならシート(2)のB2のサイズを16に
シート(1)のA1の文字が19文字以上ならシート(2)のB2のサイズを14に
シート(1)からシート(2)へ文字を反映している箇所が4か所
その4か所を1番長い文章のフォントサイズで統一したい。
No.3ベストアンサー
- 回答日時:
こんばんは。
前回のコードを直してみました。
Sheet1のマクロ画面に、上書きして試してください。
すでに書かれている場合は、1列目にどこかで、Enter を入れれば、このコードは可動します。
ただ、これが自動制御でなければ、ボタンにして可動するようにしてしまうことも良いかと思います。
'//シートモジュール
Private Sub Worksheet_Change(ByVal Target As Range)
Dim fnt As Integer
Dim opRng As Range
Dim maxLen As Long '最大の文字長
Dim c As Range
With Worksheets(2)
Set opRng = .Range("B2", .Cells(Rows.Count, "B").End(xlUp)) '対象のセル群
If WorksheetFunction.CountA(opRng) = 0 Then Exit Sub '対象セル群の文字列等が一切ない場合
End With
If Target.Column <> 1 Then Exit Sub '1列目以外は除外
If Target.Count > 1 Then Exit Sub '複数のセルの時除外
If Target.Value = "" Then Exit Sub '空白または削除では作動しません。
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
If c.Value > "" Then
If maxLen < Len(c.Value) Then
maxLen = Len(c.Value)
End If
End If
Next
Select Case maxLen
Case Is >= 19: fnt = 14
Case Is >= 16: fnt = 16
Case Is >= 1: fnt = 18
End Select
opRng.Font.Size = fnt
End Sub
お世話になります。
前回からありがとうございます。
前回は文字サイズの統一が抜けてしまっていて
二度手間になって申し訳ないです。
No.4
- 回答日時:
みやたろすさん、文書の説明と画像の内容に矛盾があるようですが、大丈夫ですか?
Sheet2のA2、A5、A8、A10に表示されている文字数によって、同セルのフォントサイズを決定すれば良いのですよね。また、同セルは、数式でSheet1を参照しているのですよね。であれば、Sheet2のCalculateイベントプロシジャに下記のコードを仕込むのが良いと思います。
Private Sub Worksheet_Calculate()
Dim myRng As Range
Dim r As Range
Dim maxLen As Long
Set myRng = Me.Range("A2,A5,A8,A10")
For Each r In myRng
If Len(r.Text) > maxLen Then maxLen = Len(r.Text)
Next r
Select Case maxLen
Case Is <= 15
myRng.Font.Size = 18
Case Is >= 19
myRng.Font.Size = 14
Case Else
myRng.Font.Size = 16
End Select
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
昨日見た夢を教えて下さい
たまにすごいドラマチックな夢見ること、ありませんか? 起きてからも妙に記憶に残っているような、そんな夢。
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
VBAで条件によりフォントサイズを自動で変更したい
Excel(エクセル)
-
セルの書式設定のフォントやサイズの設定はできないの
Excel(エクセル)
-
セルの条件によってフォントサイズを変更したい。
Excel(エクセル)
-
-
4
エクセルで折り返しと縮小の同時設定は無理?
Excel(エクセル)
-
5
エクセル関数について(フォントサイズ変更)
Excel(エクセル)
-
6
Excel VBAで文字列の可視長を得るにはどうしたよいでしょうか?
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
9
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
10
excel:条件付きでセルの文字サイズを変える方法は?
Excel(エクセル)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
13
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
14
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
15
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
16
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
17
Excel VBAで、 ヘッダーへのセル値の「位置」「フォントサイズ」変更は?
Visual Basic(VBA)
-
18
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
19
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
20
Excel-VBA>コントロールをグレイアウトするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
Excelのシートを、まとめて表示...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
エクセルVBAでパスの¥マークに...
-
エクセルで前シートを参照して...
-
Excelで金銭出納帳。繰越残高を...
-
至急お願いします。エクセルシ...
-
excelでシート毎の最終更新日を...
-
EXCEL:同じセルへどんどん足し...
-
エクセル 計算式も入っていない...
-
特定のシートの削除を禁止した...
-
前の(左隣の)シートを連続参...
-
シート1に列挙したNGワードを...
-
シート名ではなく、相対位置で...
-
Accessのスプレッドシートエク...
-
Accessのマクロを使用してExcel...
-
シート番号からシート名を取得する
-
複数シートの特定の位置に連番...
-
シートの保護のあとセルの列、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルVBAでパスの¥マークに...
-
前の(左隣の)シートを連続参...
-
EXCEL:同じセルへどんどん足し...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
エクセルのシート名をリスト化...
-
Excelのシートを、まとめて表示...
-
VBAでシートコピー後、シート名...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
シートの保護のあとセルの列、...
-
エクセルで複数設定したハイパーリンク先...
-
エクセル 計算式も入っていない...
-
EXCELで1ヶ月分の連続した日付...
-
Excel、同じフォルダ内のExcel...
-
Accessのスプレッドシートエク...
-
EXCELで同一フォーマットのシー...
-
excelでシート毎の最終更新日を...
おすすめ情報