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


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

Excel VBA 質問スレ Part75



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]
カウントゼロで破棄だろ
説明するまでもない






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

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

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