プロが教えるわが家の防犯対策術!

表のレイアウト変更をするマクロを作成しております。

列の幅は
Columns("X").ColumnWidth = 30 'X列の幅30

フォントの位置、サイズは
Columns("X").HorizontalAlignment = xlCenter 'X列の横位置
Columns("X").VerticalAlignment = xlCenter 'X列のタテ位置
Columns("X").Font.Size = 16 'X列のフォントサイズ

で何とかなったのですがセルの高さが変更できません。

Rows(3).RowHeight = 50  '3行目の高さ50
Rows("3:10").RowHeight = 50  '3から10行目の高さ50

くらいまではわかります。
ですが、シート全体とか入力されている最終行までの行の高さを変更する方法がわかりません。

素人の考えですが、以下の通りでできると思っていました。
-----------
Sub Macro1()
n = Cells(Rows.Count, "C").End(xlUp).Row 'C列の最終行まで
Rows(n).RowHeight = 50
End Sub
-----------

ですが、実際に実行してみたところ、どういうわけか、
エラーは出ないものの行の高さが「50」になりません。

すいませんが詳しい方、説明の上手な方、直接、コードで説明できる方、
お手数ですが教えて下さい。よろしくお願いします。

追記
すいませんが以下の3点は設定上ハズせません。

1)幅を変えるのは3行目から最終行までです。
1行目と2行目には日付、etc.の項目行が入っていますので。

2)表には途中に空欄がありスカスカです。

3)3行目以下でしたら最終行まででなく列全体(=シート全体)の高さが「27」になっても大丈夫です

質問者からの補足コメント

  • HAPPY

    みなさんいろいろありがとうございます。
    この機能はよく使うので、基礎的なことで確認したいことがあります。
    全部確認したいのであとで全部確認してお礼を書きます。

    取り急ぎ、全体のお礼のコメントだけ記載しておきます。
    いろいろありがとうございます。

      補足日時:2016/07/29 16:11

A 回答 (5件)

こんなのはいかがでしょうか?


---------------------------------------------------------------------------------
Sub test()
Rows("3:" & ActiveSheet.UsedRange.Rows.Count).RowHeight = 50
End Sub
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。

Rows("3:" & ActiveSheet.UsedRange.Rows.Count).

こんな範囲指定のやり方があるんですね。
覚えておきます。
機会がありましたらまたお願いします。

※間違えてNo.4さんへのお礼が、No.3のところに入ってしまいました。
すいません。改めて、こちらでお礼させて頂きます。
今回はありがとうございました。

お礼日時:2016/07/30 00:39

No.1 の補足です。


一度高さを変えてしまった行はデータを削除しても、使われている事になってしまいます。(もちろん行削除した場合には反映されます)
たとえば200行までデータがあった状態で実行すると、200行まで変更されます。次に150行以降のデータを[Delete]キーなどで削除した状態で、高さを「70」にして実行すると元の200行までの高さを70にします。
    • good
    • 0

最終行までならもっと簡単に


---------------------------------------------------------------------------------
Sub test()
Rows("3:" & Rows.Count).RowHeight = 50
End Sub
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。

ほぼお考えの通りで宜しいかと思います。
ただし、
>Rows(n).RowHeight = 50
ですと、n行(=最終行)だけの高さを50に設定することになっていませんか。

その通りでした。

でも、なさりたいことは、3~n行までの高さを設定したいのでしょうから
例えば、対象とする行で繰り返すことにすれば、
For rw = 3 To n
  Rows(rw).RowHeight = 50
Next rw
みたいにすれば可能ですね。

まさにこれでした。やっと変数を使うところまできたので、
始まりと終わりのことまで考えが至りませんでした。

質問をよく読んでからご解答して頂き、本当にありがとうございます。
また機会がありましたらよろしくお願いします。
今回はありがとうございます。

お礼日時:2016/07/30 00:34

こんにちは



ほぼお考えの通りで宜しいかと思います。
ただし、
>Rows(n).RowHeight = 50
ですと、n行(=最終行)だけの高さを50に設定することになっていませんか。

>エラーは出ないものの行の高さが「50」になりません。
ちゃんと実行されて、最終行の高さが50になっているものと想像します。

でも、なさりたいことは、3~n行までの高さを設定したいのでしょうから
例えば、対象とする行で繰り返すことにすれば、
For rw = 3 To n
  Rows(rw).RowHeight = 50
Next rw
みたいにすれば可能ですね。

一方で、手作業でも同じですが、一行々々を設定してゆくよりもまとめて選択して設定してしまう方が簡単で早いですね。
まとめて指定する方法はいろいろ考えられます。
 Rows("3" & n).RowHeight = 50
とか
 Rows(3).Resize(n - 2).RowHeight = 50
実際には、行全体を選択しなくてもセルの高さを指定すれば結果は行全体に及ぶので、
 Range("A3").Resize(n - 2).RowHeight = 50
などでも可能です。
状況に応じて、指定しやすい方法を利用なさるのが良いと思います。
    • good
    • 2
この回答へのお礼

ご解答ありがとうございます。

ほぼお考えの通りで宜しいかと思います。
ただし、
>Rows(n).RowHeight = 50
ですと、n行(=最終行)だけの高さを50に設定することになっていませんか。

その通りでした。

でも、なさりたいことは、3~n行までの高さを設定したいのでしょうから
例えば、対象とする行で繰り返すことにすれば、
For rw = 3 To n
  Rows(rw).RowHeight = 50
Next rw
みたいにすれば可能ですね。

まさにこれでした。やっと変数を使うところまできたので、
始まりと終わりのことまで考えが至りませんでした。

質問をよく読んでからご解答して頂き、本当にありがとうございます。
また機会がありましたらよろしくお願いします。
今回はありがとうございます。

お礼日時:2016/07/30 00:35

こんにちは。



スタンタードの行全体の高さを変えて、1~2を元の高さに戻す方法にすると良いと思います。

この場合は、表の最後尾まで触れていませんので、データのある所までしか、使われていません。ファイルは小さいままで済みます。

その後でフォントの大きさを変えないと、それに合うようにセル幅を変えてしまいます。なお、高さは完全な50にはたぶんならないと思います。ピクセルが優先されていますので、丸められてしまいます。

'//
Sub ChangeRowHeight1()
Dim OrgRowHeight As Double
With ActiveSheet
  OrgRowHeight = .Cells(1, 1).RowHeight
  .Cells.Rows.RowHeight = 50#
  .Rows("1:2").RowHeight = OrgRowHeight ' または、スタンダード 13.5
 
  .Columns("X").ColumnWidth = 30 'X列の幅30
  'フォントの位置、サイズは
  .Columns("X").HorizontalAlignment = xlCenter
  .Columns("X").VerticalAlignment = xlCenter
  .Columns("X").Font.Size = 16 'X列のフォントサイズ 'ここは重要
End With
End Sub
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます。
この前は http://bit.ly/2awqTb2 の件、ありがとうございました。

いつも詳しいご解答ありがとうございます。

今回は質問の内容をよく読んで返答して頂いたfujillinさんがベストアンサーですが、
また機会がありましたらよろしくお願いします。

ご解答ありがとうございます。

お礼日時:2016/07/30 00:46

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

このQ&Aを見た人はこんなQ&Aも見ています