|
▼neptune さん:
大変お世話になってます。
私用と提案の内容を試していたため返事が遅れて、申し訳ありませんでした。
>わざわざ使いにくいchangeイベントを使う必要は無いと思いますし、
>使うことによって返って面倒な処理になると思います。
>・1,2,4はselectionchangeでセルのアドレスを判断して行う
changeとselectionchangeの違が分からなかったため、ヘルプやネットで調べたのですが、selectionchangeの使い方がイマイチ理解できません。セルのアドレスを判断して行うためにはどのようなコードを書いたら良いのでしょうか。そうなるとChangeイベントとどう違うのでしょうか?
>・5,6はセルに数式を入れておく
作り始めた当初は数式を入れていたのですが不都合があったため使うのを止めました。なぜかというと、7行から26行までの20行で同じ処理をしていますが、部品が1つの時もあれば10個の時もあります。見積内訳としてこの表を印刷するのに
Range("B65536").End(xlUp).Select
これで最終行を判断し
ActiveCell.CurrentRegion.Select
部品見積の内容をセレクトし印刷用シートにコピペしています。
見積内訳にはこの部品や配材・製作品など8種類ありこの作業を繰り返して、1枚の見積内訳書として出すために上から詰めコピペを繰り返し見積を完成させます。
問題はこのとき式がセルに入っているとCurrentRegionで可視セルでなくてもセレクトされてしまうということです。そうすると20行全部コピーしてしまって、印刷用シートにコピペする際不要な空白ができてしまいます。
この問題を解決する方法が見つけられなかったため、計算は全てコードでする事にしました。
>削除ボタンなどを用意しておき、行またはセルを選択させてClearする。
削除を20行一遍にするボタンは作ったのですが、1行ごと削除したいということも当然あると思います。そのとき20行全部にボタンを作るのはどうかと思って(重くなるのではと思った)止めました。同じシート(実際は微妙に違うが)を8つ作っているからです。
何分これが初めて本格的にVBAをつかった作品なもので、勉強しながら疑問を持ちつつここまで作ってきました。根本的に考え方がおかしい部分もあるかもしれません。はっきり言って解決してない問題もまだまだあります。
実際このApplication.EnableEventsのイベントは最初はうまく動いてくれていました。便利に使ってもらうためにはシートだけで作成するのに限界を感じて、ActiveXオブジェクトに手をだし始めた頃に特にコードは変えていないのですが、エラーが出るようになってしまいました。バックアップで取ってある以前のブックはClearしても正常に動いてくれます。ですがこの2つのブックのコードを見比べても、どこが悪いのか見つけることができません。変な処理をしぎてすブックが壊れてしまっているのではといまだに疑っています。
また長々と書いてしまい問題が反れていっているようにも感じますが、アドバイスがありましたらまたお願いします。
|
|