1 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 14:24:32.62 ID:I0u44nFvd.net] !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
560 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:45:45.83 ID:378bs0UD0.net] >>549 何だろう、クエリってSQLも立派なクエリだよ? そっちの言ってるクエリの定義が分からない。 アクセスとかにあるあのツールっぽいのを言ってるのかな?
561 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:46:14.94 ID:8eXyKRPB0.net] 普通にマクロの記録使ってシート1の範囲をコピーして シート2の開始地点で貼り付けたらいいだけじゃないの…
562 名前:デフォルトの名無しさん [2022/03/25(金) 21:47:30.56 ID:UnnJynAs0.net] そうすると横にデータを並べていきたいので重複していきます シート全体の数もそのときどきで変わるので
563 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:50:02.56 ID:378bs0UD0.net] ??? どんどん何をしたいのか分からなくなってくるね
564 名前:デフォルトの名無しさん [2022/03/25(金) 21:51:28.75 ID:UnnJynAs0.net] >>553 簡単に言うと、複数シートにまたがる複数列の1から4列のデータを、 1枚のシートの横に縦の行を順番に並べていきたいのです
565 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:56:14.91 ID:w2X6jrV+0.net] ズコーッ !
566 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:56:37.17 ID:378bs0UD0.net] >>554 本当に単純にそれだけなら 2シート目の1〜4列目をコピーして 1シート目に貼り付けたあとに、 貼り付け先の列先を+4して シート3以降、シートがある分だけそれを 繰り返せばいいんじゃないの?
567 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:57:03.52 ID:qxuRWoIYM.net] ID:UnnJynAs0と一緒に仕事しなきゃいけない同僚には同情する
568 名前:デフォルトの名無しさん [2022/03/25(金) 21:58:28.35 ID:UnnJynAs0.net] >>556 そうなると場合によっては数百のシートを手作業でコピーしなければならないので現実出来ではありません
569 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:03:32.99 ID:378bs0UD0.net] >>558 は? 手作業ってどこから出てきたの? そういうコードを組めばいいという話をしてるつもりだったんbだけど伝わらなかったかな?
570 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:03:48.41 ID:8eXyKRPB0.net] 手作業でコピーしなければならない んじゃなくて ループでそれぞれのワークシートを参照 したらいいじゃん >>556 は 「手作業で」 なんて一言も書いてないよ
571 名前:デフォルトの名無しさん [2022/03/25(金) 22:05:38.52 ID:UnnJynAs0.net] >>560 どうすればそれができますか?
572 名前:デフォルトの名無しさん [2022/03/25(金) 22:06:11.03 ID:UnnJynAs0.net] エクセルの方のクエリでは縦に連結されて出てきたのでやり方を教えて下さい
573 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:08:44.67 ID:378bs0UD0.net] >>562 いや、そもそもそれだけの処理ならクエリなんて必要ないでしょ
574 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:12:12.99 ID:8eXyKRPB0.net] >>561 Worksheets.Count でシートの数を持ってこれるから Worksheets(n) ※nは1始まり でそれぞれのワークシートを参照できるから 後はループの中で >>556 の言う通り行番号を加算しながら貼り付けするなり参照貼るなりすればできるよ 俺はもうここまで伝えるので限界
575 名前:デフォルトの名無しさん [2022/03/25(金) 22:15:02.86 ID:UnnJynAs0.net] >>563 すみません、パワークエリのことです プログラム組んだりとかはできません
576 名前:デフォルトの名無しさん [2022/03/25(金) 22:15:06.77 ID:UnnJynAs0.net] >>563 すみません、パワークエリのことです プログラム組んだりとかはできません
577 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:23:46.18 ID:4vyR1Miw0.net] >>554 もしかしてPower Queryで言うところのマージをしたいの? 複数シートに共通する、keyとなる列が1つあれば出来るけど。
578 名前:デフォルトの名無しさん [2022/03/25(金) 22:39:41.75 ID:UnnJynAs0.net] >>567 複数シートの配列は同じで、データの内容だけがちがいます
579 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:44:11.29 ID:3hBoOPeGa.net] >>565 来る板間違えてる > ローカルルール > この板はプログラムを作る人のための板です。 こっちへ行け 【Excel】Power Queryを語るスレ【Power BI】 https://mevius.5ch.net/test/read.cgi/bsoft/1571540368/
580 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:44:52.03 ID:4vyR1Miw0.net] >>568 縦軸となる共通するkey列はなに? 何の順番で行が並んでるの?
581 名前:デフォルトの名無しさん [2022/03/25(金) 22:58:31.64 ID:UnnJynAs0.net] >>569 ありがとうございます
582 名前:デフォルトの名無しさん [2022/03/25(金) 22:58:38.87 ID:378bs0UD0.net] なんだ、Power Queryか。 いい機会だからVBAも勉強してってくれ
583 名前:デフォルトの名無しさん [2022/03/25(金) 22:59:53.49 ID:378bs0UD0.net] Sub hoge() Dim targetSheet As Worksheet Dim bottomRow As Long Dim toPasteColumn As Long Dim isFirstTime As Boolean isFirstTime = True toPasteColumn = 1 With ThisWorkbook If .Sheets.Count = 1 Then Exit Sub End If For Each targetSheet In .Worksheets If Not isFirstTime Then targetSheet.Activate bottomRow = targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Row targetSheet.Range(targetSheet.Cells(1, 1), targetSheet.Cells(bottomRow, 4)).Copy _ Destination:=Sheets(1).Cells(1, toPasteColumn) toPasteColumn = toPasteColumn + 4 End If isFirstTime = False Next End With End Sub
584 名前:デフォルトの名無しさん [2022/03/25(金) 23:02:44.53 ID:378bs0UD0.net] うん、やっぱりインデントつぶれたね。 これで動くはずなので良ければVBEに張り付けて実施してみて。 最初のA列がキーであることが前提だけども。
585 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 00:22:2
] [ここ壊れてます]
586 名前:2.08 ID:wN9O5mc/0.net mailto: あれ?確かインデント用のツールを紹介してくれている親切な人いたような? あれ具合良さそう。 [] [ここ壊れてます]
587 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 00:30:29.64 ID:3d/IeTqK0.net] Sub aaa() For bbb = 0 To 0 If ccc = 0 Then ddd = eee End If Next End Sub
588 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 01:25:30.54 ID:x5oh4kDTa.net] ツールの利用者から、ツールの改修担当者に問合せがいったんでしょ。 改修担当といっても、前任者から引き継いだだけだから、全ての仕様はわかっていない。 現在の業務にそぐわない仕様があって、エラーが出たから、 利用者が改修担当者に問合せ。 前任者なら「もともとこういう仕様です」と答えれば、 「ああ、それなら業務が変わったから改修が必要だな」と 改修依頼を出せる。 ツールの利用者も着任して間もない人の場合、 業務が変わったのかどうかもわからない。 そういう場合、ソースコードの条件文を日本語にして 回答するのではなくて、 昔から存続しているチームの誰かに聞くのが普通。 それをしないのは職務怠慢。 自分一人で売上を引っ張ってこれていると勘違いしているのかな。
589 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 06:35:02.37 ID:4/mAEYCl0.net] >昔から存続しているチームの誰かに聞くのが普通。 >それをしないのは職務怠慢。 つまりそれをしないで改修担当者に聞いてるやつが悪いってことだな
590 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 10:14:46.58 ID:p8/YoqyTd.net] ここって長文で講釈を垂れる人おおいよね しかもVBAにはまったく無関係という
591 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 12:35:46.08 ID:OVfO91qG0.net] 自力でできないのに調べない、人に聞かない、期待されているのものがつくれないのは できない人 としか言いようがない
592 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 15:44:49.86 ID:wN9O5mc/0.net] 時には長文になるのは仕方ないよ。 丁寧に説明するばそうならね? 上の方で個人名みたいの書いてるアレな人いるけど今の5ちゃんて個人名書いただけでNGじゃなかったか?
593 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 16:02:36.43 ID:1KsbV4Zma.net] 個人名NGの規制ってあるのか? WindowsやLinux板とかでは機能していないように見えるけど
594 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 17:07:43.61 ID:kCwfN6Gy0.net] 個人名というか個人情報な 通報されたら警察来るかな
595 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 17:58:02.51 ID:wN9O5mc/0.net] 昔バイトしていた居酒屋のマスターが5ちゃんに実名晒されて誹謗中傷書かれていたのを思い出してさ。
596 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 18:09:02.02 ID:Gn2xNTk6p.net] >>577 > 昔から存続しているチーム そんなのは跡形もないから
597 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 20:17:20.58 ID:wN9O5mc/0.net] 職務怠慢は言い過ぎでは? 何かしらの事情あるだろうし。
598 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:22:10.99 ID:lmdSWMnfa.net] 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 & "ロボットみたいな人が多い。"
599 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:52:13.63 ID:4I5liEUu0.net] 何? この気持ち悪いスレ・・・・・・
600 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:57:27.46 ID:zJILPsYJM.net] >>587 汚いコードだな、そんな代入の仕方じゃ変数を4つ用意した意味がまったくないじゃん そういう時は最後に足すんだよ Dim DeathStory As String DeathStory = ki & shou & ten & ketu
601 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:58:14.85 ID:zJILPsYJM.net] >>588 そっ閉じすりゃいいのに、そんなスレに何か書き込んでる時点で同類
602 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 03:21:42.29 ID:hNNvtCzu0.net] 深夜になると定期的に変な書き込みあるよね
603 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 03:29:36.79 ID:/OZccBd9M.net] >>591 自己紹介かよ!
604 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 07:40:40.82 ID:BqsGdBXW0.net] >>587 無駄に 変数 = 変数 & 文字列 をやると その分余計にメモリを使用する。やり直し。
605 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 09:48:21.10 ID:8deA3KtJa.net] そもそも >>587 だと "まあいろんな事情があるよねチームメイトに嫌われていて聞きづらいとか「こんなことくらいしかわからなくて、すみません」と謝られてもお前がそんなことしかわからないことは、百も承知。誰かに回してくれることも見込んでの質問なんだけど、ってね。プログラマーは基本、自分ひとりで仕事完結して、周りに電話したりメールしたりチャットしたり、という連携は面倒くさがる人が多いからね。コーディングされていないことは、できませんが何か? みたいな職務はここまで。これ以上はできませんが何か?みたいなロボットみたいな人が多い。" ってなるし、適宜 vbCrLf 挟めや
606 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:09:59.57 ID:GXS4gvi+M.net] >>594 読んでないけど読む価値のないレスであることだけは判る
607 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:21:55.52 ID:dieR0oCra.net] ↑ どこを読めばいいのかもわからんアホw
608 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:33:27.62 ID:jqHr+5yx0.net] 最初と最後の行しか読んでないけど スペースも改行もつかないって突っ込みだって事だけは判る
609 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:56:36.33 ID:hNNvtCzu0.net] ようは字下げしないと読みにくいって教えてくれたんですね親切な人。
610 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 11:49:34.86 ID:17nxG3290.net] >>593 そうなのか 賢くなった でもいつものクセでSQL文はこの式で書いているわ
611 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:17:45.42 ID:CPBl4WFea.net] >>597 それで十分、てか最後の行読んだらわかるだろ
612 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:19:46.20 ID:CPBl4WFea.net] >>599 まあ高々数十行位なら気にすることはないよ
613 名前:デフォルトの名無しさん [2022/03/27(日) 12:41:21.31 ID:cPay0R1J0.net] 誰かSalseforceのAPIをVBAでたたく方法わかる人いませんか? API関連に関して全く無知で、何をどうしていいのか、、、 詳しい人教えてほしいです、、
614 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:52:04.46 ID:dAzXJbreM.net] 字下げや改行なんてVBAでやることじゃない 印刷だろうが電子化だろうが、文書の整形は出力アプリ側に投げるもんだ リーダー端末の画面サイズやフォントサイズなんて予測できんだろ?
615 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 13:07:11.24 ID:OVREMJced.net] 文書の整形と文書自体を一緒にしてしまうところが悲しい・・・
616 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 17:11:35.24 ID:hNNvtCzu0.net] なんでよ?VBAの義務教育編で字下げは真っ先に学習するはずじゃ??
617 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 17:22:28.69 ID:2Abk94v90.net] 年収1000万のインド人はインデントもコメントもなし 一般人はちゃんとつけよう
618 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 17:30:10.15 ID:6akgwO9ga.net] >>602 アクセスするライブラリとAPIリファレンスを掲示してくれたら捗るんじゃね?
619 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 17:33:41.29 ID:OVREMJced.net] >>607 APIは変に教えるとよくないと思うから それを使って何かするような事をしたいなら正式な仕事なりで発注させるべきだと思うぞ そもそも何もわかってない奴がここで質問してるのもおかしな話だろ
620 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 17:34:17.13 ID:OVREMJced.net] スクレイピングもたまに質問するやつがいるけど それも同じな
621 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 17:50:20.50 ID:ob1ESvJwH.net] >>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
622 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 19:02:58.02 ID:jqHr+5yx0.net] >>600 そうだな >>597 は>>595 へのレスだ
623 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 19:18:00.28 ID:7EXZAGuD0.net] >>610 VBAのスクレイピングは今だとSelenium使ったChromeのスクレイピングが主流なんじゃなかろうか バージョン合わせるのが面倒だけど安定してるし
624 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 19:39:07.33 ID:2Abk94v90.net] Seleniumはほんといいね IEからxpathで・・・ってやってたのがほんとアホらしくなった
625 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 19:43:23.36 ID:U13zJWe20.net] Seleniumは昔インストールしたんだがよくわからず 未だにIEばかり使ってるんだが もうそろそろ切り替えた方がいいのかな
626 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 19:51:02.70 ID:7EXZAGuD0.net] 昔のSeleniumはChromeの方にも拡張機能入れて…とかだった気がするけど今は事前準備も書くのも凄く簡単になってるね
627 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 19:59:57.15 ID:2Abk94v90.net] >>614 100%切り替えた方が良い ちょっと癖があるけど、cssセレクタ覚えればアホみたいに楽になるぞ ちなみにXPathはしんどい
628 名前:デフォルトの名無しさん [2022/03/27(日) 20:17:18.33 ID:Df2KiTxu0.net] 質問です。 連想配列に格納した連想配列の値を取り出すには どうしたらよいのでしょうか? 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") とかで出せるかと思ったのですが駄目でした。
629 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 20:19:01.83 ID:uW5IEa4H0.net] set TikuB = dickA("A") Tikubi("b") = bibibibibi-----
630 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 20:22:07.59 ID:EN8vWua40.net] >>610 For EachなのにIfで条件指定しないのか
631 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 20:29:11.49 ID:hNNvtCzu0.net] 乳首エロい
632 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 20:31:09.02 ID:BqsGdBXW0.net] >>617 よく分からんのだけど、Dictionalyって 型宣言しただけで使えるの? 普通に考えると、 Set dic A = New Dictionaly Set dic B = New Dictionaly とか、必要そうに見えるけど。
633 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 20:33:33.24 ID:BqsGdBXW0.net] おっと、Dictionalyのスペルが違ってるか Dictionaryかすまんこ
634 名前:デフォルトの名無しさん [2022/03/27(日) 20:45:16.14 ID:Df2KiTxu0.net] 元の文と違いますが解決しました。 ありがとうございました。 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
635 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 01:22:22.67 ID:LEJNBveMa.net] ("A")
636 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 02:04:12.07 ID:dJWBHkZn0.net] (:; U: ::)
637 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 07:56:32.13 ID:bggr0gZp0.net] Selenium Webdriver と、 Chrome の拡張機能・Selenium IDE の2種類ある
638 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 07:57:45.06 ID:W5FkPi4A0.net] Selenium Webdriver
639 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 12:34:55.90 ID:DkLhkvc4M.net] ウェブダイバー
640 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 13:29:17.84 ID:9Kb03WZY0.net] ウェブダイバーはカラオケで歌うぞ
641 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 18:29:52.50 ID:jKre83rL0.net] >>623 今更だけど Dim dicA As New Dictuonary みたいに普通に1命令で設定しなかったのは何故?
642 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 18:47:34.87 ID:2Ad/srHwa.net] 横からだけど For ... Dim D As New Dictionary ... Next ってやると最初の一回しかNewしないから常に Dim D As Dictionary: Set D = New Dictionary ってやる人はいるみたい
643 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 18:55:38.23 ID:jKre83rL0.net] >>631 いやいや、ループでそれぞれ別インスタンスとして使うにしても、定義は1回でNewするのが複数回で済むでしょ。 例えば上のレスのようにDictionaryにDictionaryを格納する場合でもDictionaryにしまった時点で参照は渡されるんだから消えないし、 その後、Newしてまた渡してやればインスタンスはまた別物として扱われるよね。
644 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 19:07:54.06 ID:AcTRGxgL0.net] コードで語ればいいのに
645 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 19:46:09.16 ID:W5FkPi4A0.net] >>630 知らなかっただけじゃないか
646 名前:デフォルトの名無しさん [2022/03/28(月) 19:46:21.63 ID:jKre83rL0.net] >>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の参照情報が格納されているため、きちんと別の値が保持される。 つまりはそういうこと。
647 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 19:51:37.75 ID:BH9MBdK/a.net] ↑ こいつは一体何を説明してるんだろう…
648 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 19:53:39.70 ID:nzzJclxc0.net] みんな教え方バラバラだから質問者が困ってるよー
649 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 20:06:46.75 ID:GBAIeVpDp.net] >>636 分からないならすっこんでればいいんじゃないかな
650 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 20:07:19.86 ID:jdteRYNZd.net] 実務ではよくある話
651 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 21:12:23.25 ID:DlrSWjY+a.net] >>637 >>617 の質問は解決してるし、>>630 の質問は>>634 が一番ありそうだし 困ってる質問者って誰? >>638 そうだねw
652 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 00:49:06.48 ID:zHBdUnr/a.net] >>638 うるさい、だまってればいいんじゃないかな
653 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 01:38:58.63 ID:YOHlvasK0.net] まあ、知らなかっただけって可能性が高いんだが DimでNewしてるオブジェクト変数はNothingにできないって罠があるからな そして今更だが、VBAにDictionaryはないぞ、と
654 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 06:28:42.33 ID:z3WwGups0.net] >>642 nothingに出来ないってどういう事だ? 以下のコード、間違えてるんだろうか Sub foo() Dim a As New Collection Set a = Nothing End Sub
655 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 07:06:07.15 ID:YJRadFF90.net] >>643 https://thom.hateblo.jp/entry/2016/09/27/221527
656 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 07:24:06.81 ID:Nk63wsBAa.net] それをNothingにできないと言うか?
657 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 07:25:09.72 ID:z3WwGups0.net] >>644 量子論で草 nothingできるけど元に戻る、vbaの狂気を垣間見た気がする
658 名前:デフォルトの名無しさん [2022/03/29(火) 08:16:28.05 ID:JuGZiW1lM.net] dictionaryって連想配列だろ VBA的にはマスタの代わりか、重複を避けて集計するぐらいしか使わないイメージ だからここで問題にされてることってどうでもいい気もするけどなw >>602 お前の質問に答えられるレベルに人はここにはいないだろw 海外のサイトで質問するほうがいいよ
659 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:48:32.13 ID:ZoTD6ZCz0.net] そもそもVBAのオブジェクト型は参照カウンタ方式だから、Nothingの代入はオブジェクトの破棄じゃないし 破棄の予約とでも言えばいいのかな システムは予約が入ってるかどうか定期的にチェックして、可能なら破棄する 実際に破棄するタイミングはシステムが勝手に決めて、いつのまにか予測不可能なタイミングで破棄されてる ところで破棄のアルゴリズムって公開されてる? あるいは誰かが解析した資料がどっかにある?
660 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:57:03.34 ID:91VKkhT6M.net] カウントゼロで破棄だろ 説明するまでもない