1 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 01:07:19 ] 過去スレ 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/ 06 pc11.2ch.net/test/read.cgi/tech/1205231499/ 07 pc11.2ch.net/test/read.cgi/tech/1212587819/ 08 pc11.2ch.net/test/read.cgi/tech/1219673793/ 09 pc11.2ch.net/test/read.cgi/tech/1228372971/ 10 pc12.2ch.net/test/read.cgi/tech/1235332603/ 11 pc12.2ch.net/test/read.cgi/tech/1241885130/ 12 pc12.2ch.net/test/read.cgi/tech/1247566074/ 13 pc12.2ch.net/test/read.cgi/tech/1254281104/ 14 pc12.2ch.net/test/read.cgi/tech/1262748898/ ←New! 関連スレ Excel総合相談所 91 pc11.2ch.net/test/read.cgi/bsoft/1270542226/ Word総合相談所 pc11.2ch.net/test/read.cgi/bsoft/1263719084/ 【質問不可】Excel総合相談所スレの雑談・議論スレ2 pc11.2ch.net/test/read.cgi/bsoft/1151651536/
669 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 10:12:08 ] あ、コメントアウトされてたのね。 老婆心ながら、setしたobject型変数は最後に開放しておいた方がいいよ。 end subのすぐ前でOK。
670 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 14:23:54 ] >>老婆心ながら、setしたobject型変数は最後に開放しておいた方がいいよ。 なんで? 不要だろ
671 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 14:25:52 ] ここから先しばらく不毛な論争が続きますので質問者の方は無視してくださいな
672 名前:664 [2010/06/27(日) 15:51:40 ] Set re = Nothingを入れる事でメモリ解放するって事ですかね? 個人的にはそんな事より"A1:A5"の範囲ならまだしも セル範囲が増えた場合オーバーフローしないか心配です 何か良い方法ないですかねぇ 配列を使わずにセル範囲を一つ一つループで置換orスルーできるような処理があれば1番なんですが
673 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 15:55:12 ] >>669 完全に不要。 あと、解放、な。
674 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 15:56:56 ] >>672 何がどうオーバーフローするんだ?
675 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 16:06:12 ] Nothing入れないと自動変数の領域がキャッシュされてるため いつまでもオブジェクトが削除されないとかVB.netで聞いた事ある
676 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 16:12:26 ] .NETからExcelを操作した時のアウトプロセス解放関連の話と 勘違いしている予感。
677 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 16:23:59 ] COMのGCって参照カウンタでしょ。 それに反しなければわざわざリリースなんて要らん。
678 名前:672 [2010/06/27(日) 16:26:01 ] >>674 ちょっとまだ試行中なのですが、例えば配列数を膨大な数にした場合や 各配列内のデータ(取得したセルの値)、文字数が多い場合等です Variant型を超える事はないと思ってはいますが、 少し今のやり方だと心配なんですよね
679 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 16:41:37 ] >>675 キャッシュ(笑) VB.net(笑) 適当なこと言ってんなハゲ
680 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 17:51:36 ] 「行儀が悪い」 これならどうだ
681 名前:デフォルトの名無しさん [2010/06/27(日) 18:46:33 ] 煽りとかでは無くて純粋に教えてほしいんだけど、 setした物はnothingにして終わらせる、って教わったんだ。 当時聞いた話では、メモリを占有し続けるからって感じで納得してたんだけど、 これは嘘なのかな? マナーとしてnothingを代入してやるのか、それとも技術的な理由があるのか、それが知りたい。 nothing入れてやる必要が無いなら、余計なコード書きたくないし、教えてください。
682 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 19:41:25 ] >メモリを占有し続けるから これは嘘ではない
683 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 19:49:31 ] nothingを代入しなくて、その変数が生きていれば、メモリが開放されることはない nothingを代入しても、そのメモリがいつ開放されるかは定かではない nothingを代入しなくても、その変数が無効になれば、その領域は自動的に開放される 原則はこういうこと 昔は使い終わったらすぐにnothing代入して、開放可能にしましょうってのが主流だった 今は特殊なオブジェクトでもない限り、あんまり気にしなくていいと思うぞ
684 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 19:57:09 ] テンプレに書いてくれ 無駄なもの 最後にnothing 最後にerase とか 他にもあるんだろうけど
685 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 20:09:26 ] >>682-683 ありがとう。 俺、後輩にいつもnothingで終わらせろって言ってた・・・。 先輩の指導を鵜呑みにして、自分で調べなかったのが凄く恥ずかしい。 nothing忘れると、先輩が口を酸っぱくして指摘してたんで、そうと信じてた。 >nothingを代入しなくても、その変数が無効になれば、その領域は自動的に開放される VBAの場合はend subを通った時点でdimが無効になるから、基本的にはset nothingいらないのかぁ・・・。 本当にありがとう。
686 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 20:53:29 ] SQLServerのJOBにActiveXスクリプト書くときは Nothingしないと警告でるよ
687 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 21:21:13 ] そういや、fjのmalloc/free論争はどう決着したんだっけなあ
688 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 21:38:02 ] >>685 俺は無駄なNothing代入はいらない派だが、またそうやって人の言うこと鵜呑みにするなよ? VBAは参照カウント方式だから、参照がなくなった時点で自動的に解放されるが、 循環参照(オブジェクトAとBがお互いの参照を保持しちゃってるような場合)があるときは 明示的に解放してやらないとメモリリークする とりあえずNothingで終わらせておけば問題は発生しないし思考停止できる、というのも一つの考え方ではある
689 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 23:43:38 ] 俺も無駄なNothing代入はいらない派だが >>688 メモリリークといっても、エクセルの使用メモリが増えていくだけで エクセルを終了させれば開放される >Nothingで終わらせておけば問題は発生しないし思考停止できる ちなみに変数をNothingにしてもメモリリークは防げないこともある Sub test() Set x = CreateObject("Scripting.Dictionary") Set y = CreateObject("Scripting.Dictionary") Call x.Add("y", y) Call y.Add("x", x) Set x = Nothing Set y = Nothing End Sub このプロシジャ呼ぶとちょっとずつメモリ使用量が増加していくぞ
690 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 00:31:57 ] だからさあ、いらないって言うやつは自分が作るときに使わなきゃいい いるってやつは自分が作るときに使えばいい わざわざ他人のコーディングを否定すんなよクズども いい加減この無限ループやめろっての ここまでテンプレ
691 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 01:10:01 ] 質問スレだから 質問されたら答えるだけ 間違いを教えていいわけない 結論はどっちでもいいと答えるのかもしれないけど
692 名前:デフォルトの名無しさん [2010/06/28(月) 09:06:38 ] 全角英数字を半角英数字にする関数ってありますか? Case文で全文字毎に置換するしかないですかね?
693 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 09:34:12 ] >>692 つ素寅昆布
694 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 09:34:31 ] はいいえ
695 名前:デフォルトの名無しさん [2010/06/28(月) 11:02:28 ] >>693 まんこの中見る器具!
696 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 11:40:42 ] >>692 記号もカナも、半角に変換できる文字は全部変換してもいいんならStrconv 英数以外は変換したくないんなら1文字ずつやるしかない
697 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 15:54:16 ] 相互参照になった場合は?
698 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 17:29:18 ] >>696 つ性器豹源