• ベストアンサー

エクセルVBAでのオートフィル

Range("A1").Select Selection.AutoFill Destination:=Range("A1:A11"), Type:=xlFillCopy Range("A1:A11").Select 上記のスクリプトで、 Rangeのところを 隣あった列の最下段まで と、言うような指定はどうすればいいのでしょうか? B列の最後の行と隣り合ったセルまで、 A1のセルをコピーしたい場合です。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

こんな感じで Range("A1").AutoFill Destination:=Range("A1:A" & Range("B" & Cells.Rows.Count).End(xlUp).Row), Type:=xlFillCopy

gizmo_s
質問者

お礼

その通りです。 望み通りの結果になりました。 ありがとうございます!!

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 通常は、ショートカットを使えばよいです。 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

gizmo_s
質問者

お礼

いつもありがとうございます。 上記の方法でも、同様に目的通りコピーされました。 ありがとうございます。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

解決されていると思いますが、こんな構文でも。 最初の >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/17068)
回答No.1

>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 = "睦月"にすると 睦月 如月 弥生 ・・ となる(余談)

gizmo_s
質問者

補足

  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列の数は毎回変わります。 すいません説明不足です。

関連するQ&A

  • VBAでオートフィルができません

    エクセル2007です。 画像のようにA列に値を入れて、B列に半角にする関数を入れて、最終行までオートフィルをしたいのですが、 --------------------------------------------------------- Sub test() Dim 最終行 As Long 最終行 = Cells(65536, 1).End(xlUp).Row ActiveCell.FormulaR1C1 = "=ASC(RC[-1])" Selection.AutoFill Destination:=Range("b1:b" & 最終行), Type:=xlFillDefault End Sub --------------------------------------------------------- をすると、 Selection.AutoFill Destination:=Range("b1:b" & 最終行), Type:=xlFillDefault の部分で、 [実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラー] になってしまいます。 原因と対策を教えてください。ご回答よろしくお願いします。

  • ExcelのVBAのAutoFillの使い方について

    Excel97のマクロでAutoFillを使おうとしているのですが、エラーが出て実行できません。 何も表示されていないシートでコマンドボタンを押すと、AutoFillを使ってA1セル~E1セルとA2セル~E2セルに数字の1~5が表示されるようにしたいと考えています。 下記のようにマクロを書いたところ、A1~E5はうまくできたのですが、 「Selection.AutoFill Destination:=ActiveCell.Range("A2:E2"), Type:=xlFillSeries」 の行でエラーが発生します。 「実行時エラー:1004 RangeクラスのAutoFillメソッドが失敗しました。」と表示されます。 Private Sub CommandButton1_Click()   ActiveSheet.Range("A1").Select   ActiveCell.FormulaR1C1 = "1"   Selection.AutoFill Destination:=ActiveCell.Range("A1:E1"), Type:=xlFillSeries   ActiveSheet.Range("A2").Select   ActiveCell.FormulaR1C1 = "1"   Selection.AutoFill Destination:=ActiveCell.Range("A2:E2"), Type:=xlFillSeries End Sub どなたかエラーの原因を教えていただけないでしょうか? よろしくお願いいたします。

  • エクセルのマクロ

    こんばんは、宜しくお願いします。 エクセルで行を挿入し前行の数式をコピーするマクロの記録を行ったのが下記の内容です。 Sub Sounyu() ' ' Sounyu Macro ' Rows("4:4").Select Selection.Insert Shift:=xlDown Range("B3:C3").Select Selection.AutoFill Destination:=Range("F3:F4"), Type:=xlFillDefault Range("F3:F4").Select Range("G3").Select Selection.AutoFill Destination:=Range("G3:G4"), Type:=xlFillDefault Range("G3:G4").Select Range("A2").Select End Sub 最後の Range("A2").Selectを挿入した行のAのセルへ カーソルがいくようにするにはどのように変更したら 良いのでしょうか? 教えてください。

  • ExcelVBAでのオートフィルの使い方

    Excel2003です。 Bセルに入っている値をHセルまで右方向にオートフィルするマクロを組んでいるのですが、うまく動きません。 Bセルの最終行は変動し、オートフィルはBセルの最終行と最終行の1つ手前の2つ分をオートフィルしたいのです。 Range("B1").End(xlDown).Offset(-1, 0).Select Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault Range("B1").End(xlDown).Offset(0, 0).Select Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault これで、オートフィルしようと思っていたのですが、 Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault この式の実行で、 実行時エラー'1004' RangeクラスのAutoFillメソッドが失敗しました と、出てしまいます。   Selection.AutoFill Destination:=Range("B23:H23"), Type:=xlFillDefault こういうマクロなら動くので、AutoFillの後に明確な範囲指定をしていないせいなのでしょうか? 最終行が変動してしまう為、このような明確な範囲指定をする事ができません。 いい解決方法はないでしょうか?

  • 【Excel2002VBA】Destinationを変数に

    Range("A1").Select Selection.AutoFill Destination:=Range("A1:A10"), Type:=xlFillSeries Range("A1:A10").Select の2行目のDestinationの次のセル範囲(Range("A1:A10")の部分) を変数で表現したいのですが 書き方が分かりません… ご存知の方、どうか教えてくださいm(_ _)m

  • エクセルVBAでボタンを作ったシートとVBAを実行するシートを変えたい

    シート1にボタンを作成し、 そのボタンを押すと実行するVBAを作成しました。 そこで、VBAを実行するシートの指定はできるのでしょうか。 例えば、ボタンを押すと、 10行から20行まではシート2で実行させ、 30行から40行まではシート3で実行させたいと考えています。 可能でしょうか。 どうぞ宜しくお願いします。 *********************************************** 作成したVBA。ボタンはシート1にあります。 *********************************************** Private Sub CommandButton1_Click() *********************************************** ここからはシート2で実行させたい *********************************************** Range("E2").Select ActiveCell.FormulaR1C1 = "10" Range("E2").Select Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault Range("E2:E101").Select *********************************************** ここからはシート3で実行させたい *********************************************** Range("A2").Select ActiveCell.FormulaR1C1 = "100" Range("A2").Select Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault Range("A2:A101").Select End Sub

  • EXcelでオートフィルのパラメータを変数化

    お世話になります。 [変更前]マクロで「("A3:B72")」を変数化したくて[変更後]のようにした。 結果エラーになります。 実行時エラー'91' オブジェクト変数またはWithブロック変数が設定されていません。 [変更前] Sub 賞与明細MCR() Range("A3:B4").Select Selection.AutoFill Destination:=Range("A3:B72"), Type:=xlFillDefault Range("A3:B72").Select End Sub [変更後] Sub 賞与明細MCR() Dim 処理 As Characters 処理 = "A3:" & CStr(Range("d1")) Range("A3:E4").Select Selection.AutoFill Destination:=Range(処理), Type:=xlFillDefault Range(処理).Select End Sub

  • 『エクセル』 vbaでオートフィルができない

    Sub Macro1() Range("a1:a10").Select Selection.AutoFill Destination:=Range("A1:A10"), Type:=xlFillSeries End Sub がエラーになります。 内容は「RangeクラスのAotofillメソッドが失敗しました」 となります。 Sub Macro2() Dim i As Long For i = 1 To 10 Cells(i, 1) = i Next End Sub や Sub Macro3() Dim i As Long i = 1 While i <= 10 Cells(i, 1) = i i = i + 1 Wend End Sub と同じような動きをAutoFillを使ってVBAで行いたいのですが むりでしょうか? というのも、 A1に長い関数式を入れて A10000までオートフィルしたいのですが 手作業だと時間がかかるためマクロで行いたいです。 アドバイス宜しくお願い致します。

  • Excel マクロ 最終セルが毎回違う場合

    マクロ初心者です。 自動記録でマクロを作りました。 最終行が毎回違うので、「コピー(オートフィル)をA列の最終行にあわせてする」と作りたいです。 自動記録ではJ71までコピーになっていますが、J71をA列の最終行にしたいです。 よろしくお願いします。 Range("G3:J3").Select Selection.AutoFill Destination:=Range("G3:J71"), Type:=xlFillDefault Range("G3:J71").Select

  • 縦方向にオートフィルをしたい

    Excel2003 2行ずつ結合したセルシートを使用しています。 F5とF6は結合、F7とF8も結合、G5とG6は結合、G7とG8は結合・・・とF~Qまで全て2行ずつ結合してあります。 F列~Q列の値が入ってるセルまでオートフィルをする為に、下記マクロを実行していますが、うまく動きません。 Range("F5:Q6").Select Range("F5:F6").AutoFill Destination:=Range(Range("F5:Q6"), Selection.End(xlDown)), Type:=xlFillSeries 実行時エラー1004 アプリケーション定義またはオブジェクトのエラーです ちなみに横方向のオートフィルはうまくいっています。これは行数が固定の為楽だった、というのがありますが Range("F5:F6").AutoFill Destination:=Range("F5:Q6"), Type:=xlFillSeries 2行ずつ結合したセルシートで最終行までオートフィルする場合はどうすればいいのでしょうか?

専門家に質問してみよう