MENU  □ MANUAL  □ 新着記事  □ 新規トピック追加  □ トピック一覧  □ SEARCH  □ 過去ログ
ログ内検索
・ キーワードを複数指定する場合は 半角スペース で区切ってください。
・ 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
・ 過去ログから探す場合は過去ログをチェック。
・ 過去ログは番号が大きいほど新しいログです。

キーワード/
検索条件/ (AND) (OR)
検索範囲(現在のログ)
(過去ログ1) (過去ログ2) (過去ログ3) (過去ログ4) (過去ログ5)
(過去ログ6) (過去ログ7) (過去ログ8) (過去ログ9) (過去ログ10)
(過去ログ11) (過去ログ12) (過去ログ13) (過去ログ14) (過去ログ15)
(過去ログ16) (過去ログ17) (過去ログ18) (過去ログ19) (過去ログ20)
(過去ログ21) (過去ログ22) (過去ログ23) (過去ログ24) (過去ログ25)
(過去ログ26) (過去ログ27) (過去ログ28) (過去ログ29) (過去ログ30)
(過去ログ31) (過去ログ32) (過去ログ33) (過去ログ34) (過去ログ35)

過去ログ15 を検索

HIT数 / 6件
NO.113195  結合セルの文字列をピッタリ表示される方法
■投稿者/ Rocker
■投稿日/ 2008/08/28(00:11)
□URL/

お世話になります。

あるEXCELシートのよくあるユーザーが作成したフォーム(報告書の類)が
あります。その記述フィールドは複数のセルを結合させています。列幅は
調整することが禁じられていますが、記述フィールドが足りない場合は、行の
高さを広げることで入力文字数を増やすことができます。

手入力でこの報告書に入力する場合は、報告文が多少長くなっても行高さを
調整すマニュアルで程よく調整できるので普段は問題ありません。ところが
このたび、この報告書をVBAで自動作成することになりました。
報告文の記述は、1行の場合もあるいし、10行以上になる場合もありデータ量
が一定ではありません。入力した文字数に合わせて行の高さを調整するスマート
な方法をご存知ないでしょうか。

セルが結合されていない1つのセルの場合は、行に対してAutoFitをすれば
高さがピッタリに調整されるのですが、結合セルではAutFitすると1行デフォルト高さに強制設定されて1行分しか報告文が見えなくなってしまいます。

入力フィールドの列幅は固定なので、1行当たり折り返しなく入力できる文字数
を数えておいて、入力する文字数をその1行当たりの文字数で割り、何行分の
文字列なのかを得て、それに合う行高さを設定すればよいと思いますが・・・
もっとスマートな方法はないでしょうか。(この方法ではフォントサイズが
変更されると使えません。)
尚、結合セル配置仕様は、折り返して全体表示、左詰め、上詰めです。

何かよいテクニックがあればアドバイスいただけないでしょうか。



















++++++++++++++++++++
OS      ⇒Windows XP
Version⇒Excel 2003
++++++++++++++++++++
親記事
削除チェック/

NO.113197  Re[1]: 結合セルの文字列をピッタリ表示される方法
■投稿者/ Rocker
■投稿日/ 2008/08/28(05:57)
□URL/

お世話になります。説明の記述がわかりにくかったので簡潔に書き直させてく
ださい。

再現方法:

Sub test()
'下記のようにひとつのセルに長い文字列を入れた場合は、AutoFitする
  ’ことで全文字列が表示されるようにそのセル高さが自動調整される。

With Range("A1")
'マージなし .MergeCells = True
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = True
.Value = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
.EntireRow.AutoFit
End With

  ’ところが、下記のように複数のセルを結合させた領域に長い文字列
  ’を入力してAutoFitしてもデフォルトのセル高さに強制設定されて
  ’しまい、入力した文字列をすべて表示できない。
  ’結局画面を見ながら手動でセルの高さを調整するしかない。
  ’
  ’質問:
  ’VBAを使って入力される文字のフォントの種類、サイズにかかわらず、
  ’結合セルに入力した文字列全体が表示できるセル高さに調整すること
  ’はできないでしょうか。
  ’
With Range("A2:B2")
.MergeCells = True
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = True
.Value = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
.EntireRow.AutoFit
End With


End Sub



この記事にはVBAのコードが含まれています。

緑の太文字→注釈
茶色の太文字→条件分岐
赤の太文字→ループ
青の太文字→その他



++++++++++++++++++++
OS      ⇒Windows XP
Version⇒Excel 2003
++++++++++++++++++++
記事NO.113195 のレス /
削除チェック/

NO.113204  Re[2]: 結合セルの文字列をピッタリ表示される方法
■投稿者/ apple
■投稿日/ 2008/08/28(10:55)
□URL/

こんにちわ

ちょっと以下を試してみて下さい。

Sub Test_1() ' まっさらな行に実行
With Range("A3:B3")
.UnMerge
.Clear
.Cells(1).Value = String(47, "a")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlTop
.WrapText = True
.Merge
.HorizontalAlignment = xlLeft
End With
End Sub

Sub Test_2() ' 確実に実行
Dim MyA As Variant

With Range("A3:B3")
' C列 以降同行の情報
MyA = .EntireRow.Cells(3).Resize(, Columns.Count - 2).Formula
' ↓ 何処かまっさらな行をコピー
.Worksheet.Rows(10000).Copy .EntireRow
.Cells(1).Value = String(47, "a")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlTop
.WrapText = True
.Merge
.HorizontalAlignment = xlLeft
.EntireRow.Cells(3).Resize(, Columns.Count - 2).Formula = MyA
End With
Erase MyA
End Sub


この記事にはVBAのコードが含まれています。

緑の太文字→注釈
茶色の太文字→条件分岐
赤の太文字→ループ
青の太文字→その他
記事NO.113195 のレス /
削除チェック/

NO.113209  Re[3]: 結合セルの文字列をピッタリ表示される方法
■投稿者/ Rocker
■投稿日/ 2008/08/28(13:53)
□URL/

appleさん、
ご提案の方法で私の問題は解決できました。本当にありがとうございました。

ところで、もしご存知でしたら参考のため下記の2点を教えていただけますで
しょうか。

1.教えていただいた手順を手動で操作するとVBA実行と結果が異なりました。
手動の場合、最後のMergeの操作で行の高さがかなり大きくなりぴったりに
なりません。

2.まっさらなセルの上で操作しないと求められる結果が得られません。(
アドバイスのとおり)。

上記2点には、それぞれ何か理屈があるのでしょうか。

appleさんがどのようにして今回の解決方法を見つけられたのかとても不思議
です。偶然見つけられのでしょうか。

いずれにせよ、すごい裏技だと感心しきりです。
ありがとうございました。
記事NO.113195 のレス /
削除チェック/

NO.113215  Re[4]: 結合セルの文字列をピッタリ表示される方法
■投稿者/ apple
■投稿日/ 2008/08/28(15:10)
□URL/

こんにちわ

>上記2点には、それぞれ何か理屈があるのでしょうか
それはわたしには分かりません。

' 実はずっと前に「同様の質問」がありました。

>どのようにして今回の解決方法を見つけられたのか
結合してない複数列範囲(1行)において、長い文字列を入力して
「書式」→「セル」→「配置」として、
「横位置:選択範囲内で中央」、「文字の制御:折り返して全体を表示する」とした時
「行高」が「自動的に調整される場合」と「調整されない場合」があることには気付いていました。

その理由について、色々とやってみた時
何もいじっていない新規シートのセルならば「自動的に調整される」という事に気付きました。
ならば、下方のまっさらな行をコピーしてみたらどうだろうと試してみた結果が今回のコードです。
(それを「結合セルの場合」にということで多少アレンジしてます。)
記事NO.113195 のレス /
削除チェック/

NO.113225  Re[5]: 結合セルの文字列をピッタリ表示される方法
■投稿者/ Rocker
■投稿日/ 2008/08/28(17:20)
□URL/

appleさん、ありがとうございました。
記事NO.113195 のレス / END
削除チェック/


パスワード/

- Child SEARCH -