Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10312 / 13646 ツリー ←次へ | 前へ→

【22537】行・列の挿入限界?? MMX 05/2/23(水) 15:17 質問[未読]
【22540】Re:行・列の挿入限界?? G-Luck 05/2/23(水) 15:42 回答[未読]
【22548】Re:行・列の挿入限界?? MMX 05/2/23(水) 16:40 質問[未読]
【22549】Re:行・列の挿入限界?? sa 05/2/23(水) 16:43 質問[未読]
【22552】Re:行・列の挿入限界?? MMX 05/2/23(水) 17:19 発言[未読]
【22551】Re:行・列の挿入限界?? Jaka 05/2/23(水) 17:12 回答[未読]
【22553】Re:行・列の挿入限界?? MMX 05/2/23(水) 17:28 お礼[未読]
【22555】Re:行・列の挿入限界?? Jaka 05/2/23(水) 17:39 発言[未読]
【22556】Re:行・列の挿入限界?? G-Luck 05/2/23(水) 17:41 発言[未読]
【22557】Re:行・列の挿入限界?? MMX 05/2/23(水) 17:57 発言[未読]
【22559】Re:行・列の挿入限界?? MMX 05/2/23(水) 18:50 お礼[未読]

【22537】行・列の挿入限界??
質問  MMX  - 05/2/23(水) 15:17 -

引用なし
パスワード
   現象
・データの存在するシートを元に、別のシート上で自動作表を行っています。
・作表作業を行うシートは、実行毎に「Cells.Delete」でクリアしてます。
・作表は、元データのレイアウトを採用しつつ、
 「率欄」などの追加項目を列挿入して罫線・着色編集を行っています。

 この作表処理を何度か繰り返していると
 以下のような警告が表示されて処理が進められなくなってしまいます。

 「実行時エラー'1004' 
  データの消失を防ぐために、空白でないセルをワークシートの外に
  シフトすることはできません。はみ出してしまう右側または下側のセルを
  削除またはクリアしてみてください。その後〜ブックを保存して最後のセルを
  リセットしてください」

 恐らく「Cells.SpecialCells(xlLastCell).Address」が
 大きくなってしまうのが原因のような気がしますが
 このアドレスは再設定、若しくは初期化する事はできないのでしょうか? 
 これについて、ご存じの方いませんでしょうか?

【22540】Re:行・列の挿入限界??
回答  G-Luck  - 05/2/23(水) 15:42 -

引用なし
パスワード
   ▼MMX さん:
>現象
>・データの存在するシートを元に、別のシート上で自動作表を行っています。
>・作表作業を行うシートは、実行毎に「Cells.Delete」でクリアしてます。
>・作表は、元データのレイアウトを採用しつつ、
> 「率欄」などの追加項目を列挿入して罫線・着色編集を行っています。
>
> この作表処理を何度か繰り返していると
> 以下のような警告が表示されて処理が進められなくなってしまいます。
>
> 「実行時エラー'1004' 
>  データの消失を防ぐために、空白でないセルをワークシートの外に
>  シフトすることはできません。はみ出してしまう右側または下側のセルを
>  削除またはクリアしてみてください。その後〜ブックを保存して最後のセルを
>  リセットしてください」
>
> 恐らく「Cells.SpecialCells(xlLastCell).Address」が
> 大きくなってしまうのが原因のような気がしますが
> このアドレスは再設定、若しくは初期化する事はできないのでしょうか? 
> これについて、ご存じの方いませんでしょうか?

質問内容の正確な解答ではありませんが、
使用済み最後のセルが空白であれば、範囲外に追い出すことは出来るので、
Worksheets("Sheet1").UsedRange
等で代用できないでしょうか?

【22548】Re:行・列の挿入限界??
質問  MMX  - 05/2/23(水) 16:40 -

引用なし
パスワード
   ▼G-Luck さん様:
>質問内容の正確な解答ではありませんが、
>使用済み最後のセルが空白であれば、範囲外に追い出すことは出来るので、
>Worksheets("Sheet1").UsedRange
>等で代用できないでしょうか?

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

が。
いろいろ試してみたんですが、
どうにも意図した結果が得られませんでした・・・(@"@;

一旦、EXCELを閉じる以外に解消する方法はないんでしょうかね(−"−メ
それとも「メモリ解放」関係ですかね??
もうちょっと調べてみます・・・

【22549】Re:行・列の挿入限界??
質問  sa  - 05/2/23(水) 16:43 -

引用なし
パスワード
   >・作表は、元データのレイアウトを採用しつつ、
> 「率欄」などの追加項目を列挿入して罫線・着色編集を行っています。
  レイアウトが有るのに追加項目を列挿入しているのですね 

> この作表処理を何度か繰り返していると
        EXCELの列数の制限が256だと思ったのですがそれ以上になるのですか


▼MMX さん:
>現象
>・データの存在するシートを元に、別のシート上で自動作表を行っています。
>・作表作業を行うシートは、実行毎に「Cells.Delete」でクリアしてます。
>・作表は、元データのレイアウトを採用しつつ、
> 「率欄」などの追加項目を列挿入して罫線・着色編集を行っています。
>
> この作表処理を何度か繰り返していると
> 以下のような警告が表示されて処理が進められなくなってしまいます。
>
> 「実行時エラー'1004' 
>  データの消失を防ぐために、空白でないセルをワークシートの外に
>  シフトすることはできません。はみ出してしまう右側または下側のセルを
>  削除またはクリアしてみてください。その後〜ブックを保存して最後のセルを
>  リセットしてください」
>
> 恐らく「Cells.SpecialCells(xlLastCell).Address」が
> 大きくなってしまうのが原因のような気がしますが
> このアドレスは再設定、若しくは初期化する事はできないのでしょうか? 
> これについて、ご存じの方いませんでしょうか?

【22551】Re:行・列の挿入限界??
回答  Jaka  - 05/2/23(水) 17:12 -

引用なし
パスワード
   ▼MMX さん:
> 恐らく「Cells.SpecialCells(xlLastCell).Address」が
> 大きくなってしまうのが原因のような気がしますが
> このアドレスは再設定、若しくは初期化する事はできないのでしょうか? 
> これについて、ご存じの方いませんでしょうか?

こんにちは。

文章で書くより、ここにいって
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=64;id=FAQ
これを読んでみてください。
「最後のセル」の位置を修正する方法

Ver97になっているけど、今見てみたら2002対象に変わってました。
要するに前から変わって無いと言う事ですね

【22552】Re:行・列の挿入限界??
発言  MMX  - 05/2/23(水) 17:19 -

引用なし
パスワード
   ▼sa さん:
>>・作表は、元データのレイアウトを採用しつつ、
>> 「率欄」などの追加項目を列挿入して罫線・着色編集を行っています。
>  レイアウトが有るのに追加項目を列挿入しているのですね 
>
>> この作表処理を何度か繰り返していると
>  EXCELの列数の制限が256だと思ったのですがそれ以上になるのですか

列数が256を越えることはありません。この点は検証しました。
実際に256を越える場合、処理を止めて警告を表示するなど
対応のしようもあるのですが・・・(−−;

例えば、一回目の作表結果が200列まで達し、
「Cells.Delete」の後、同じシート上で同じ作表処理を実行して
2回目の作表結果が100列までだとしても、
Cells.SpecialCells(xlLastCell).Address や
Activesheet.UsedRange の指す範囲が一回目の200列という
最大の範囲を保有しているため(??)、
列納入( Columns(X).Insert shift:=xlShiftToRight )を実行すると
「列がはみ出す」というエラーが発生します。

※最大の作表結果は251列×200行です。
 この時点で1列も挿入できません・・・_| ̄|○
 こういった作表結果も、いかがなモノかと思いますが・・・(汗

【22553】Re:行・列の挿入限界??
お礼  MMX  - 05/2/23(水) 17:28 -

引用なし
パスワード
   >文章で書くより、ここにいって
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=64;id=FAQ
>これを読んでみてください。
>「最後のセル」の位置を修正する方法

G-Luck様
sa様
Jaka様

ありがとうございました。
セーブしないとダメみたいですね(^^;

なんとか効率よく自動化を実現してみようと思います。
ありがとうございました。
m(_~_)m

【22555】Re:行・列の挿入限界??
発言  Jaka  - 05/2/23(水) 17:39 -

引用なし
パスワード
   ▼MMX さん:
>セーブしないとダメみたいですね(^^;

全部読んでないので、半端な回答ですが...。
新たに書式設定の変更や文字を入力場合、
Cells.SpecialCells(xlLastCell).Addressが変わりますが、そのいじったセルを削除する事で元に戻ります。(クリアでなくDelete)

行ごと列ごとじゃないとダメだったかもしれませんが、覚えてません。
その辺は、試してみてください。

【22556】Re:行・列の挿入限界??
発言  G-Luck  - 05/2/23(水) 17:41 -

引用なし
パスワード
   空白セルで囲まれた範囲
CurrentRegion

使えないですかね?

【22557】Re:行・列の挿入限界??
発言  MMX  - 05/2/23(水) 17:57 -

引用なし
パスワード
   ▼G-Luck さん:
>空白セルで囲まれた範囲
>CurrentRegion
>使えないですかね?

不要な範囲の特定方法はいくつか思い浮かぶのですが、
どうにも「最後のセル」のアドレスを再更新する手段が
「EXCELを保存する」ことしか無いようなのです(^^;

いちいち処理の途中で保存していてはアクビがでちゃいそうなので、
作表毎に作業シートを削除→追加で新調してみようかと思います。

アクビ・・・というより、意図しない状態で保存されるのは不本意なので(^^;

まだ、試してはいませんが、「シート新調作戦」の結果は
再度ここにご報告いたします。

アリガトウゴザイマス(^▽^)ノ"

【22559】Re:行・列の挿入限界??
お礼  MMX  - 05/2/23(水) 18:50 -

引用なし
パスワード
   >作表毎に作業シートを削除→追加で新調

どうやら、うまくいきました♪
作表実行毎に「Cells.Delete」してるので、
削除しても一緒ですし。
常に新しいシートで作業するようにしちゃいますw
(^^;

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

10312 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free