[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件付きの行追加』(ヒロミ)
コマンドボタンを押すと、最終行の下に行を追加したいです。
行を追加する際の列範囲は表(A〜AA列)だけにしたいのですが、列範囲を指定せずに記述することは可能でしょうか。
理由は、列数の異なる他のシートでも使えるようにしたいからです。
なぜ表だけなのかといいますと、表よりより後ろの列に何か記述されている場合があるのです。最終列までにしてしまうと、その余計なものまで拾ってきてしまう場合があるので、できればA〜AA列の表の書式(罫線や塗りつぶしなど)だけ出したいです。どうか宜しくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
この領域の列数の求め方はいろいろあります。2つほどサンプルを。 なお、いずれも、この領域と、その右のほうにある別の表との間に空白列があること、 また、1番目は領域内に完全な空白列がないこと、2番目は領域内1行目に空白セルがないことが条件。
Sub Sample()
MsgBox "領域の列数は " & Range("A1").CurrentRegion.Columns.Count & " です。"
MsgBox "領域の列数は " & Range("A1").End(xlToRight).Column & " です。"
End Sub
(β) 2015/05/18(月) 19:03
Dim myRow As Long
myRow = Range("A1048576").End(xlUp).Row + 1 Range("A" & myRow).EntireRow.Insert Shift:=xlDown Range(myRow - 1 & ":" & myRow - 1).Copy Range("A" & myRow).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False End Sub
(ヒロミ) 2015/05/19(火) 09:34
Sub test() Dim n As Long
With Range("a1").CurrentRegion n = .Rows.Count MsgBox "この表は" & n & "行" .Select .Rows(n).Select .Rows(n + 1).Select End With
End Sub
(マナ) 2015/05/19(火) 20:19
外出していて、レス遅れました。
>>Paste:=xlPasteFormats
コピペしたいのは書式のみですか?
(β) 2015/05/19(火) 21:31
とりあえず、値も含めてすべてコピペするコードです。 いろんな書き方がありますが、アップされた、そちらのコードの処理方法を踏襲しています。
Sub Sample1() Dim myRow As Long Dim myCols As Long
myCols = Range("A1").CurrentRegion.Columns.Count 'A1から始まる表の列数 myRow = Range("A" & Rows.Count).End(xlUp).Row '表の最終行番号
Range(Cells(myRow, "A"), Cells(myRow, myCols)).Copy '最終行の表の列数分の領域をコピー 'それを次の行にペースト Range("A" & myRow + 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False
End Sub
Sub Sample2() Dim myRow As Long Dim myCols As Long
myCols = Range("A1").CurrentRegion.Columns.Count 'A1から始まる表の列数 myRow = Range("A" & Rows.Count).End(xlUp).Row '表の最終行番号 '最終行の表の列数分の領域を次の行にコピペ Range(Cells(myRow, "A"), Cells(myRow, myCols)).Copy Range("A" & myRow + 1)
End Sub
(β) 2015/05/19(火) 21:37
なので、あくまで参考です。 事前に、各シートの表をテーブルにしておけば、以下でも可能です。
Sub test()
Range("a1").ListObject.ListRows.Add
End Sub
(マナ) 2015/05/20(水) 00:21
あぁ、行のコピーではなく、行の追加でしたか。
それなら、(マナ)さんの回答のテーブルが一番便利でしょうね。 テーブルとして設定しておけば、なにも考えず、最終行の次の行にデータを入力するだけで 書式、計算式等が、上の行(かっての最終行)から自動反映されますのでマクロは一切不要です。
で、このテーブル設定は、マクロでやらずとも、ホームタブの「テーブルとして書式設定」操作で一発で設定できます。
(β) 2015/05/20(水) 09:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.