[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『串刺し集計のvbaを習いましたが実行エラー1004が出てくるのです』(昭久)
Sub test()
Dim mySum As String, r As Range
mySum = Worksheets(3).Name & ":" & _ Worksheets(Worksheets.Count).Name & "!" Worksheets(1).Activate For Each r In Selection r.Value = "=sum(" & mySum & r.Address(0, 0) & ")" 'r.Value = r.Value Next r End Sub r.Value がempTYとなりアプリケーションの定義とオブジェクトの定義のエラ-がでます。なにをどう書き換えなければならないか教えて頂けないでしょうか?お願いいたします。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
テストランでは特に問題は出なかったですけど、質問と違うコードでやってないですか?
(半平太) 2021/05/23(日) 11:20
後から何を言い出すかなぁ。。
私は降ります。
(半平太) 2021/05/23(日) 13:13
(もこな2) 2021/05/23(日) 13:49
集計範囲に Empty があるとか?
(ふむ〜) 2021/05/23(日) 16:37
これを実行して、結果を知らせてください。
Sub test() Dim mySum As String, r As Range mySum = Worksheets(3).Name & ":" & _ Worksheets(Worksheets.Count).Name & "!" Worksheets(1).Unprotect Worksheets(1).Activate For Each r In Selection r.Value = "=sum(" & mySum & r.Address(0, 0) & ")" Next r Worksheets(1).Protect End Sub
(γ) 2021/05/23(日) 18:10
それくらいのことはもう実行しているかと思いますが、
まとめて知らせてください。
(γ) 2021/05/23(日) 20:24
実行させてエラーになったとき、VBE(コードエディタ)を見ると、
どこかの行が黄色くなっているはず。
イミディエイトウインドウに、
?r.Address
とすると、エラーになったセルがどこかわかります。
そこのセルがなぜ計算式を受け付けないのか、エラーになるのか調べて下さい。
その合計の対象となっているセルに、特別なことがないか、
手作業でやったらどうなるか、等々、調べて下さい。
それほど難しい話でもないはずです。
(γ) 2021/05/23(日) 23:16
(もこな2 ) 2021/05/24(月) 09:04
おそらくですが、今回のケースは
(1)3番目と最後のシートの少なくともどちらかのシート名が【数字で始まる、空白を含む、()などの記号を含む】等により「'」で囲む必要があった (2)しかし、「'」で囲まれておらず、シートが正しく参照できないので実行時エラーが発生した (3)↑の時点では当然、r.Valueに何も書き込まれてないので「Empty値」のまま
というのが真相じゃないでしょうか?
このとおりであれば、↓のように修正すればよいと思います。
Sub test改() Dim r As Range
For Each r In Selection r.Formula = "=SUM('" & Worksheets(3).Name & ":" & Worksheets(Worksheets.Count).Name & "'!" & r.Address(0, 0) & ")" Next r
End Sub
(もこな2 ) 2021/05/24(月) 17:55
質問者さんには、結果のみならず、
問題への対処の仕方(つまりデバッグ方法)こそに注目して、
そこをしっかりマスターしてください。
また別のエラーが出ても、ご自分で対応できるようにです。
2021/05/23(日) 23:16に書いたことを実行されていれば、ご自分で判明したはずです。
"=sum(" & mySum & r.Address(0, 0) & ")"
を変数に受けて、それをDebug.Printしたりして、
それを手作業でやってみれば、原因は自分でわかったはずです。
手作業でいくつかのセルをカーソル移動だけで合計する作業をしてみても分かるはずです。
# なお、レアケースですが、シート名に'が含まれていると、
# test改 でもまだエラーになります。
# 'を二つ続けてエスケープする必要があるからです。
(γ) 2021/05/24(月) 19:45
Sub test改二() Dim buf As String
buf = Worksheets(3).Name & ":" & Worksheets(Worksheets.Count).Name buf = Replace(buf, "'", "''")
With Worksheets(1).Range("A1:D4") .Formula = "=SUM('" & buf & "'!" & .Cells(1).Address(0, 0) & ")" End With End Sub
(もこな2 ) 2021/05/25(火) 12:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.