>串刺し演算
質問者が言わんとする操作は
http://www.becoolusers.com/excel/3d02.html
に開設されているタイプのことをやろうとしているのですね?。
>コピーアンドペーストを繰り返しているんですが
なぜこれが必要ですか?
シート数は何枚ぐらいありますか?
>シートの種類は97から2003、
ブックの保存形式のことでは。エクセルの97-2003形式で保存したものを読みこんで、(今では旧いですね)いるのですか?
>複数ブックをまたいだ串刺し演算をやろうとしてないですよね。
>主に図形、時々テキストボックスなどの機能低下表・・
メモリなどの関連で障害になるなら、ブックをコピーして、使い捨てる方のブックで
VBAで図形・写真を1度で削除してしまう手もあります。
標準モジュールに
Sub test01()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
MsgBox sh.Name ′確認用
sh.DrawingObjects.Delete
Next
End Sub
写真や図形がシートから消えているはず。これを、別の名で保存して、計算に使ったらどうでしょう。
参考までに、泥臭い方法(多セルでは時間ががかかる。VBAベテランだとみて笑うだろうが)ですが、
1セルの串刺しは
白紙のシートを1つ増やし、シート名を「合計シート」として
Sub test02()
Dim sh As Worksheet
t = 0
For Each sh In ThisWorkbook.Sheets
MsgBox sh.Name
If sh.Name <> "合計シート" Then
t = t + sh.Range("a2")
End If
Next
Worksheets("合計シート").Range("A2") = t
End Sub
このA2セルを一般化して、セル範囲に繰り返して広げると串刺しができる。
ただし、このままだとデータ変動連動性はない。
Sub test02()
Dim sh As Worksheet
t = 0
For Each cl In Range("a2:C2")
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "合計シート" Then
t = t + sh.Range(cl.Address)
End If
Next
Worksheets("合計シート").Range(cl.Address) = t
t = 0
Next
End Sub
お礼
回答ありがとうございます。警告マークが計算結果に影響しないとわかって安心しました。ありがとうございました。