- ベストアンサー
エクセルVBAでのオートフィル
Range("A1").Select Selection.AutoFill Destination:=Range("A1:A11"), Type:=xlFillCopy Range("A1:A11").Select 上記のスクリプトで、 Rangeのところを 隣あった列の最下段まで と、言うような指定はどうすればいいのでしょうか? B列の最後の行と隣り合ったセルまで、 A1のセルをコピーしたい場合です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じで Range("A1").AutoFill Destination:=Range("A1:A" & Range("B" & Cells.Rows.Count).End(xlUp).Row), Type:=xlFillCopy
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 通常は、ショートカットを使えばよいです。 A1, B1 のセルがあるとして、A1 に値を入れ、A1の右下角(フィル)をダブルクリックすると、自動的に、B列のデータの終わりまで、オートフィルが利きます。 しかし、それは、オートフィルのデフォルトなので、最後の四角のイメージ(オートフィルオプション)が出てきますから、それをクリックして、「セルのコピー」を選択すればよいです。 マクロでしたら、 Sub TestCopy() With Range("B1", Range("B65536").End(xlUp)) If .Cells(1, 1).Offset(, -1).Value = "" Then MsgBox "最初のセルに値がありません。", 48 Exit Sub End If .Cells(1, 1).Offset(, -1).Copy .Offset(, -1) ''オートフィルの場合 ''.Cells(1, 1).Offset(, -1).AutoFill Destination:=.Offset(, -1) End With End Sub
お礼
いつもありがとうございます。 上記の方法でも、同様に目的通りコピーされました。 ありがとうございます。
- zap35
- ベストアンサー率44% (1383/3079)
解決されていると思いますが、こんな構文でも。 最初の >Range("A1").Select のセレクトは不要です。この例では問題になりませんが、セレクトが多いと処理が遅くなる原因にもなりますよ。 Range("A1").AutoFill Destination:=Range(Range("A1"), _ Range("B65536").End(xlUp).Offset(0, -1)), Type:=xlFillCopy Range(Range("A1"), Range("A65536").End(xlUp)).Select
- imogasi
- ベストアンサー率27% (4737/17069)
>B列の最後の行と隣り合ったセルまで ということは具体的にどういうこと。C列についてB列の最終行までか。 実例を挙げないからこんな疑問が出る。 ーー 下記でどうかな。 Sub test01() d = Range("B65536").End(xlUp).Row Set rng = Range("C1:C" & d) MsgBox rng.Address With Range("C1") 'スタート値 .Value = "1月" .AutoFill Destination:=rng End With 'Range("A1:A11").Select End Sub 結果 B列 C列 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 sss 1月 B列に最下行でsssがあり、その行までC列にデータを入れた。 ーー .Value = "睦月"にすると 睦月 如月 弥生 ・・ となる(余談)
補足
A B C 1 copy a 2 ↓ a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a ココマデ B列の10行まで書き込まれているとします。 Aの[copy]をB列の最後、 10行目と同じところまでコピーしたいのです。 B列の数は毎回変わります。 すいません説明不足です。
お礼
その通りです。 望み通りの結果になりました。 ありがとうございます!!