プロシージャーの外で宣言した変数の値の破棄の仕方について教えてください。
++++++++++++++++++
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
++++++++++++++++++
としたら、エラーになりました。
No.2ベストアンサー
- 回答日時:
あなたのような書き方はしない。
Dim i As Long
Sub test()
i = 0 'ふつうはこのように初期化してから始めるね。
i = i + 10
MsgBox i
End Sub
No.1
- 回答日時:
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
とか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 飛び地セルの空白判定 2 2022/10/24 15:54
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Visual Basic(VBA) VBAの繰り返し処理表記と複数の処置条件について 1 2023/01/23 20:08
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
テキストボックス中の文字列の...
-
VBAで Set wb = Sheets(1).Cop...
-
VBScriptでの起動済みのIEの操作
-
textBox isNot Nothing とは
-
EXCEL VBA COLLECTIONオブジェ...
-
AccessVBAで「dim dbs as datab...
-
VB6 エクセルに画像貼り付け
-
VBAについてです。 初心者です...
-
ExcelのVBAで3-D等高線のXYZ回...
-
VBAでWebページにセルの値を入力
-
上下の位置揃えについて
-
InternetExplorer.Application...
-
ある文字列が全て数字であるか...
-
VBで引数にDictionaryオブジェ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
テキストボックス中の文字列の...
-
PowerPointVBAでスライドマスタ...
-
エクセルマクロエラー「'Cells'...
-
VBAからPDFファイルにパスワー...
-
Excelでフィルタをかけると警告...
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
-
VBA:オートシェイプの線の長...
-
VBで引数にDictionaryオブジェ...
-
AccessVBAで「dim dbs as datab...
おすすめ情報