プロが教える店舗&オフィスのセキュリティ対策術

Excel(97 for Win / 98 for Mac)にて、折り返しによる複数の行を含むセル
がある行の高さを、一括で指定する方法は無いでしょうか?
自動設定にすると、セル内部の行数に応じた高さになりますが、その場合は、
あくまでも自動設定で、希望の高さより狭くなってしまったりします。

つまり、例えば、
内部に1行しか含まない行は 30
内部に2行を含むセルがある行は 60
内部に3行を含むセルがある行は 90
というように、内部に含む”折り返し行数”当たりの行の高さの指定を
するということです。

手作業で合わせるというのが、一回限りの操作としては一番安易ですが、
かなりの行数・折り返し行数のばらつきの多さから、少々しんどいのです。
おそらく、マクロが書ければ解決しそうですが、マクロの知識はほとんど
ありません。これを機会に覚えるというのも選択肢かとも思いますが、
簡単な解決法がありましたら教えてください。

A 回答 (3件)

#1のものです。

VBAになりますが、
Sub test01()
Dim sh1 As Worksheet
Set sh1 = Worksheets("sheet1")
MsgBox sh1.Cells(1, 1).RowHeight & "の整数倍の行高にします。"
For i = 1 To 3
a = sh1.Cells(i, 1)
s = 1
bairitu = 1
p01:
p = InStr(s, a, Chr(10), 1)
If p = 0 Then GoTo p02
MsgBox p
bairitu = bairitu + 1
s = p + 1
GoTo p01
p02:
sh1.Cells(i, 1).RowHeight = bairitu * sh2.Cells(1, 1).RowHeight
Next i
End Sub
Sheet1でA列に文字を入れるとして、A1に望みの
行高を設定しA2以下データを入れてみてください。
入力が終わったら、上記を実行してみてください。
改行した数の整数倍分だけ行高が増えるはずです。
考えておられることに基本線が合っておれば、後の改良は更なる要望を上げていただければ考えます。
データ入力セルは、書式-セル-配置-折り返して全体を表示にして 、改行はALT+Enterキーで改行してください。
    • good
    • 1
この回答へのお礼

ありがとうございました。

下記のように、試行錯誤で一部改変して、ほぼ思い通りの結果を得られる
ようになりました。(ヘルプと、かつて少しだけかじったBasicの知識で
かなり試行錯誤した結果です。)

欲を言うと、明示的に改行してある行数だけではなく、自動改行で折り返されて
いる場合も行数としてカウントできると完璧なのですが、それはちょっと無理
ですよね?

あと、均等割付にすると上下がいっぱいのところまで来てしまって、上下のセル
との間隔が狭くなってしまうので、縦位置は中央詰めにしています。そうすると、
単純に整数倍では上下の余白が大きくなりすぎるために、0.7倍してみました。
実は、この機能を使うのは私ではなくて、さらにエクセル初心者の人ですので、
この、2行以上の時の増分をフォントサイズとA1の高さから自動で求められれば
更にいいのです。が、それはなんとかできそうな気がしますので、練習を兼ねて
もうすこし自分で工夫してみようと思います。

Sub gyou_takasa()
Dim sh1 As Worksheet
Rem Set sh1 = Worksheets("sheet1")
Set sh1 = ActiveSheet
MsgBox sh1.Cells(1, 1).RowHeight & "の整数倍の行高にします。"
For i = 1 To Selection.Rows.Count
For j = 1 To Selection.Columns.Count
a = sh1.Cells(i, j)
s = 1
bairitu = 1
bairitumax = 1
p01:
P = InStr(s, a, Chr(10), 1)
If P = 0 Then GoTo p02
Rem MsgBox p
bairitu = bairitu + 1
s = P + 1
GoTo p01
p02:
If bairitu > bairitumax Then bairitumax = bairitu
Next j
p03:
If bairitumax > 1 Then bairitumax = (bairitumax - 1) * 0.7 + 1
sh1.Cells(i, 1).RowHeight = bairitumax * sh1.Cells(1, 1).RowHeight
Next i
End Sub

お礼日時:2002/12/03 14:35

すでにマクロの例が出されていますが、せっかく記述したので、レスします。


こちらは、セルのダブルクリックによる処理ですが‥‥。

得意分野でないので拙い表記ですが、誰か得意な方のフォローがあればいいですね。

[Alt]+[F11] で Visual Basic Editor を起動させ、Sheet?(Sheet?) をダブルクリックして表示されるエディタに次のモジュールをコピペして、Visual Basic Editor を終了してください。

-------------- コピーは次の行から
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
DT = Target.Value
N = 0
For P = 1 To Len(DT)
If Mid(DT, P, 1) = Chr(10) Then N = N + 1
Next P
Select Case N
Case Is = 0
Selection.Rows.RowHeight = 18
Case Else
Selection.Rows.RowHeight = N * 15 + 18
End Select
With Selection
.VerticalAlignment = xlCenter
.WrapText = False
.Columns.AutoFit '※
End With
End Sub
-------------- コピーは前の行まで

当該セルをダブルクリックすると、セル高が自動設定されます。
ここでは、1行データのセル高を 18、1行増えるごとに 15 づつ増えるようにしてあります。

列幅を自動変更しない場合は、※つき行のコマンドの先頭に ' をつけてください。
'.Columns.AutoFit
また、'※ は削除してもOKです。
    • good
    • 0
この回答へのお礼

ありがとうございました。

行数が多いため、一括で処理できるNo.2の方の方法を使わせていただく
ことになりましたが、今後の参考にさせていただきたいと思います。
(やはり、マクロがかけると便利だなと実感しましたので、ちょっと勉強
してみようかという気になりました。)

お礼日時:2002/12/03 14:38

書式-行-高さ-自動調節にして


書式-セル-配置-折り返して全体を表示にして
書式-セル-配置-縦位置を上詰めにして
セルの入力時にALT+Enterキーで改行すれば
ご希望に近いようになるのではないですか。
行高はフォントサイズで決まるようになります。
    • good
    • 0
この回答へのお礼

早速のアドバイスありがとうございます。
質問が少々舌足らずでした。
アドバイス頂いた内容まではわかっているのですが、行高をフォントサイズ
で決まるものと異なる(具体的には、もう少し広く)したいのです。
と、なると、やはり、他の質問の解答に出てくるように、
「改行幅を指定する方法は無い」
という結論に行き着かざるをえないのでしょうか…。

お礼日時:2002/12/02 15:23

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