• 締切済み

Excelで数字に合わせて行の高さを変更する方法

例としまして,ある列に 10 3 15 16 14 13.5 9 3.5 と数字が入力されています。 これを,10と入力されている行は高さ10ポイントに,3と入力されている行は高さ3ポイントに一括で変更する方法はありますでしょうか。 どうかご教示お願いいたします。

みんなの回答

回答No.3

因みに。 RowHeightプロパティには「ピクセル数を指定しなければならない」ので、当方の回答のように「何らかの方法で、文字のポイントの数値を、ピクセルの数値に変換してあげる必要」があります。 他の回答のように「数値を直にRowHeightプロパティに代入」しても、質問者さんの希望通りにはならないです。 ポイント数をピクセル数に変換する関数を自前で用意するなど、何らかの工夫が必要になります。

回答No.2

以下のマクロは、A列に入っている数値をポイント数(フォントのサイズに指定する数値)として、行の高さを変更します。 Sub Macro1()   For i = 1 To Rows.Count      If (Not IsEmpty(Cells(i, 1))) And IsNumeric(Cells(i, 1).Value) Then       sz = Rows.Item(i).Font.Size       Rows.Item(i).Font.Size = Cells(i, 1).Value       ht = Rows.Item(i).RowHeight       Rows.Item(i).Font.Size = sz       Rows.Item(i).RowHeight = ht     End If   Next End Sub 但し、A列に何も入力されていない行は何もしません。 このマクロは「行の高さを手動で変更されてない行は、フォントのサイズに合わせて、行の高さが自動調整される」と言う機能を利用しています。 なので「フォントサイズを変えても、行の高さが自動調整されないシートやブック」では使用できません。 また、フォントサイズに指定できない数値が入力されていた場合は、マクロの実行中にエラーになります。 なお、副作用として「セルに指定してあるフォントサイズが、すべてA列で統一される」ので、ご注意を。 副作用を防ぐ場合は、マクロで、以下の処理を追加して下さい。 1.作業用シートを新規作成 2.作業用シートに元のシートのA列を全てコピー 3.作業用シートに対し上記マクロを実行 4.作業用シートのすべての行のRowHeightプロパティの値を、元のシートのすべての行のRowHeightプロパティに代入 5.作業用シートを削除 提示したマクロに、前半に上記1~2、後半に4~5の処理を追加すれば、副作用は起きず「行の高さのみが変更され、他は変更されない」ようになります。

chamuji_vv
質問者

補足

初心者で申し訳ありませんが, 4.作業用シートのすべての行のRowHeightプロパティの値を、元のシートのすべての行のRowHeightプロパティに代入 のやり方がわかりません。 試しに「形式を選択して貼り付け」で実行しようとしたら,列幅の貼り付けはあるのに行の高さの貼り付けはないようでした。 もしお手数でなければ上記の具体的な方法を教えていただけますとありがたいです。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

VBAであれば実行可能ですけど。。。 一例ですが Sub Cell_High() For Each RG In Range(Range("A1"), Range("A1").End(xlDown)) If IsNumeric(RG) And RG <> "" Then RG.RowHeight = RG End If Next RG End Sub

関連するQ&A