Excel VBA質問箱 IV

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

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


306 / 13645 ツリー ←次へ | 前へ→

【81089】標準モジュールで複写元のシートモジュールを削除したい うしろ 19/10/12(土) 15:24 質問[未読]
【81090】Re:標準モジュールで複写元のシートモジュ... マナ 19/10/12(土) 18:27 発言[未読]
【81093】Re:標準モジュールで複写元のシートモジュ... うしろ 19/10/15(火) 12:13 お礼[未読]
【81094】Re:標準モジュールで複写元のシートモジュ... マナ 19/10/15(火) 19:36 発言[未読]
【81091】Re:標準モジュールで複写元のシートモジュ... γ 19/10/14(月) 21:27 発言[未読]
【81092】Re:標準モジュールで複写元のシートモジュ... うしろ 19/10/15(火) 12:04 お礼[未読]

【81089】標準モジュールで複写元のシートモジュー...
質問  うしろ E-MAIL  - 19/10/12(土) 15:24 -

引用なし
パスワード
   お世話になります。
どなたかご存じの方アドバイス願います。

標準しモジュールには、前のシートをコピーしてシート名を変更し、
コピー元の文字や数値を新規シートに記載(コピー元とは異なる場所へ)しています。

シートには値が入力される度に数値を計算し、計算値をシート内へ書き込むシートモジュールが作成してあります。

シートモジュールを含むシートをコピーする時、コピーが完了する(シートへシートモジュールが複写される)まではコピー元のシートモジュールが必要となりますが、新規シートが追加された後は、元のシートモジュールは不要となります。

日々1枚ずつシートが増えるたびにシートモジュールも増えることとなりファイルサイズが大きくなります。

ここで質問です。
シートをモジュールごとコピーした後、コピー元のシートモジュールを削除するにはどのようなコードを標準モジュール内に記載すればよいでしょうか

【81090】Re:標準モジュールで複写元のシートモジ...
発言  マナ  - 19/10/12(土) 18:27 -

引用なし
パスワード
   ▼うしろ さん:

そもそも、なぜシートモジュールに記述しているのですか。
標準モジュールに記述しない理由がありますか。
イベントマクロでしょうか。

シートコピーしないで、全セルをコピー貼り付けではだめですか。

【81091】Re:標準モジュールで複写元のシートモジ...
発言  γ  - 19/10/14(月) 21:27 -

引用なし
パスワード
   (1)イベントプロシージャであるとしても、本体を標準モジュールにおいて
  イベントプロシージャから標準モジュールのプロシージャをコールするようにすれば、
  シートモジュールの大きさは節約できます。
(2)シートモジュールのコードを手で消しても、さほど負荷にならないと思うが、
  どうしてもということなら、コードそのものを触ることができます。
  しかし、こうしたことは悪用される懸念があり、余り推奨されません。
  (少なくとも、他人に聞かないと作れないようなら、手作業を薦めます。)
 
  どうしても^2 ということなら、
  「VBAでVBEを操作する」
  ht tp://officetanaka.net/excel/vba/vbe/
  の記事を参照して自作してください。
  ・ワークシート名からobject名を得るには、Worksheets("消したいシート").CodeName
  ・コードの行数は CountOfLinesプロパティ
  ・コードの消去はDeleteLinesメソッド。開始行と消去する行数を指定。

【81092】Re:標準モジュールで複写元のシートモジ...
お礼  うしろ E-MAIL  - 19/10/15(火) 12:04 -

引用なし
パスワード
   ▼γ さん:
ご指導ありがとうございます。
工事現場で基本的に毎日入力するもので利用しています。
また、私だけが利用するのであれば、コードの削除は大した作業ではありません。
本来なら、ワークブックを別に管理してして標準フォーマットより必要情報を入力して別ファイルとして保存するのが良いのかもしれません。
入力する方が休日も毎日入力してくれれば、ファイル(ファイル名に少し工夫がいりますが…)が簡単に管理ができ、一つ前の工程情報を読み込み現在のファイルに反映しやすいですね。
しかし、台風や工事の進捗状況により入力しない場合も考えられるため、ファイル名の管理が複雑になり、今の私の能力では無理でした。
ワークシートモジュールのコードは数十行なので大した容量増にはならないのですが工事期間が長くなることを想定し今回の質問をさせていただきました。
VBEは依然少し勉強しましたが、敷居が高そうなのでシートモジュールはそのままにしようと思います。
ありがとうございました。

【81093】Re:標準モジュールで複写元のシートモジ...
お礼  うしろ E-MAIL  - 19/10/15(火) 12:13 -

引用なし
パスワード
   マナさんへ
ご指導ありがとうございます。
VBA初心者んなので誤ったソフトの使い方なのかもしれません。
ご想像のとおりインベントマクロが記載してあります。
標準モジュールにコードを書いて全ての値が入力されてから実行ボタンを
押すようにすれば良いかもしれませんね。
利用期間が長引いた場合を想定してこのような質問をさせていただきました。
ありがとうございました。

【81094】Re:標準モジュールで複写元のシートモジ...
発言  マナ  - 19/10/15(火) 19:36 -

引用なし
パスワード
   ▼うしろ さん:

だから、シートコピーするのではなく

1)新規シート追加
2)全セルをコピー貼り付け

これなら、初心者でもわかるコードで同じ結果を実現できませんか?

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