こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【エクセル】 VBAでエラーが出てわかりません。。

やりたいことは、関数をマクロでセルに記入してオートフィルで指定した行数まで伸ばしたいのです。
(すでに関数で作成したファイルがあるのですが、行数が多いため、とても重い。。^^;)


まずマクロの記録で次のマクロを取得しました。
Sub Macro4()
Range("C4").Select
ActiveCell.Formula = "=SUM(A2:A10)"
Range("C4").Select
Selection.AutoFill Destination:=Range("C4:C12"), Type:=xlFillDefault
Range("C4:C12").Select
Range("D11").Select
End Sub

そして、
Sheet2に貼り付けて
> ActiveCell.Formula = "=SUM(A2:A10)"
の"=SUM(A2:A10)"部分をちょっと長い関数ですが、

"=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))"

と書き換えてマクロを実行すると「アプリケーション定義またはオブジェクト定義エラーです。」
というエラーが出てしまうんですが、どこを直せばわからないです。。
おかしいところを教えてください、よろしくお願いします。

わかり図らい説明かと思いますが。。この件(1行目の文)について似たようなことを解説して
いるサイトがありましたら、教えて欲しいです。

投稿日時 - 2008-08-11 01:19:12

QNo.4242840

困ってます

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

「""」は空白だと思いますが、””で囲まれた文字列中で使うには特殊な書き方をしなくては行けません。
「""""」とすると正しく記入できます。

投稿日時 - 2008-08-11 08:14:45

お礼

回答ありがとうございます。

しかし、試してみましたら、また同じエラーが出てしまいました。
関数部分を以下のように修正して実行しました。
"=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"""",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))"

投稿日時 - 2008-08-11 11:19:38

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>しかし、試してみましたら、また同じエラーが出てしまいました。

Range("A1").Formula = "=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"""",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))"
として実行しましたが、エラーにはなりませんでしたよ。

別の部分でエラーが起きていませんか?

投稿日時 - 2008-08-11 12:09:40

あなたにオススメの質問