!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part74
https://mevius.5ch.net/test/read.cgi/tech/1639932059/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part75
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スフッ Sd7f-wadS)
2022/02/09(水) 14:24:32.62ID:I0u44nFvd575デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/26(土) 00:22:22.08ID:wN9O5mc/0 あれ?確かインデント用のツールを紹介してくれている親切な人いたような?
あれ具合良さそう。
あれ具合良さそう。
576デフォルトの名無しさん (ワッチョイ 0dce-+Ivz)
2022/03/26(土) 00:30:29.64ID:3d/IeTqK0 Sub aaa()
For bbb = 0 To 0
If ccc = 0 Then
ddd = eee
End If
Next
End Sub
For bbb = 0 To 0
If ccc = 0 Then
ddd = eee
End If
Next
End Sub
577デフォルトの名無しさん (アウアウウー Sacd-+Ivz)
2022/03/26(土) 01:25:30.54ID:x5oh4kDTa ツールの利用者から、ツールの改修担当者に問合せがいったんでしょ。
改修担当といっても、前任者から引き継いだだけだから、全ての仕様はわかっていない。
現在の業務にそぐわない仕様があって、エラーが出たから、
利用者が改修担当者に問合せ。
前任者なら「もともとこういう仕様です」と答えれば、
「ああ、それなら業務が変わったから改修が必要だな」と
改修依頼を出せる。
ツールの利用者も着任して間もない人の場合、
業務が変わったのかどうかもわからない。
そういう場合、ソースコードの条件文を日本語にして
回答するのではなくて、
昔から存続しているチームの誰かに聞くのが普通。
それをしないのは職務怠慢。
自分一人で売上を引っ張ってこれていると勘違いしているのかな。
改修担当といっても、前任者から引き継いだだけだから、全ての仕様はわかっていない。
現在の業務にそぐわない仕様があって、エラーが出たから、
利用者が改修担当者に問合せ。
前任者なら「もともとこういう仕様です」と答えれば、
「ああ、それなら業務が変わったから改修が必要だな」と
改修依頼を出せる。
ツールの利用者も着任して間もない人の場合、
業務が変わったのかどうかもわからない。
そういう場合、ソースコードの条件文を日本語にして
回答するのではなくて、
昔から存続しているチームの誰かに聞くのが普通。
それをしないのは職務怠慢。
自分一人で売上を引っ張ってこれていると勘違いしているのかな。
578デフォルトの名無しさん (ワッチョイ 552f-Yn6i)
2022/03/26(土) 06:35:02.37ID:4/mAEYCl0 >昔から存続しているチームの誰かに聞くのが普通。
>それをしないのは職務怠慢。
つまりそれをしないで改修担当者に聞いてるやつが悪いってことだな
>それをしないのは職務怠慢。
つまりそれをしないで改修担当者に聞いてるやつが悪いってことだな
579デフォルトの名無しさん (スップ Sd12-Slbg)
2022/03/26(土) 10:14:46.58ID:p8/YoqyTd ここって長文で講釈を垂れる人おおいよね
しかもVBAにはまったく無関係という
しかもVBAにはまったく無関係という
580デフォルトの名無しさん (ワッチョイ 9eda-+A59)
2022/03/26(土) 12:35:46.08ID:OVfO91qG0 自力でできないのに調べない、人に聞かない、期待されているのものがつくれないのは できない人 としか言いようがない
581デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/26(土) 15:44:49.86ID:wN9O5mc/0 時には長文になるのは仕方ないよ。
丁寧に説明するばそうならね?
上の方で個人名みたいの書いてるアレな人いるけど今の5ちゃんて個人名書いただけでNGじゃなかったか?
丁寧に説明するばそうならね?
上の方で個人名みたいの書いてるアレな人いるけど今の5ちゃんて個人名書いただけでNGじゃなかったか?
582デフォルトの名無しさん (アウアウウー Sacd-/MGz)
2022/03/26(土) 16:02:36.43ID:1KsbV4Zma 個人名NGの規制ってあるのか?
WindowsやLinux板とかでは機能していないように見えるけど
WindowsやLinux板とかでは機能していないように見えるけど
583デフォルトの名無しさん (ワッチョイ f568-+Ivz)
2022/03/26(土) 17:07:43.61ID:kCwfN6Gy0 個人名というか個人情報な
通報されたら警察来るかな
通報されたら警察来るかな
584デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/26(土) 17:58:02.51ID:wN9O5mc/0 昔バイトしていた居酒屋のマスターが5ちゃんに実名晒されて誹謗中傷書かれていたのを思い出してさ。
585デフォルトの名無しさん (ササクッテロ Sp79-8pno)
2022/03/26(土) 18:09:02.02ID:Gn2xNTk6p586デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/26(土) 20:17:20.58ID:wN9O5mc/0 職務怠慢は言い過ぎでは?
何かしらの事情あるだろうし。
何かしらの事情あるだろうし。
587デフォルトの名無しさん (アウアウウー Sacd-+Ivz)
2022/03/26(土) 23:22:10.99ID:lmdSWMnfa dim ki as string
ki = "まあいろんな事情があるよね"
ki = ki & "チームメイトに嫌われていて聞きづらいとか"
dim shou as string
shou = ki
shou = shou & "「こんなことくらいしかわからなくて、すみません」と謝られても"
shou = shou & "お前がそんなことしかわからないことは、百も承知。"
shou = shou & "誰かに回してくれることも見込んでの質問なんだけど、"
shou = shou & "ってね。"
dim ten as string
ten = shou
ten = ten & "プログラマーは基本、自分ひとりで仕事完結して、周りに電話したりメールしたりチャットしたり、"
ten = ten & "という連携は面倒くさがる人が多いからね。"
ten = ten & "コーディングされていないことは、できませんが何か? みたいな"
ten = ten & "職務はここまで。これ以上はできませんが何か?みたいな"
dim ketu as string
ketu = ten & "ロボットみたいな人が多い。"
ki = "まあいろんな事情があるよね"
ki = ki & "チームメイトに嫌われていて聞きづらいとか"
dim shou as string
shou = ki
shou = shou & "「こんなことくらいしかわからなくて、すみません」と謝られても"
shou = shou & "お前がそんなことしかわからないことは、百も承知。"
shou = shou & "誰かに回してくれることも見込んでの質問なんだけど、"
shou = shou & "ってね。"
dim ten as string
ten = shou
ten = ten & "プログラマーは基本、自分ひとりで仕事完結して、周りに電話したりメールしたりチャットしたり、"
ten = ten & "という連携は面倒くさがる人が多いからね。"
ten = ten & "コーディングされていないことは、できませんが何か? みたいな"
ten = ten & "職務はここまで。これ以上はできませんが何か?みたいな"
dim ketu as string
ketu = ten & "ロボットみたいな人が多い。"
588デフォルトの名無しさん (ワッチョイ 5502-PYYx)
2022/03/26(土) 23:52:13.63ID:4I5liEUu0 何?
この気持ち悪いスレ・・・・・・
この気持ち悪いスレ・・・・・・
589デフォルトの名無しさん (ブーイモ MMad-+Ivz)
2022/03/26(土) 23:57:27.46ID:zJILPsYJM >>587
汚いコードだな、そんな代入の仕方じゃ変数を4つ用意した意味がまったくないじゃん
そういう時は最後に足すんだよ
Dim DeathStory As String
DeathStory = ki & shou & ten & ketu
汚いコードだな、そんな代入の仕方じゃ変数を4つ用意した意味がまったくないじゃん
そういう時は最後に足すんだよ
Dim DeathStory As String
DeathStory = ki & shou & ten & ketu
590デフォルトの名無しさん (ブーイモ MMad-+Ivz)
2022/03/26(土) 23:58:14.85ID:zJILPsYJM >>588
そっ閉じすりゃいいのに、そんなスレに何か書き込んでる時点で同類
そっ閉じすりゃいいのに、そんなスレに何か書き込んでる時点で同類
591デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/27(日) 03:21:42.29ID:hNNvtCzu0 深夜になると定期的に変な書き込みあるよね
592デフォルトの名無しさん (ワンミングク MMe9-H6Yj)
2022/03/27(日) 03:29:36.79ID:/OZccBd9M >>591
自己紹介かよ!
自己紹介かよ!
593デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/27(日) 07:40:40.82ID:BqsGdBXW0594デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/27(日) 09:48:21.10ID:8deA3KtJa そもそも >>587 だと
"まあいろんな事情があるよねチームメイトに嫌われていて聞きづらいとか「こんなことくらいしかわからなくて、すみません」と謝られてもお前がそんなことしかわからないことは、百も承知。誰かに回してくれることも見込んでの質問なんだけど、ってね。プログラマーは基本、自分ひとりで仕事完結して、周りに電話したりメールしたりチャットしたり、という連携は面倒くさがる人が多いからね。コーディングされていないことは、できませんが何か? みたいな職務はここまで。これ以上はできませんが何か?みたいなロボットみたいな人が多い。"
ってなるし、適宜 vbCrLf 挟めや
"まあいろんな事情があるよねチームメイトに嫌われていて聞きづらいとか「こんなことくらいしかわからなくて、すみません」と謝られてもお前がそんなことしかわからないことは、百も承知。誰かに回してくれることも見込んでの質問なんだけど、ってね。プログラマーは基本、自分ひとりで仕事完結して、周りに電話したりメールしたりチャットしたり、という連携は面倒くさがる人が多いからね。コーディングされていないことは、できませんが何か? みたいな職務はここまで。これ以上はできませんが何か?みたいなロボットみたいな人が多い。"
ってなるし、適宜 vbCrLf 挟めや
595デフォルトの名無しさん (ブーイモ MMa6-3xpD)
2022/03/27(日) 10:09:59.57ID:GXS4gvi+M >>594
読んでないけど読む価値のないレスであることだけは判る
読んでないけど読む価値のないレスであることだけは判る
596デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/27(日) 10:21:55.52ID:dieR0oCra ↑ どこを読めばいいのかもわからんアホw
597デフォルトの名無しさん (ワッチョイ 9e68-c/bJ)
2022/03/27(日) 10:33:27.62ID:jqHr+5yx0 最初と最後の行しか読んでないけど
スペースも改行もつかないって突っ込みだって事だけは判る
スペースも改行もつかないって突っ込みだって事だけは判る
598デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/27(日) 10:56:36.33ID:hNNvtCzu0 ようは字下げしないと読みにくいって教えてくれたんですね親切な人。
599デフォルトの名無しさん (ワッチョイ a9da-bZbN)
2022/03/27(日) 11:49:34.86ID:17nxG3290600デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/27(日) 12:17:45.42ID:CPBl4WFea >>597
それで十分、てか最後の行読んだらわかるだろ
それで十分、てか最後の行読んだらわかるだろ
601デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/27(日) 12:19:46.20ID:CPBl4WFea >>599
まあ高々数十行位なら気にすることはないよ
まあ高々数十行位なら気にすることはないよ
602デフォルトの名無しさん (ワッチョイ adcc-tbOq)
2022/03/27(日) 12:41:21.31ID:cPay0R1J0 誰かSalseforceのAPIをVBAでたたく方法わかる人いませんか?
API関連に関して全く無知で、何をどうしていいのか、、、
詳しい人教えてほしいです、、
API関連に関して全く無知で、何をどうしていいのか、、、
詳しい人教えてほしいです、、
603デフォルトの名無しさん (ブーイモ MMa6-+Ivz)
2022/03/27(日) 12:52:04.46ID:dAzXJbreM 字下げや改行なんてVBAでやることじゃない
印刷だろうが電子化だろうが、文書の整形は出力アプリ側に投げるもんだ
リーダー端末の画面サイズやフォントサイズなんて予測できんだろ?
印刷だろうが電子化だろうが、文書の整形は出力アプリ側に投げるもんだ
リーダー端末の画面サイズやフォントサイズなんて予測できんだろ?
604デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/27(日) 13:07:11.24ID:OVREMJced 文書の整形と文書自体を一緒にしてしまうところが悲しい・・・
605デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/27(日) 17:11:35.24ID:hNNvtCzu0 なんでよ?VBAの義務教育編で字下げは真っ先に学習するはずじゃ??
606デフォルトの名無しさん (ワッチョイ f568-+Ivz)
2022/03/27(日) 17:22:28.69ID:2Abk94v90 年収1000万のインド人はインデントもコメントもなし
一般人はちゃんとつけよう
一般人はちゃんとつけよう
607デフォルトの名無しさん (アウアウウー Sacd-/MGz)
2022/03/27(日) 17:30:10.15ID:6akgwO9ga >>602
アクセスするライブラリとAPIリファレンスを掲示してくれたら捗るんじゃね?
アクセスするライブラリとAPIリファレンスを掲示してくれたら捗るんじゃね?
608デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/27(日) 17:33:41.29ID:OVREMJced609デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/27(日) 17:34:17.13ID:OVREMJced スクレイピングもたまに質問するやつがいるけど
それも同じな
それも同じな
610デフォルトの名無しさん (JP 0He2-i83I)
2022/03/27(日) 17:50:20.50ID:ob1ESvJwH >>609
VBA でのスクレイピングはイマイチですねえ、動いたり動かなかったりするし、なにかいい方法はないものか?
Function ScrapingAlgoA003(objIE As InternetExplorer, url, keyword As String)
objIE.navigate url
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim ReturnValue As Double
Dim div As HTMLDivElement
For Each div In htmlDoc.getElementsByClassName(keyword)
ReturnValue = CDbl(div.innerText)
ScrapingAlgoA003 = ReturnValue
Next div
Set htmlDoc = Nothing
End Function
VBA でのスクレイピングはイマイチですねえ、動いたり動かなかったりするし、なにかいい方法はないものか?
Function ScrapingAlgoA003(objIE As InternetExplorer, url, keyword As String)
objIE.navigate url
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim ReturnValue As Double
Dim div As HTMLDivElement
For Each div In htmlDoc.getElementsByClassName(keyword)
ReturnValue = CDbl(div.innerText)
ScrapingAlgoA003 = ReturnValue
Next div
Set htmlDoc = Nothing
End Function
611デフォルトの名無しさん (ワッチョイ 9e68-c/bJ)
2022/03/27(日) 19:02:58.02ID:jqHr+5yx0612デフォルトの名無しさん (ワッチョイ 5134-Nuys)
2022/03/27(日) 19:18:00.28ID:7EXZAGuD0613デフォルトの名無しさん (ワッチョイ f568-+Ivz)
2022/03/27(日) 19:39:07.33ID:2Abk94v90 Seleniumはほんといいね
IEからxpathで・・・ってやってたのがほんとアホらしくなった
IEからxpathで・・・ってやってたのがほんとアホらしくなった
614デフォルトの名無しさん (ワッチョイ 368c-XyTZ)
2022/03/27(日) 19:43:23.36ID:U13zJWe20 Seleniumは昔インストールしたんだがよくわからず
未だにIEばかり使ってるんだが もうそろそろ切り替えた方がいいのかな
未だにIEばかり使ってるんだが もうそろそろ切り替えた方がいいのかな
615デフォルトの名無しさん (ワッチョイ 5134-Nuys)
2022/03/27(日) 19:51:02.70ID:7EXZAGuD0 昔のSeleniumはChromeの方にも拡張機能入れて…とかだった気がするけど今は事前準備も書くのも凄く簡単になってるね
616デフォルトの名無しさん (ワッチョイ f568-+Ivz)
2022/03/27(日) 19:59:57.15ID:2Abk94v90617デフォルトの名無しさん (ワッチョイ 12b1-VQaK)
2022/03/27(日) 20:17:18.33ID:Df2KiTxu0 質問です。
連想配列に格納した連想配列の値を取り出すには
どうしたらよいのでしょうか?
Dim dicA as Dictionary
Dim dicB as Dictionary
dicB.Add "a",100
dicB.Add "b",100
dicB.Add "c",100
dicA.Add "A",dicB
としたとき、dicAの中のdicB("b")の値を取得したいとき
どうしたらいいのでしょうか。
Debug.print dicA("A").("b")
とかで出せるかと思ったのですが駄目でした。
連想配列に格納した連想配列の値を取り出すには
どうしたらよいのでしょうか?
Dim dicA as Dictionary
Dim dicB as Dictionary
dicB.Add "a",100
dicB.Add "b",100
dicB.Add "c",100
dicA.Add "A",dicB
としたとき、dicAの中のdicB("b")の値を取得したいとき
どうしたらいいのでしょうか。
Debug.print dicA("A").("b")
とかで出せるかと思ったのですが駄目でした。
618デフォルトの名無しさん (ワッチョイ 9202-q+eG)
2022/03/27(日) 20:19:01.83ID:uW5IEa4H0 set TikuB = dickA("A")
Tikubi("b") = bibibibibi-----
Tikubi("b") = bibibibibi-----
619デフォルトの名無しさん (ワッチョイ 655f-ObPs)
2022/03/27(日) 20:22:07.59ID:EN8vWua40 >>610
For EachなのにIfで条件指定しないのか
For EachなのにIfで条件指定しないのか
620デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/27(日) 20:29:11.49ID:hNNvtCzu0 乳首エロい
621デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/27(日) 20:31:09.02ID:BqsGdBXW0 >>617
よく分からんのだけど、Dictionalyって
型宣言しただけで使えるの?
普通に考えると、
Set dic A = New Dictionaly
Set dic B = New Dictionaly
とか、必要そうに見えるけど。
よく分からんのだけど、Dictionalyって
型宣言しただけで使えるの?
普通に考えると、
Set dic A = New Dictionaly
Set dic B = New Dictionaly
とか、必要そうに見えるけど。
622デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/27(日) 20:33:33.24ID:BqsGdBXW0 おっと、Dictionalyのスペルが違ってるか
Dictionaryかすまんこ
Dictionaryかすまんこ
623デフォルトの名無しさん (ワッチョイ 12b1-VQaK)
2022/03/27(日) 20:45:16.14ID:Df2KiTxu0 元の文と違いますが解決しました。
ありがとうございました。
Sub foo()
Dim dicA As Dictionary: Set dicA = New Dictionary
Dim dicB As Dictionary: Set dicB = New Dictionary
Set dicA("A") = dicB
dicA("A")("a") = "test"
Debug.Print dicA("A")("a") 'test
End Sub
ありがとうございました。
Sub foo()
Dim dicA As Dictionary: Set dicA = New Dictionary
Dim dicB As Dictionary: Set dicB = New Dictionary
Set dicA("A") = dicB
dicA("A")("a") = "test"
Debug.Print dicA("A")("a") 'test
End Sub
624デフォルトの名無しさん (アウアウウー Sacd-+Ivz)
2022/03/28(月) 01:22:22.67ID:LEJNBveMa ("A")
625デフォルトの名無しさん (ワッチョイ 9202-q+eG)
2022/03/28(月) 02:04:12.07ID:dJWBHkZn0 (:; U: ::)
626デフォルトの名無しさん (ワッチョイ b12c-XwpL)
2022/03/28(月) 07:56:32.13ID:bggr0gZp0 Selenium Webdriver と、
Chrome の拡張機能・Selenium IDE の2種類ある
Chrome の拡張機能・Selenium IDE の2種類ある
627デフォルトの名無しさん (ワッチョイ f568-+Ivz)
2022/03/28(月) 07:57:45.06ID:W5FkPi4A0 Selenium Webdriver
628デフォルトの名無しさん (ブーイモ MMad-+Ivz)
2022/03/28(月) 12:34:55.90ID:DkLhkvc4M ウェブダイバー
629デフォルトの名無しさん (ワッチョイ ad49-+/qe)
2022/03/28(月) 13:29:17.84ID:9Kb03WZY0 ウェブダイバーはカラオケで歌うぞ
630デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/28(月) 18:29:52.50ID:jKre83rL0631デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/28(月) 18:47:34.87ID:2Ad/srHwa 横からだけど
For ...
Dim D As New Dictionary
...
Next
ってやると最初の一回しかNewしないから常に
Dim D As Dictionary: Set D = New Dictionary
ってやる人はいるみたい
For ...
Dim D As New Dictionary
...
Next
ってやると最初の一回しかNewしないから常に
Dim D As Dictionary: Set D = New Dictionary
ってやる人はいるみたい
632デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/28(月) 18:55:38.23ID:jKre83rL0 >>631
いやいや、ループでそれぞれ別インスタンスとして使うにしても、定義は1回でNewするのが複数回で済むでしょ。
例えば上のレスのようにDictionaryにDictionaryを格納する場合でもDictionaryにしまった時点で参照は渡されるんだから消えないし、
その後、Newしてまた渡してやればインスタンスはまた別物として扱われるよね。
いやいや、ループでそれぞれ別インスタンスとして使うにしても、定義は1回でNewするのが複数回で済むでしょ。
例えば上のレスのようにDictionaryにDictionaryを格納する場合でもDictionaryにしまった時点で参照は渡されるんだから消えないし、
その後、Newしてまた渡してやればインスタンスはまた別物として扱われるよね。
633デフォルトの名無しさん (ワッチョイ 79ac-+/qe)
2022/03/28(月) 19:07:54.06ID:AcTRGxgL0 コードで語ればいいのに
634デフォルトの名無しさん (ワッチョイ f568-+Ivz)
2022/03/28(月) 19:46:09.16ID:W5FkPi4A0 >>630
知らなかっただけじゃないか
知らなかっただけじゃないか
635デフォルトの名無しさん (ワッチョイ 924f-XwpL)
2022/03/28(月) 19:46:21.63ID:jKre83rL0 >>633
Sub hoge()
Dim dic1 As Scripting.Dictionary
Dim dic2 As Scripting.Dictionary
Dim itemCounter As Long
Set dic1 = New Scripting.Dictionary
For itemCounter = 0 To 3
Set dic2 = New Scripting.Dictionary
dic2.Add 0, "fuga" & CStr(itemCounter)
dic1.Add itemCounter, dic2
Next
For itemCounter = 0 To 3
Debug.Print dic1(itemCounter)(0)
Next
End Sub
出力結果:
fuga0
fuga1
fuga2
fuga3
dic1の中にdic2を入れてるけど、dic2の変数自体は使いまわし。
dic2はループの中でNewされているけど、dic1の中にそのときの
dic2の参照情報が格納されているため、きちんと別の値が保持される。
つまりはそういうこと。
Sub hoge()
Dim dic1 As Scripting.Dictionary
Dim dic2 As Scripting.Dictionary
Dim itemCounter As Long
Set dic1 = New Scripting.Dictionary
For itemCounter = 0 To 3
Set dic2 = New Scripting.Dictionary
dic2.Add 0, "fuga" & CStr(itemCounter)
dic1.Add itemCounter, dic2
Next
For itemCounter = 0 To 3
Debug.Print dic1(itemCounter)(0)
Next
End Sub
出力結果:
fuga0
fuga1
fuga2
fuga3
dic1の中にdic2を入れてるけど、dic2の変数自体は使いまわし。
dic2はループの中でNewされているけど、dic1の中にそのときの
dic2の参照情報が格納されているため、きちんと別の値が保持される。
つまりはそういうこと。
636デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/28(月) 19:51:37.75ID:BH9MBdK/a ↑ こいつは一体何を説明してるんだろう…
637デフォルトの名無しさん (ワッチョイ 61da-CM16)
2022/03/28(月) 19:53:39.70ID:nzzJclxc0 みんな教え方バラバラだから質問者が困ってるよー
638デフォルトの名無しさん (ササクッテロラ Sp79-JoQ9)
2022/03/28(月) 20:06:46.75ID:GBAIeVpDp >>636
分からないならすっこんでればいいんじゃないかな
分からないならすっこんでればいいんじゃないかな
639デフォルトの名無しさん (スププ Sdb2-9QKR)
2022/03/28(月) 20:07:19.86ID:jdteRYNZd 実務ではよくある話
640デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/28(月) 21:12:23.25ID:DlrSWjY+a641デフォルトの名無しさん (アウアウウー Sacd-+Ivz)
2022/03/29(火) 00:49:06.48ID:zHBdUnr/a >>638
うるさい、だまってればいいんじゃないかな
うるさい、だまってればいいんじゃないかな
642デフォルトの名無しさん (ワッチョイ 552f-XwpL)
2022/03/29(火) 01:38:58.63ID:YOHlvasK0 まあ、知らなかっただけって可能性が高いんだが
DimでNewしてるオブジェクト変数はNothingにできないって罠があるからな
そして今更だが、VBAにDictionaryはないぞ、と
DimでNewしてるオブジェクト変数はNothingにできないって罠があるからな
そして今更だが、VBAにDictionaryはないぞ、と
643デフォルトの名無しさん (ワッチョイ f568-+Ivz)
2022/03/29(火) 06:28:42.33ID:z3WwGups0 >>642
nothingに出来ないってどういう事だ?
以下のコード、間違えてるんだろうか
Sub foo()
Dim a As New Collection
Set a = Nothing
End Sub
nothingに出来ないってどういう事だ?
以下のコード、間違えてるんだろうか
Sub foo()
Dim a As New Collection
Set a = Nothing
End Sub
644デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/29(火) 07:06:07.15ID:YJRadFF90645デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/29(火) 07:24:06.81ID:Nk63wsBAa それをNothingにできないと言うか?
646デフォルトの名無しさん (ワッチョイ f568-+Ivz)
2022/03/29(火) 07:25:09.72ID:z3WwGups0647デフォルトの名無しさん (テテンテンテン MM96-tbOq)
2022/03/29(火) 08:16:28.05ID:JuGZiW1lM dictionaryって連想配列だろ
VBA的にはマスタの代わりか、重複を避けて集計するぐらいしか使わないイメージ
だからここで問題にされてることってどうでもいい気もするけどなw
>>602
お前の質問に答えられるレベルに人はここにはいないだろw
海外のサイトで質問するほうがいいよ
VBA的にはマスタの代わりか、重複を避けて集計するぐらいしか使わないイメージ
だからここで問題にされてることってどうでもいい気もするけどなw
>>602
お前の質問に答えられるレベルに人はここにはいないだろw
海外のサイトで質問するほうがいいよ
648デフォルトの名無しさん (ワッチョイ 0dce-+Ivz)
2022/03/29(火) 08:48:32.13ID:ZoTD6ZCz0 そもそもVBAのオブジェクト型は参照カウンタ方式だから、Nothingの代入はオブジェクトの破棄じゃないし
破棄の予約とでも言えばいいのかな
システムは予約が入ってるかどうか定期的にチェックして、可能なら破棄する
実際に破棄するタイミングはシステムが勝手に決めて、いつのまにか予測不可能なタイミングで破棄されてる
ところで破棄のアルゴリズムって公開されてる?
あるいは誰かが解析した資料がどっかにある?
破棄の予約とでも言えばいいのかな
システムは予約が入ってるかどうか定期的にチェックして、可能なら破棄する
実際に破棄するタイミングはシステムが勝手に決めて、いつのまにか予測不可能なタイミングで破棄されてる
ところで破棄のアルゴリズムって公開されてる?
あるいは誰かが解析した資料がどっかにある?
649デフォルトの名無しさん (ラクッペペ MM96-gZpx)
2022/03/29(火) 08:57:03.34ID:91VKkhT6M カウントゼロで破棄だろ
説明するまでもない
説明するまでもない
650デフォルトの名無しさん (スッップ Sdb2-nQMq)
2022/03/29(火) 08:58:53.63ID:TzrFOdrRd651デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/29(火) 10:42:09.75ID:YJRadFF90 この辺、VB.Netとかの他言語でCOMオブジェクトの解放とかやってないと想像つきにくいよね。
そういうの知ってても面倒くさいし、サーバーサイドでEXCEL自体ないこともあるから
あの手この手で別の方法使ってEXCELの更新行おうとするよね。
そういうの知ってても面倒くさいし、サーバーサイドでEXCEL自体ないこともあるから
あの手この手で別の方法使ってEXCELの更新行おうとするよね。
652デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/29(火) 11:13:32.55ID:DZfi33jJd 想像というよりやるべき作法をわからずに適当に作るからでは
使ったら解放するものは何か理解していれば間違えないでしょ
適当にここでNothingすればいいやとか思ってるから問題がおきてしまう
使ったら解放するものは何か理解していれば間違えないでしょ
適当にここでNothingすればいいやとか思ってるから問題がおきてしまう
653デフォルトの名無しさん (ブーイモ MMad-nQMq)
2022/03/29(火) 11:35:23.69ID:4eDRgxgoM654デフォルトの名無しさん (ワッチョイ 552f-XwpL)
2022/03/29(火) 12:59:23.02ID:YOHlvasK0 >>643
Set a = Nothing
のあとに
MsgBox (a Is Nothing)
とかやってみ
問題にしてるのはオブジェクト変数をNothingにできないことで
つまり
Set obj = Checkobj()
If obj Is Nothing Then
みたいなコードがバグるってことなんだが
>>648
インスタンスの解放とか問題にしてないが
破棄の予約ってなんなんだよ
Nothingの代入は単に参照カウンタを減らすだけだぞ
結果カウントゼロなら廃棄される
.Netじゃないし、VBAで
>システムが勝手に決めて、いつのまにか予測不可能なタイミングで破棄されてる
なんてことはないはず
Set a = Nothing
のあとに
MsgBox (a Is Nothing)
とかやってみ
問題にしてるのはオブジェクト変数をNothingにできないことで
つまり
Set obj = Checkobj()
If obj Is Nothing Then
みたいなコードがバグるってことなんだが
>>648
インスタンスの解放とか問題にしてないが
破棄の予約ってなんなんだよ
Nothingの代入は単に参照カウンタを減らすだけだぞ
結果カウントゼロなら廃棄される
.Netじゃないし、VBAで
>システムが勝手に決めて、いつのまにか予測不可能なタイミングで破棄されてる
なんてことはないはず
655デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/29(火) 13:35:16.03ID:oJxqSb9ha656デフォルトの名無しさん (ワッチョイ 552f-XwpL)
2022/03/29(火) 13:45:44.59ID:YOHlvasK0657デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/29(火) 13:49:11.35ID:DZfi33jJd >>654
バグるんではなく自分でバグらせてるだけでしょ
Dimで変数を宣言する際にNewを付与するとヘルプのこちらの記載
「オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの
新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を
割り当てる必要がなくなります。」
にある通り変数を参照する限りはNothingにすることはできない
(デバッグで変数を参照してしまっても同様)
変数がNothingか判定したいなら素直に宣言の際はNewを使わなければいいだけ
Newをどういうときに使うとコーディング上効果的かわからない、他人が理解できないかもしれないなら使わないほうがいい
バグるんではなく自分でバグらせてるだけでしょ
Dimで変数を宣言する際にNewを付与するとヘルプのこちらの記載
「オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの
新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を
割り当てる必要がなくなります。」
にある通り変数を参照する限りはNothingにすることはできない
(デバッグで変数を参照してしまっても同様)
変数がNothingか判定したいなら素直に宣言の際はNewを使わなければいいだけ
Newをどういうときに使うとコーディング上効果的かわからない、他人が理解できないかもしれないなら使わないほうがいい
658デフォルトの名無しさん (スップ Sd12-+Ivz)
2022/03/29(火) 13:53:26.54ID:/B8eDHF6d659デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/29(火) 14:15:22.73ID:YJRadFF90 でもこれ、ちょっと怖いよね
Dimの宣言時にNewしてやると、Nothingにしたら次触るとき、インスタンスが設定されていなければ
勝手に新しいインスタンスを設定するなんて
知らなかったら分岐に Is Nothingとか使いそうだし、知ってたら知ってたでSet 〜 As New 〜の代わりに使って、知ってる人じゃなければ分からないような属人化コードわざと書いたり出来るってことだもんね。
.Netとかでも同じような挙動をするのかな?
Dimの宣言時にNewしてやると、Nothingにしたら次触るとき、インスタンスが設定されていなければ
勝手に新しいインスタンスを設定するなんて
知らなかったら分岐に Is Nothingとか使いそうだし、知ってたら知ってたでSet 〜 As New 〜の代わりに使って、知ってる人じゃなければ分からないような属人化コードわざと書いたり出来るってことだもんね。
.Netとかでも同じような挙動をするのかな?
660デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/29(火) 14:49:39.05ID:DZfi33jJd 怖いもなにもヘルプに書いてあることを理解せずに伝えたりそれを聞きかじっただけでやるからでしょ
質問する側も答える側も一部分だけのやり取りしてるのを踏まえて会話しないと事故のもとだよ
まあ事故るのは質問する側だけなんで答える側はそこまで保証できないが
質問する側も答える側も一部分だけのやり取りしてるのを踏まえて会話しないと事故のもとだよ
まあ事故るのは質問する側だけなんで答える側はそこまで保証できないが
661デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/29(火) 15:00:51.71ID:5Hfxlu6fa >>657
> 「オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を割り当てる必要がなくなります。」
から
> 変数を参照する限りはNothingにすることはできない
と言うのは飛躍しすぎ
問題はそっちじゃなくて
> 「必ずオブジェクトが存在することが保証される (Nothing を設定してオブジェクトが破棄されたとしても、オブジェクト変数を再利用しようとすると、再作成される)」
の方な
ただ個人的には上記の文で「オブジェクトが破棄されたとして」のくだりは余計だと思う
複数から参照されてたらオブジェクト自体は破棄されないから
> 「オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を割り当てる必要がなくなります。」
から
> 変数を参照する限りはNothingにすることはできない
と言うのは飛躍しすぎ
問題はそっちじゃなくて
> 「必ずオブジェクトが存在することが保証される (Nothing を設定してオブジェクトが破棄されたとしても、オブジェクト変数を再利用しようとすると、再作成される)」
の方な
ただ個人的には上記の文で「オブジェクトが破棄されたとして」のくだりは余計だと思う
複数から参照されてたらオブジェクト自体は破棄されないから
662デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/29(火) 15:09:04.14ID:DZfi33jJd Nothingしてもその後に”変数を参照した”らNothingが再作成されたインスタンスに変わるんだからできないと一緒じゃない?
それと変数とオブジェクトを一緒に考えてないか?
自分は
Dim A As Object
Dim B As Object
Set A = XXX
Set B = A
Set A = Nothing
この場合のAの話をしていてXXXで作成したインスタンスの話はしてないよ
それと変数とオブジェクトを一緒に考えてないか?
自分は
Dim A As Object
Dim B As Object
Set A = XXX
Set B = A
Set A = Nothing
この場合のAの話をしていてXXXで作成したインスタンスの話はしてないよ
663デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/29(火) 15:12:01.06ID:DZfi33jJd まあどうでもいい話だった無視してくれ
すまん
すまん
664デフォルトの名無しさん (ワッチョイ 552f-XwpL)
2022/03/29(火) 15:23:41.67ID:YOHlvasK0 >>657
元の話はなぜDimでNewしないって話だから
バグのもとだからやめといたほうが良いという、理由の可能性の一つを挙げてるだけだが
実際知っててもミスることはあるし、しらないとデバッグが困難だからな
元の話はなぜDimでNewしないって話だから
バグのもとだからやめといたほうが良いという、理由の可能性の一つを挙げてるだけだが
実際知っててもミスることはあるし、しらないとデバッグが困難だからな
665デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/29(火) 15:30:09.53ID:9zoeUatEa666デフォルトの名無しさん (ワッチョイ 552f-XwpL)
2022/03/29(火) 15:31:19.17ID:YOHlvasK0667デフォルトの名無しさん (アウアウウー Sacd-1WDX)
2022/03/29(火) 15:54:16.92ID:ffasCIjOa668デフォルトの名無しさん (ワッチョイ 55d3-Q6Rq)
2022/03/29(火) 18:10:12.28ID:OyTS9aq30 列ではなく、選択した箇所だけを固定したいのですが出来ませんか?
669デフォルトの名無しさん (ワッチョイ 0dce-+Ivz)
2022/03/29(火) 18:32:44.42ID:ZoTD6ZCz0670デフォルトの名無しさん (スップ Sdb2-Slbg)
2022/03/29(火) 18:52:31.36ID:DZfi33jJd 各自が想定してるコードが違うんだから言葉遊びにすぎないよ
自分のレスもいまいちだったかもしれんがNothingをセットして終了するならNothingかもしれないが
後続のコードにIs Nothingなり変数の参照があるならそれは結果的にNothingではなくなるのと一緒と自分は思ってるだけ
例に出して申し訳ないが
> Set a = Nothing
> のあとに
> MsgBox (a Is Nothing)
これとかね
自分なりの結論は宣言時にNewは使わないほうが無難
自分のレスもいまいちだったかもしれんがNothingをセットして終了するならNothingかもしれないが
後続のコードにIs Nothingなり変数の参照があるならそれは結果的にNothingではなくなるのと一緒と自分は思ってるだけ
例に出して申し訳ないが
> Set a = Nothing
> のあとに
> MsgBox (a Is Nothing)
これとかね
自分なりの結論は宣言時にNewは使わないほうが無難
671デフォルトの名無しさん (ワッチョイ 552f-XwpL)
2022/03/29(火) 19:12:31.97ID:YOHlvasK0 >代入すればNothingになる
>その次にアクセスすると、またそのタイミングで自動的にNewされる
厳密にはその通り
そんなことは分かったうえで、それをコード上で確認できないから
Nothingにならない と表現したわけで、その表現が間違いらしいですわ
(VBAコードから)オブジェクト変数をNothingとして評価できない
すべての個所をそう読み替えといてくれ
飽きたし俺はこの話はもうこれで終わり
>その次にアクセスすると、またそのタイミングで自動的にNewされる
厳密にはその通り
そんなことは分かったうえで、それをコード上で確認できないから
Nothingにならない と表現したわけで、その表現が間違いらしいですわ
(VBAコードから)オブジェクト変数をNothingとして評価できない
すべての個所をそう読み替えといてくれ
飽きたし俺はこの話はもうこれで終わり
672デフォルトの名無しさん (ワッチョイ 924f-JoQ9)
2022/03/29(火) 19:15:45.64ID:YJRadFF90 まぁ>>670の言う通り言葉遊びだよね
みんな実際の挙動は理解しての会話になってるみたいだし
みんな実際の挙動は理解しての会話になってるみたいだし
673デフォルトの名無しさん (ワッチョイ b5e6-gZpx)
2022/03/29(火) 19:19:18.21ID:y+mxjJK80 まあオレは今まで知らなかったけどな!
674デフォルトの名無しさん (ワッチョイ 655f-ObPs)
2022/03/29(火) 19:32:15.47ID:/IcSX3Pk0 >>644
おれ以外にもthom先生見てる人いたか
おれ以外にもthom先生見てる人いたか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- 【マギレコ】VIPでマギアレコード&マギアエクセドラ【まどドラ】
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【画像】中国、ガチで未来感ハンパない変態スマホを発明してしまう
- 【高市悲報】ウクライナ、ガチで敗北か?東部の帰属国民投票にかける可能性-ゼレンスキー [888298477]
- 【画像】サーナイト「お、起きないとチューしちゃうぞ…」ボソ
