プロが教えるわが家の防犯対策術!

プロシージャーの外で宣言した変数の値の破棄の仕方について教えてください。

++++++++++++++++++
Dim i As Long

Sub test()

i = i + 10

MsgBox i
End Sub
++++++++++++++++++
を実行すると、どんどん値が増えていきますが、
回避するには、
++++++++++++++++++
Dim i As Long

Sub test()

i = i + 10

MsgBox i
i = 0
End Sub
++++++++++++++++++
とするしかないのでしょうか?

++++++++++++++++++
Dim i As Long

Sub test()

i = i + 10

MsgBox i
Set i = Nothing
End Sub
++++++++++++++++++
としたら、エラーになりました。

A 回答 (2件)

あなたのような書き方はしない。


Dim i As Long
Sub test()
i = 0    'ふつうはこのように初期化してから始めるね。
i = i + 10
MsgBox i
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/20 00:08

Set 変数名 = Nothing



という書き方はオブジェクトに対してのみ行う方法であって、
String、Integerなどのいわゆるデータ型には適用できません。

値を破棄したいならば、破棄したいタイミングで0なり空文字なりを
入れます。
オブジェクトではないので、アプリケーションが終了する、もしくは
スコープ範囲の関数が終了するまでメモリ解放はありません。


どうもやりたいことを想像するに、そもそもiをグローバル変数宣言
しなければいいのでは、と。
理由があるならどこかでtest()を呼び出した後に初期化出来ますよね。
たとえば
Dim i As Integer
Dim j As Integer
For j = 0 To 10
 i = i + j
 test(i)
 If j = 5 Then
  i = 0
 End If
Next
とか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/20 00:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!