• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルの書式数について)

Excel2002でセルの書式が多すぎるためシートをコピーできない問題の解決方法は?

このQ&Aのポイント
  • Excel2002で複数ブックからシートをコピーしてきて、「セルの書式が多すぎるため、書式を追加できません。」というメッセージが表示される問題が発生しました。セルの書式の組み合わせの上限が約4000であることが判明しています。しかし、どのシートがどのくらいのセル書式を消費しているか分かりません。特定のブックだけ多くの書式を使用している場合は、そのブックのみを調整すれば問題が解決できます。
  • Excel2002で複数ブックからシートをコピーする際に「セルの書式が多すぎるため、書式を追加できません。」というエラーメッセージが表示される場合があります。これは、セルの書式の組み合わせの上限が約4000であるためです。しかし、どのシートがどのくらいのセル書式を使用しているか分かりません。特定のブックが多くの書式を使用している場合は、そのブックだけを修正すれば問題が解決します。
  • Excel2002で複数ブックからシートをコピーしている際に「セルの書式が多すぎるため、書式を追加できません。」というエラーメッセージが表示されることがあります。これは、セルの書式の組み合わせの上限が約4000であるためです。しかし、どのシートがどのくらいのセル書式を使用しているか分からない場合、特定のブックだけを修正すれば問題が解決する可能性があります。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.3

●書式の組み合わせの数を(大雑把に)調べる 以下【書式の組み合わせ】を仮に「パターン」と表記します。 現在のパターン数を直接カウントするのはかなり大変ですが、 パターン数を意図的に増やしていくのは簡単なので、 「パターンをあと幾つ追加できるか」を調べれば、 おおよその数字を出すことができます。 例えば… 1.対象シートを新規ブックにコピーする 2.新規ブックに新規シートを追加する  以下、新規シートについて、 3.全セルの[表示形式]をユーザー定義して、例えば[mm/dd"honya"]にする  ※追加するパターンが既存のパターンと重複しないようにするため 4.1~25列をそれぞれ異なる色で塗り潰す 5.1~25列を26~50列にコピーする 6.26~50列のフォントを太字にする 7.1~50列を51~100列にコピーする 8.51~100列のフォントを斜体にする  ※この時点でパターン数は約100。 9.1~40行のフォント色をそれぞれ異なる色に設定していく  ※1行設定していくごとにパターン数が約100増える この作業で追加する書式の数は最大で1+25+1+1+40=68ですが、 その組み合わせは、概算で25*2*2*(1+40)=4100になります。 もし、23行目までは設定でき、24行目でエラーが出たとすると、 100+100*23で約2400パターン追加できたことになり、 元あったパターン数はおおよそ1600未満ということになります。 まっさらのシートについて調べると(環境にもよりますが) 39行目でエラーが出ますから、追加数100+100*38=3900で、 元あったパターン数は100未満という結果を得られます。 ただし、複数のブック・シートについて、 その都度手作業で調べるのは、それはそれで大変ですから、 いっそマクロで…。 動作の概要  アクティブなシートを新規ブックにコピーし、  新規ブックにパターンを追加していく。  パターンを追加できなくなった時点で、  追加できたパターンの数から元の書式の数を逆算して表示する。 '------------------↓ ココカラ ↓------------------ Sub Sample()  ActiveSheet.Copy    On Error GoTo ErrorHandler  Application.DisplayAlerts = False  With ActiveWorkbook.Sheets.Add   With .Range(.Cells(1, 1), .Cells(50, 100))    f = 1    .NumberFormatLocal = """honya"""    For i = 1 To 50     .Columns(i).Interior.ColorIndex = i     .Columns(i + 50).Interior.ColorIndex = i    Next i    With .Range(.Cells(1, 51), .Cells(50, 100))     .Locked = Not .Locked    End With    f = 2    For i = 1 To 50     .Rows(i).Font.ColorIndex = i     If f = 3 Then Exit For    Next i    For j = 1 To 100     .Cells(i, j).Font.ColorIndex = i    Next j   End With  End With  Application.DisplayAlerts = True  Exit Sub ErrorHandler:  Select Case f  Case 1   c = i * 2 - 1  Case 2   f = 3   Resume Next  Case 3   c = i * 100 + j + 1  End Select  MsgBox "約" & c & "パターン追加できました。" & vbCr & vbCr & _   "現在" & 4036 - c & "パターンぐらいです、たぶん。"  Application.DisplayAlerts = True End Sub '------------------↑ ココマデ ↑------------------ Excel2000,2003で動作確認済。 ※書式>スタイルにあるスタイル数も制限の対象なので、  まっさらのシートについて調べた場合も、0ではなく、  既定のスタイルの数が表示されます(普通は6くらい) ※1単位で表示しますが、細かい挙動については詰めていないので、  あくまで目安程度にお考えください。 ※2行目のActiveSheet.Copyを削れば、  アクティブなブック全体について調べます。 以上ご参考まで。長乱文陳謝。

Unitamu
質問者

お礼

ありがとうございます! そうそう、これがまさに私が知りたかったことなんです。 早速作成いただいたマクロを実行してみました。 セル書式をたくさん使っているシートがわかりました。 今後、このマクロいろいろ活用させていただきます。 本当にありがとうございました。

その他の回答 (2)

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

こんにちは。 そのセルの書式の消費量の計算はものすごくややこしく、それに単なる理論値でしかありませんから、実際のところは出てこなかったと思います。 >「セルの書式が多すぎるため、書式を追加できません。」 本来は、このようなメッセージは出ないはずなので、それが出るというのは、どこかに設定のミスが存在していることが多いです。 例: ・設定する必要のないセルには書式設定をしない。 ・書式のユーザー定義で使っていないものは削除する。 ・似ているものは統一する ・罫線や網掛けやパターンなどの設定を多く使わない。

Unitamu
質問者

お礼

やはり消費量の算出は難しいそうですね。大中小が5段階くらいでわかればと思ったのですが。ありがとうございました。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

コピー元をどうこうしても無意味です。 コピー先で書式の上限に近付いてるんだから、コピー前に「コピー先の、一つのブックにまとめてるブックで、全てのシートについて書式を減らして」と言う作業をしてから、コピーを行う必要があります。 でも、コピー先のブックの書式を減らしたところで、いつかは限界が来ますから、本当の解決方法は「コピーするたびに、コピー先のシートの書式を全て削除する」しかないです。

Unitamu
質問者

お礼

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

関連するQ&A