[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 12/14 12:55 / Filesize : 253 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part5



1 名前:デフォルトの名無しさん [2007/12/12(水) 17:27:44 ]
ExcelのVBAに関する質問スレです

質問前に 【 >>2-3 】 あたりを良く読むこと

前スレ
pc11.2ch.net/test/read.cgi/tech/1189814602/

201 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 11:56:55 ]
Excelが無くても動くアプリが作れる

202 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 14:20:22 ]
VBAは高級言語だぞ。
実行がExcelに縛り付けられていることは、言語自体の話とは別。

203 名前:デフォルトの名無しさん [2007/12/30(日) 15:23:09 ]
折れの場合、vs2005express で、やってみようとしたけど結局、VBAにしか、関心が集まらなかった。イメージがわきやすいからだと思う。

Workbooks.Add(xlWBATExcel4Macrosheet) でexcel4マクロシートを作ってみたけど、これってマクロの管理に何かいいことあるのか?

204 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 19:14:47 ]
エクセルのVBAでゲーム作って来いって課題が出たんだが、インベーダーみたいのを作るとして
玉の発射とかの解説してるサイトって無いですか?
というか、シューティングゲーム作成の解説のサイトで良いのですが
なかなか見付からない・・・

205 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 19:27:53 ]
ったく、専学はパーの製造装置でしかないな

206 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 19:30:28 ]
>>204
学校の課題レベルで、ゲームってそういうアクション性のあるゲームのことなのか?w
素直に、マインスイーパみたいなヤツでいいと思うよ。

正直、オススメしないぞ。後で行き詰って困ることになる気がする。
ゲームのオブジェクトを、フォームのコントロールにすれば、まぁできんことはないと思うが。


207 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 19:42:39 ]
>>206
いや、全く持ってその通りなんですが、ほら、作ってみたいじゃないですかw
敵が一体、左右に動いて、自機も左右だけに動けるとこまでは出来たんだけど
あとは玉の発射と当たり判定と、当たったら画像が消えるくらいかなーと

208 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 19:58:57 ]
excel2000のVBAで、材料一覧を印刷用にまとめる、材料表を作ったのですが
利用者が動かしていると、特定の行が消えてしまったりすることがあって困ってます。

そこで、いろいろと原因を探っているんですが、質問です。
シートの保護をかけていているシートで、行や列が突然消えるということってあるんでしょうか?
ご教授願います。よろしくお願いします。

209 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:07:39 ]
>>207
よく使う処理としては、弾の座標と、対象の中心座標+大きさ(距離) で衝突判定する方法。
オブジェクトを、丸形か正方形として認識させれば、そう難しいロジックにはならないと思われ。




210 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:41:33 ]
>>209
dクス
挑戦してみる^

211 名前:デフォルトの名無しさん [2007/12/31(月) 10:27:56 ]
今日も今日とて仕事でVBA

212 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 10:41:25 ]
大晦日も仕事か
お疲れ様です

213 名前:デフォルトの名無しさん [2007/12/31(月) 13:33:39 ]
いい句だなぁ。

214 名前:デフォルトの名無しさん [2007/12/31(月) 15:45:45 ]
かなり微妙な手当てが出たお

215 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 01:20:24 ]
myPath = "C:\TEST\*.xls"
If Dir(myPath) <> "" then
Kill myPath
End If
だとDir(myPath)がオープンしっぱなしになるそうです。
どう書けば閉じるのでしょうか?

216 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 02:36:50 ]
>>215
オープンもしてないモノを、どうしろと?
意味が分かってないなら、せめて本人に書き込ませろ。
ところで、あけおめ。


217 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 03:14:41 ]
>>215
解釈1
if FileExists("hoge") then Kill "hoge"

解釈2
myPath = "C:\TEST\*.xls"
TargetPath=Dir(myPath)
Do Until TargetPath= ""
Kill TargetPath
TargetPath=Dir()
Loop

オープンは関係ないけどこのどちらかがやりたいのではないかと予想

218 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:14:44 ]
開いていないファイルに書き込みパスワードが掛かっているか
どうすれば判定できますか?

ファイルをパスワードで開いてからだったら、
If ActiveWorkbook.WriteReserved Then
とかで判定できると思うのですが、パスワードは
不明でその有無だけ判定したいのです。



219 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 15:52:29 ]
>>216
知らないのか?
myPath = "C:\TEST\"
Dir(myPath)
RmDir myPath
してみろ。オープンされてるから




220 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:16:33 ]
あけましておめでとうございます。
>>208についてお願いしたいのですが・・・

221 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:29:49 ]
>>219
・・・・
RmDir myPath
そのまま実行してみろ
ヘルプ読んで出直せ

222 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:32:05 ]
ポカーン

223 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 19:24:31 ]
>>220
ちょっと考え方が違うな。 コンピュータはウソを吐かないもんだ。
保護を掛けてようがいまいが、意図せずデータが消えるなら、まずはVBAの不具合を疑え。
これだけ出回ってるメジャーなソフトで、アプリの不具合が隠れてる可能性は極めて低い。


224 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:45:14 ]
  1  2  3
1 10 20 30
2
------------
問題Y=1
問題X=1
回答Y=2
回答X=1

For i = 1 To 10
Cells(回答Y, 回答X) = InputBox(Cells(問題Y, 問題X) + Cells(問題Y, 問題X + 1), "問(i)")

回答X = 回答X + 1
問題X = 問題X + 1
Next
-------------
InputBoxにセル内の任意の数字(この場合"10+20")と表示させたいのですが、
上記のコードの場合、30と表示されてしまいます
セル内の数字を個別に表示させることは出来ますか?(真ん中に+などの記号を表示)
また、問1、問2と表示させていくためにはどうすれば良いのでしょうか?
この場合、問(i)で表示されてしまいます

225 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:53:20 ]
+じゃなくて、&で結合すべし。
"問(i)"は、"問("&i&")"にする

226 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:05:59 ]
>>225
Cells(回答Y, 回答X) = InputBox(Cells(問題Y, 問題X) & "+" & (Cells(問題Y, 問題X + 2)), "問(" & i & ")")

にしたら出来ました^
即レスありがとうございました!

227 名前:226 mailto:sage [2008/01/01(火) 21:09:15 ]
あ、問題X+2は問題X+1でした、失礼しました

228 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:28:11 ]
>>223
そうですよね。VBAのテストをもっと増やしてみます。
ありがとうございます。

229 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 22:57:49 ]
Excel 2003でXPです。
このプログラムを実行すると

Dim commission As Integer

Sub test8()
commission = 90
If commission = 100 Then MsgBox ("手数料は100円です")
End If
End Sub

コンパイルエラー
End ifに対応するブロックがありませんというメッセージが出ます。
どこが悪いのでしょうか?



230 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 22:58:28 ]
thenでかいぎょうすべし

231 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 23:03:22 ]
>>230
神様ありがとう!!!

232 名前:129 mailto:sage [2008/01/02(水) 02:53:03 ]
>セル2の入力を常に監視し、入力に変化があるたびにフォルダ内にその画像があるか調べ、あれば表示する。

すみません何をどうやったらいいのか全くわかりませんorz
とっかかりでもいいのでヒント頂けないでしょうか よろしくお願いします

233 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 04:29:21 ]
そもそもVBAの経験があるのかと・・・
VBA/画像/表示とかすりゃいくらでもサンプルがあるってのに
homepage1.nifty.com/h-fuji/excel_sample.htm

234 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 12:20:38 ]
VBA初心者が使う本でこういうときはどうすればいいのっ??ってやつで
お勧めは逆引きのやつとかですか?
他にいいのあります??

235 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 13:10:25 ]
ググれば山ほどサンプルが出てくる

236 名前:デフォルトの名無しさん [2008/01/02(水) 21:18:58 ]
かんたんプログラミング Excel 2003 これが一番良かった

237 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 21:27:35 ]
>>236
まじっすか!?
とりあえず見てみるわ。

>>235
図書館にも死ぬほどあったw

238 名前:かな [2008/01/03(木) 11:25:29 ]
Excelであみだくじつくりたいんやけど、どっかにサンプルないかな?
セルつかうんじゃなくてちゃんと線を引いてやりたいんや?

239 名前:デフォルトの名無しさん [2008/01/03(木) 12:43:46 ]
しね



240 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 13:59:10 ]
こんにちは。突然ですが
いろいろ試してみたんですけど
VBAで乱数の回数分だけループさせる方法ってやっぱり不可能ですよね?

241 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 14:03:50 ]
全然不可能じゃないとおもうけど・・・

242 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 14:17:15 ]
>>240にはってこと?

243 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 15:30:45 ]
乱数って少数の端数が出てしまうじゃないですか。

244 名前:かな [2008/01/03(木) 15:32:36 ]
誰かおしえて?

245 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 15:56:29 ]
ループさせたいだけなら一回目に発生させた乱数を変数に入れたら終わりな話だと思う

246 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:04:37 ]
少数の端数てことはないだろ。

247 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:05:53 ]
つCint

248 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:06:37 ]
0になるだろ

249 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:10:19 ]
CIntだろ



250 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:21:41 ]
すごい釣りだなw

251 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:28:39 ]
つMid(Rnd,3)

252 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:39:24 ]
Replace(Rnd,".","")

253 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:02:32 ]
Count = CInt(Rnd * N) + 1
hoge:
'ここで何かする
Count = Count - 1
If Count >= 0 Then
Goto hoge
End If


254 名前:デフォルトの名無しさん [2008/01/03(木) 18:34:00 ]
ループ中に乱数の値ってどんどん変わっていくんじゃない?

255 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 18:35:55 ]
・・・。
>>254って本気で言ってるのか?

256 名前:デフォルトの名無しさん [2008/01/03(木) 20:18:11 ]
質問です。
実際に開発する環境はXP excel 2003で
学習環境はvista excel 2007なんですが、
何か学習書を購入するとき、2007に対応したものじゃないと
理解は難しいのでしょうか?
2007に対応したVBA書はまだ少ないように感じるもので・・・


257 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:17:50 ]
確かに2007で変わった部分はある。でも基本部分(構文とかそういうの)は変わってない。
2007用の書籍があればそりゃいいだろうけど、変わった部分を調べておけば別に古いのでも問題はないかと。


258 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:25:11 ]
構文規則(VB部分)は変わってないけど
オブジェクトメンバ(VBA部分)は結構変わったよ

一応古いメンバにもアクセス出来るようにはなってるが
新しいメンバより動作が遅かったりというデメリットもある

2007用だと新しい体系に関しての説明が主になるだろうから
実際の開発が2003なら、2003用か2002/2003/2007兼用版とかがいいかと

259 名前:デフォルトの名無しさん [2008/01/04(金) 06:26:50 ]
EXCEL2002でVBAを書いています。

マクロでセルにEXCEL関数を入力する際に、『シートの選択』ダイアログ[OK、キャンセル]が表示されます。
ダイアログを表示さない、もしくはダイアログのキャンセルを自動で押す方法はありますか?

セルに入力しようとしている文字列
='D:\[計算書.xls]20.1月'!$J$3
  計算書.xlsの20.1月は存在しません。

下記、3つは記述済みです。
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False



260 名前:256 [2008/01/04(金) 07:26:44 ]
>>257-258
ありがとうございます。
詳しい解説があったほうがいいのでよく考えて選びます。

261 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 08:19:47 ]
>>259
うちは出ない (2000, 2003)

262 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 08:31:34 ]
>>259
どんなマクロを書いているんだ?

263 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 09:52:52 ]
>>259
再現した。 ワークシートの存在を確認するしかないかな?
  Dim s As Worksheet
  For Each s In Me.Worksheets
    If UCase(s.Name) = UCase("20.1月") Then
      s.Range("A1").Value = "='D:\[計算書.xls]20.1月'!$J$3"
      Exit For
    End If
  Next
あるいは、可能であればワークシート別のイベントで処理させるとか。


264 名前:かな [2008/01/04(金) 09:57:33 ]
だれか教えてん♪

265 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 10:43:44 ]
>>238>>244>>264
www.google.co.jp/search?q=excel+%E3%81%82%E3%81%BF%E3%81%A0%E3%81%8F%E3%81%98&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
まぁ釣りだとは思うんだけど…

266 名前:まな mailto:sage [2008/01/04(金) 10:52:16 ]
>>264
手とり足とり、組んずほぐれつ?


267 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 17:41:29 ]
すいません、XPでEXCEL2003です。
複数のセルに数式が入れてあるのですが、
その数式から導かれた値が、ある一定の値を超えた場合そのセル番号を表示させるプログラムを作ろうと考えています。

このようなことは可能でしょうか?
もし可能ならどのようなプロパティやメソッドを使えばいいのか教えてください。
後は本も買ってきたのでできるだけ自分でやりたいと思いますので、ヒントだけでもありがたいです。

268 名前:デフォルトの名無しさん [2008/01/04(金) 17:44:47 ]
>261
EXCELの設定で表示しないようにできるんですかね・・・。

>262
NW.Cells(tate, yoko).Formula = Replace(str_cell, this_Date, Nxt_Date)
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                ↑ ='D:\[計算書.xls]20.1月'!$J$3 が入る
                          ~~~~~~
                          ↑このシートは存在しない。
『シートの選択』ダイアログが表示される・・・。

>263
やっぱりダイアログが表示しますよね。ない場合シート作成させるしかないですかね・・・?

269 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 17:53:43 ]
>>215
つOn Error



270 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:16:05 ]
>>268
NW ?

271 名前:263 mailto:sage [2008/01/05(土) 11:58:51 ]
>>268
シート作る必要があるの?
どうせエラー("#REF")になる式なんか入れないで、263の例みたいに空白のままじゃダメ?

>>270
どうせローカル変数名でしょ、New Worksheet の頭文字。てか、そこ突っ込まなくても・・・


272 名前:デフォルトの名無しさん [2008/01/07(月) 17:08:47 ]
XP、Excel2003で、改ページの枠を固定することはできるでしょうか。
この固定とは、保護等で管理者以外は触れないようにするということです。
ウィンドウの固定ではなく、改ページ範囲の固定です。

ご存知の方がいましたら、ご教授願います。

273 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:20:25 ]
>>272 追記です。
結合したセルがあります。
そのセルに対する設定変更(書式、結合解除、フォント)は不可とし、
入力のみ可能とすることはできますか?

ご存知の方がいましたら、ご教授願います。

274 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 20:01:11 ]
対象とするアクションが起こった場合にパスワード等を求めるとかじゃだめかな?


275 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 23:30:12 ]
テキストボックスの余白自動設定解除に手間取った。
なんか簡単な方法ってないの?

276 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 08:29:16 ]
「手間取ってる」ではなく「手間取った」ってことは
一応目的は達成されてるわけだよね

ではそれを提示してください
コード貼ってもブックをうpしても構いません
そしたらそれより簡単な方法があれば教えましょう

それが嫌ならさようなら

277 名前:デフォルトの名無しさん [2008/01/08(火) 12:52:16 ]
散々既出ぽい話題ですが、エクセルで、
先頭の0を消さずにcsvで書き出ししたいのですが、
以下の式では当然不可能で・・・

Option Explicit
Sub eight()
Dim eight As String
Dim bigeight As String

Range("a1").Value = 8
bigeight = Range("a1").Value + 100000000
MsgBox bigeight
eight = right(bigeight, 8)
MsgBox eight
Range("A2").Value = eight
MsgBox eight
End Sub

関数で同じことをやると出来るのですがゴミデータが出て、
コンマの数が変わってしまいます。

278 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 13:17:17 ]
変数の型について勉強しましょう
文字列数値と数値の違いを理解しましょう
プロシージャ名と変数名を同じにするセンスを何とかしましょう



279 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 13:48:25 ]
>>277
セルの書式設定(F) → 表示形式:ユーザー定義 → 種類(T):00000000 (8桁固定)




280 名前:デフォルトの名無しさん [2008/01/08(火) 14:13:45 ]
>>279
おお。
これをVBAで指定するには?

281 名前:デフォルトの名無しさん [2008/01/08(火) 14:18:49 ]
てか、そもそもセルに転記しなければ良いのか(・∀・;)

282 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 14:53:59 ]
>>281
転記するにしても、セル(範囲)ごと持っていけば済むよ。
Range("A1").Copy Range("A2")


283 名前:デフォルトの名無しさん [2008/01/08(火) 15:06:19 ]
あ、表示形式ってマクロ記録できるんだ。
これで、解決・・・かな

284 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:24:41 ]
礼も言えないゆとりであった

285 名前:デフォルトの名無しさん [2008/01/08(火) 23:22:13 ]
質問なのですが、ユーザーフォームの中に80コのテキストボックスを作りたい。
プログラムでループ文を使いテキストボックスを横に4×縦に20で一気に作る方法はありますでしょうか?


286 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:45:08 ]
あります
LeftとTopを調整しましょう
コード教えては厳禁

287 名前:デフォルトの名無しさん [2008/01/08(火) 23:50:48 ]
調整とはユーザーフォームの設定ということですか?
プログラムだけで可能なのですよね?
もう少しだけヒントをお願いできないでしょうか?

288 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:55:08 ]
別にそこまで厳しくせんでも。 Excel2003ではできる。
Set ctrl = Me.Controls.Add("Forms.TextBox.1")
って感じに追加して、ctrlのプロパティを調整する。
MSFormsに追加するのに、これでいいのか?という気もするが。


289 名前:デフォルトの名無しさん [2008/01/09(水) 00:14:18 ]
できました!あとは80コスペースを空けて作る方法を考えてみます。
288さん有難う御座いました。



290 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:16:15 ]
丸投げを助長する
寄生虫が増殖する
らしいです

291 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:33:43 ]
丸投げと、できるだけズバリなヒントを欲しているのとは確実に違うと思うわけだが。


292 名前:デフォルトの名無しさん [2008/01/09(水) 14:20:42 ]
278=284=290

293 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 14:30:40 ]
しかし>>284には同意せざるを得ない

294 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 14:36:58 ]
礼なんぞいらん。邪魔。

295 名前:sage [2008/01/09(水) 14:47:15 ]
IDが無いと誰が誰かワカラン

296 名前:デフォルトの名無しさん [2008/01/09(水) 18:11:06 ]
質問です。

Dim c1 as Collection
Dim c2 as Collection
Set c1 = New Collection
c1.Add "a"
c1.Add "b"
Set c2 = c1

この次に、
c1.Remove(1) 'c1の最初のアイテムを削除
とやるとc2のアイテムも"b"だけになりますよね。

これはたぶんc2が、c1と同じCollectionオブジェクトを
指しているためなんだな、と理解しています。

理解できないのは、c1.Remove(1)ではなく、
Set c1 = Nothing
とした場合です。

c2もNothingになるのかと思いこんでいましたが、
実際c2には、"a"も"b"も、ちゃんと残っていました。
これはなぜでしょうか?




297 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 18:25:52 ]
a=1
b=a
a=0
にしてもb=0にならないのと同じ

298 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 18:27:51 ]
「変数そのもの」と「変数が指す先」の区別を理解しませう。
set c1=nothingは、変数そのものへの操作で、変数が指す先にたいしては、
ほとんど影響しない。(唯一、リファレンスカウントにだけ影響するんだっけか。)

299 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 18:29:59 ]
それはNothingキーワードが実体を解放するものではないため



300 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:41:42 ]
数値の代入式の場合は、値そのものをコピーする。
オブジェクトの代入式の場合は、値を保存してある場所(参照)をコピーする。
なので、c1の要素を消すと、c2の要素も消えるが、
Set c1 = Nothing とした場合は、c1と値そのものとの関連が削除されるが、値そのものは残ってる。
全ての参照が削除された時点で、値そのものも削除される状態になる。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<253KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef