
表のレイアウト変更をするマクロを作成しております。
列の幅は
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」になっても大丈夫です
No.4ベストアンサー
- 回答日時:
こんにちは
ほぼお考えの通りで宜しいかと思います。
ただし、
>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
などでも可能です。
状況に応じて、指定しやすい方法を利用なさるのが良いと思います。
ご解答ありがとうございます。
ほぼお考えの通りで宜しいかと思います。
ただし、
>Rows(n).RowHeight = 50
ですと、n行(=最終行)だけの高さを50に設定することになっていませんか。
その通りでした。
でも、なさりたいことは、3~n行までの高さを設定したいのでしょうから
例えば、対象とする行で繰り返すことにすれば、
For rw = 3 To n
Rows(rw).RowHeight = 50
Next rw
みたいにすれば可能ですね。
まさにこれでした。やっと変数を使うところまできたので、
始まりと終わりのことまで考えが至りませんでした。
質問をよく読んでからご解答して頂き、本当にありがとうございます。
また機会がありましたらよろしくお願いします。
今回はありがとうございます。
No.5
- 回答日時:
こんにちは。
スタンタードの行全体の高さを変えて、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
ご解答ありがとうございます。
この前は http://bit.ly/2awqTb2 の件、ありがとうございました。
いつも詳しいご解答ありがとうございます。
今回は質問の内容をよく読んで返答して頂いたfujillinさんがベストアンサーですが、
また機会がありましたらよろしくお願いします。
ご解答ありがとうございます。
No.3
- 回答日時:
最終行までならもっと簡単に
---------------------------------------------------------------------------------
Sub test()
Rows("3:" & Rows.Count).RowHeight = 50
End Sub
ご解答ありがとうございます。
ほぼお考えの通りで宜しいかと思います。
ただし、
>Rows(n).RowHeight = 50
ですと、n行(=最終行)だけの高さを50に設定することになっていませんか。
その通りでした。
でも、なさりたいことは、3~n行までの高さを設定したいのでしょうから
例えば、対象とする行で繰り返すことにすれば、
For rw = 3 To n
Rows(rw).RowHeight = 50
Next rw
みたいにすれば可能ですね。
まさにこれでした。やっと変数を使うところまできたので、
始まりと終わりのことまで考えが至りませんでした。
質問をよく読んでからご解答して頂き、本当にありがとうございます。
また機会がありましたらよろしくお願いします。
今回はありがとうございます。
No.2
- 回答日時:
No.1 の補足です。
一度高さを変えてしまった行はデータを削除しても、使われている事になってしまいます。(もちろん行削除した場合には反映されます)
たとえば200行までデータがあった状態で実行すると、200行まで変更されます。次に150行以降のデータを[Delete]キーなどで削除した状態で、高さを「70」にして実行すると元の200行までの高さを70にします。
No.1
- 回答日時:
こんなのはいかがでしょうか?
---------------------------------------------------------------------------------
Sub test()
Rows("3:" & ActiveSheet.UsedRange.Rows.Count).RowHeight = 50
End Sub
ご解答ありがとうございます。
Rows("3:" & ActiveSheet.UsedRange.Rows.Count).
こんな範囲指定のやり方があるんですね。
覚えておきます。
機会がありましたらまたお願いします。
※間違えてNo.4さんへのお礼が、No.3のところに入ってしまいました。
すいません。改めて、こちらでお礼させて頂きます。
今回はありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 最終行の指定について教えてください。 複数シートを1シートへまとめる下記マクロでは各シートの6行目を 1 2022/10/04 18:37
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで文字列を数値に変換したい
Excel(エクセル)
-
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
5
Excel VBAで、行の高さを、上下1文字分程度高くしたい
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
エクセル「折り返して全体を表示」での折り返しの行数取得方法
Excel(エクセル)
-
8
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
9
文字列の結合を空白行まで実行
Visual Basic(VBA)
-
10
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】【画像あり】関数が...
-
Excel2017 フィルタ昇順並びがA...
-
エクセルの時刻のカウントが出...
-
エクセルで行の高さ及び列幅の...
-
【マクロ】並び替えの範囲が、...
-
【Excel VBA】指定した行の最大...
-
EXCELで日付を比べ3か月以内の...
-
エクセル VBA 行間隔を飛ばした...
-
オートフィルタ後のデータから...
-
基準日以前のデータを範囲を指...
-
VBA 配列で型がエラーになります。
-
excel / ピポッド 日数を出したい
-
行の一番右のデータセルと同じ...
-
急ぎ!色のついたセルを非表示...
-
エクセル関数について
-
Excelで並び替え後にア行...
-
EXCEL 最終行のデータを他のセ...
-
マクロで行の高さを設定したい
-
エクセルで円グラフに引き出し...
-
エクセルの主軸と第2軸の0を合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
【マクロ】並び替えの範囲が、...
-
Excelで並び替え後にア行...
-
エクセルで行の高さ及び列幅の...
-
【Excel VBA】指定した行の最大...
-
オートフィルタ後のデータから...
-
エクセルの時刻のカウントが出...
-
基準日以前のデータを範囲を指...
-
エクセル関数について
-
EXCELで日付を比べ3か月以内の...
-
文字列を比較し、相違するフォ...
-
急ぎ!色のついたセルを非表示...
-
プルダウンに【なし、平均、デ...
-
excel / ピポッド 日数を出したい
-
マクロで行の高さを設定したい
-
VBA 複数行の検索及び抽出
-
エクセル VBA 行間隔を飛ばした...
-
【Excel】数式の参照範囲を可変...
-
時間の重複チェック
-
EXCEL 最終行のデータを他のセ...
おすすめ情報
みなさんいろいろありがとうございます。
この機能はよく使うので、基礎的なことで確認したいことがあります。
全部確認したいのであとで全部確認してお礼を書きます。
取り急ぎ、全体のお礼のコメントだけ記載しておきます。
いろいろありがとうございます。