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


どなたかエラーの原因を教えていただけないでしょうか?
よろしくお願いいたします。

A 回答 (2件)

こんばんは。



>どなたかエラーの原因を教えていただけないでしょうか?

難しいことなのですね。教本には、載っていないですね。

まず、基本的なことなのですが、コントロールツールのCommandButton は、シート属性を持ったものなのですね。ですから、記録マクロを、そのままペタンと貼り付けてもうまくいかないことが多いです。

エラーは2番目のSelection で出ているはずです。

Selection.AutoFill Destination:=ActiveCell.Range("A2:E2"), Type:=xlFillSeries

ActiveCell.Range("A2:E2")
というのは、ActiveCellが、Range("A2")ですと、相対参照になっていますから、A4:E4 ということになってしまいます。元の値がありませんので、エラーが出ます。

それを、第一弾目に直したものです。

 Range("A1").Select
 Selection.Value = "1"
 Selection.AutoFill Destination:=Range("A1:E1"), Type:=xlFillSeries

 Range("A2").Select
 Selection.Value = "1"
 Selection.AutoFill Destination:=Range("A2:E2"), Type:=xlFillSeries

それを直しますと、以下のようになります。
通常、文字列で入れても、ワークシートでは、文字列が数値に変換されています。ワークシートの状況が見えていませんので、一応、数値にしておきます。
'------------------------------------------------------
 Range("A1").Value = 1
 Range("A1").AutoFill Destination:=Range("A1:E1"), Type:=xlFillSeries

 Range("A2").Value = 1
 Range("A2").AutoFill Destination:=Range("A2:E2"), Type:=xlFillSeries
'------------------------------------------------------

もう少し、マクロに慣れてくるとこのようになります。
ただし、書式が文字列になっている場合は、この方法が出来ません。

With Range("A1:E2")
   .FormulaLocal = "=Column(RC)"
   .Value = .Value
End With
    • good
    • 1
この回答へのお礼

大変よく分かりました。
ありがとうございました。

お礼日時:2006/01/25 09:38

ActiveSheet.Range("A1").Select


ActiveCell.FormulaR1C1 = "1"
Selection.AutoFill Destination:=Range("A1:E1"), Type:=xlFillSeries

ActiveSheet.Range("A2").Select
ActiveCell.FormulaR1C1 = "1"
Selection.AutoFill Destination:=Range("A2:E2"), Type:=xlFillSeries
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2006/01/25 09:39

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

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

今、見られている記事はコレ!

  • 縦書きと横書きはどちらが読みやすい?

    普段何気なく読んでいる文章ですが、縦書きか横書きか、意識したことはありますか?制作側としては読み手はどちらの方が読みやすいと思うかはとても大きな問題です。教えて!gooには、 「『横書き』と『縦書き』、...

  • 昭和の日ってどういう日?

    ゴールデンウィーク初日の4月29日は「昭和の日」です。今や平成生まれの人も多い時代ですが、「なぜ昭和の日があるの?」という疑問をもったことはありませんか?和暦を挙げるのなら、大正の日、明治の日、平成の日...

  • Excelの意外な使い方とは?

    会社のパソコンに必ず入っている、と言っても過言ではない、Office系ソフトの「Word」と「Excel」。PCを使う職場にいた方なら、一度は触ったことがあるかと思います。Wordは仕事以外に使う方法がすぐ浮かびそうです...

  • せきらら女子会:第109話「英会話を習っている理由」

    恋愛、結婚、お金、夜の営み...いろんなことに対して、赤裸々にトークする女の子達のお話。考え方の違う4人が、今日も居酒屋に集まります。

  • ゲーム業界ダンナ観察日記:第96話「発揮される才能」

    ダンナ様のねむねむ。奥様のとぽすけ。ごく普通のふたりは、ごく普通の結婚をし、だらだらと夫婦生活を送っていました。でもただひとつ違っていたのは、ダンナ様はゲーム会社勤務だったのです。

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ