Excel VBA 質問スレ Part15at TECH
Excel VBA 質問スレ Part15 - 暇つぶし2ch678:672
10/06/27 16:26:01
>>674
ちょっとまだ試行中なのですが、例えば配列数を膨大な数にした場合や
各配列内のデータ(取得したセルの値)、文字数が多い場合等です

Variant型を超える事はないと思ってはいますが、
少し今のやり方だと心配なんですよね

679:デフォルトの名無しさん
10/06/27 16:41:37
>>675
キャッシュ(笑)
VB.net(笑)
適当なこと言ってんなハゲ

680:デフォルトの名無しさん
10/06/27 17:51:36
「行儀が悪い」

これならどうだ

681:デフォルトの名無しさん
10/06/27 18:46:33
煽りとかでは無くて純粋に教えてほしいんだけど、
setした物はnothingにして終わらせる、って教わったんだ。

当時聞いた話では、メモリを占有し続けるからって感じで納得してたんだけど、
これは嘘なのかな?

マナーとしてnothingを代入してやるのか、それとも技術的な理由があるのか、それが知りたい。
nothing入れてやる必要が無いなら、余計なコード書きたくないし、教えてください。

682:デフォルトの名無しさん
10/06/27 19:41:25
>メモリを占有し続けるから

これは嘘ではない

683:デフォルトの名無しさん
10/06/27 19:49:31
nothingを代入しなくて、その変数が生きていれば、メモリが開放されることはない
nothingを代入しても、そのメモリがいつ開放されるかは定かではない
nothingを代入しなくても、その変数が無効になれば、その領域は自動的に開放される

原則はこういうこと
昔は使い終わったらすぐにnothing代入して、開放可能にしましょうってのが主流だった
今は特殊なオブジェクトでもない限り、あんまり気にしなくていいと思うぞ

684:デフォルトの名無しさん
10/06/27 19:57:09
テンプレに書いてくれ
無駄なもの
最後にnothing
最後にerase
とか
他にもあるんだろうけど


685:デフォルトの名無しさん
10/06/27 20:09:26
>>682-683
ありがとう。
俺、後輩にいつもnothingで終わらせろって言ってた・・・。
先輩の指導を鵜呑みにして、自分で調べなかったのが凄く恥ずかしい。
nothing忘れると、先輩が口を酸っぱくして指摘してたんで、そうと信じてた。

>nothingを代入しなくても、その変数が無効になれば、その領域は自動的に開放される
VBAの場合はend subを通った時点でdimが無効になるから、基本的にはset nothingいらないのかぁ・・・。

本当にありがとう。


686:デフォルトの名無しさん
10/06/27 20:53:29
SQLServerのJOBにActiveXスクリプト書くときは
Nothingしないと警告でるよ

687:デフォルトの名無しさん
10/06/27 21:21:13
そういや、fjのmalloc/free論争はどう決着したんだっけなあ

688:デフォルトの名無しさん
10/06/27 21:38:02
>>685
俺は無駄なNothing代入はいらない派だが、またそうやって人の言うこと鵜呑みにするなよ?
VBAは参照カウント方式だから、参照がなくなった時点で自動的に解放されるが、
循環参照(オブジェクトAとBがお互いの参照を保持しちゃってるような場合)があるときは
明示的に解放してやらないとメモリリークする
とりあえずNothingで終わらせておけば問題は発生しないし思考停止できる、というのも一つの考え方ではある

689:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/06/28 00:31:57
だからさあ、いらないって言うやつは自分が作るときに使わなきゃいい
いるってやつは自分が作るときに使えばいい
わざわざ他人のコーディングを否定すんなよクズども
いい加減この無限ループやめろっての



ここまでテンプレ

691:デフォルトの名無しさん
10/06/28 01:10:01
質問スレだから
質問されたら答えるだけ
間違いを教えていいわけない
結論はどっちでもいいと答えるのかもしれないけど

692:デフォルトの名無しさん
10/06/28 09:06:38
全角英数字を半角英数字にする関数ってありますか?
Case文で全文字毎に置換するしかないですかね?

693:デフォルトの名無しさん
10/06/28 09:34:12
>>692
つ素寅昆布

694:デフォルトの名無しさん
10/06/28 09:34:31
はいいえ

695:デフォルトの名無しさん
10/06/28 11:02:28
>>693
まんこの中見る器具!

696:デフォルトの名無しさん
10/06/28 11:40:42
>>692
記号もカナも、半角に変換できる文字は全部変換してもいいんならStrconv
英数以外は変換したくないんなら1文字ずつやるしかない

697:デフォルトの名無しさん
10/06/28 15:54:16
相互参照になった場合は?

698:デフォルトの名無しさん
10/06/28 17:29:18
>>696
つ性器豹源



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch