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
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] カウントゼロで破棄だろ 説明するまでもない
661 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:58:53.63 ID:TzrFOdrRd.net] >>648 トレーシングGCと参照カウントがごっちゃになってるのかな 参照カウントは基本的に参照が外れたら即破棄
662 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 10:42:09.75 ID:YJRadFF90.net] この辺、VB.Netとかの他言語でCOMオブジェクトの解放とかやってないと想像つきにくいよね。 そういうの知ってても面倒くさいし、サーバーサイドでEXCEL自体ないこともあるから あの手この手で別の方法使ってEXCELの更新行おうとするよね。
663 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 11:13:32.55 ID:DZfi33jJd.net] 想像というよりやるべき作法をわからずに適当に作るからでは 使ったら解放するものは何か理解していれば間違えないでしょ 適当にここでNothingすればいいやとか思ってるから問題がおきてしまう
664 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 11:35:23.69 ID:4eDRgxgoM.net] >>602 Salesforce CLIを呼び出してCSV等に出力し、それを読み込めばいい VBAから直接APIを呼ぶのは自前でパースしなきゃいけなくて面倒だぞ
665 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 12:59:23.02 ID:YOHlvasK0.net] >>643 Set a = Nothing のあとに MsgBox (a Is Nothing) とかやってみ 問題にしてるのはオブジェクト変数をNothingにできないことで つまり Set obj = Checkobj() If obj Is Nothing Then みたいなコードがバグるってことなんだが >>648 インスタンスの解放とか問題にしてないが 破棄の予約ってなんなんだよ Nothingの代入は単に参照カウンタを減らすだけだぞ 結果カウントゼロなら廃棄される .Netじゃないし、VBAで >システムが勝手に決めて、いつのまにか予測不可能なタイミングで破棄されてる なんてことはないはず
666 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:35:16.03 ID:oJxqSb9ha.net] >>654 > Set a = Nothing > のあとに > MsgBox (a Is Nothing) > とかやってみ >>644 のリンク先にも書いてあるけどMsgBox にブレークポイントかけてウオッチウインドで見てみ Nothing にできないことと、Nothing の時に参照されたら New されると言うのは違う
667 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:45:44.59 ID:YOHlvasK0.net] >>655 ああ、そうだな オブジェクト変数をNothingにできない は (VBAコードから)オブジェクト変数をNothingとして評価できない に訂正しとくわ
668 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:49:11.35 ID:DZfi33jJd.net] >>654 バグるんではなく自分でバグらせてるだけでしょ Dimで変数を宣言する際にNewを付与するとヘルプのこちらの記載 「オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの 新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を 割り当てる必要がなくなります。」 にある通り変数を参照する限りはNothingにすることはできない (デバッグで変数を参照してしまっても同様) 変数がNothingか判定したいなら素直に宣言の際はNewを使わなければいいだけ Newをどういうときに使うとコーディング上効果的かわからない、他人が理解
669 名前:ナきないかもしれないなら使わないほうがいい [] [ここ壊れてます]
670 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:53:26.54 ID:/B8eDHF6d.net] >>656 評価って表現もなんかおかしくない? Nothingになっていることを確認できない、とか
671 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 14:15:22.73 ID:YJRadFF90.net] でもこれ、ちょっと怖いよね Dimの宣言時にNewしてやると、Nothingにしたら次触るとき、インスタンスが設定されていなければ 勝手に新しいインスタンスを設定するなんて 知らなかったら分岐に Is Nothingとか使いそうだし、知ってたら知ってたでSet 〜 As New 〜の代わりに使って、知ってる人じゃなければ分からないような属人化コードわざと書いたり出来るってことだもんね。 .Netとかでも同じような挙動をするのかな?
672 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 14:49:39.05 ID:DZfi33jJd.net] 怖いもなにもヘルプに書いてあることを理解せずに伝えたりそれを聞きかじっただけでやるからでしょ 質問する側も答える側も一部分だけのやり取りしてるのを踏まえて会話しないと事故のもとだよ まあ事故るのは質問する側だけなんで答える側はそこまで保証できないが
673 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:00:51.71 ID:5Hfxlu6fa.net] >>657 > 「オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を割り当てる必要がなくなります。」 から > 変数を参照する限りはNothingにすることはできない と言うのは飛躍しすぎ 問題はそっちじゃなくて > 「必ずオブジェクトが存在することが保証される (Nothing を設定してオブジェクトが破棄されたとしても、オブジェクト変数を再利用しようとすると、再作成される)」 の方な ただ個人的には上記の文で「オブジェクトが破棄されたとして」のくだりは余計だと思う 複数から参照されてたらオブジェクト自体は破棄されないから
674 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:09:04.14 ID:DZfi33jJd.net] Nothingしてもその後に”変数を参照した”らNothingが再作成されたインスタンスに変わるんだからできないと一緒じゃない? それと変数とオブジェクトを一緒に考えてないか? 自分は Dim A As Object Dim B As Object Set A = XXX Set B = A Set A = Nothing この場合のAの話をしていてXXXで作成したインスタンスの話はしてないよ
675 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:12:01.06 ID:DZfi33jJd.net] まあどうでもいい話だった無視してくれ すまん
676 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:23:41.67 ID:YOHlvasK0.net] >>657 元の話はなぜDimでNewしないって話だから バグのもとだからやめといたほうが良いという、理由の可能性の一つを挙げてるだけだが 実際知っててもミスることはあるし、しらないとデバッグが困難だからな
677 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:30:09.53 ID:9zoeUatEa.net] >>662 混同してるのはお前さんの方 Aは変数でオブジェクトじゃないぞ
678 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:31:19.17 ID:YOHlvasK0.net] >>662 まあ、Nothingにできないは厳密には確かに違う。Nothing代入できるし Nothingにならないって言うほうが正しいな このコンテキストでその違いが重要か?とは思うが
679 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:54:16.92 ID:ffasCIjOa.net] >>666 違いは重要じゃないけど > Nothingにならないって言うほうが正しいな と言う明らかな間違いを言い続けるのはどうかと思うぞ… ⇒ >>655
680 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:10:12.28 ID:OyTS9aq30.net] 列ではなく、選択した箇所だけを固定したいのですが出来ませんか?
681 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:32:44.42 ID:ZoTD6ZCz0.net] >>666 違う 代入すればNothingになる その次にアクセスすると、またそのタイミングで自動的にNewされる
682 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:52:31.36 ID:DZfi33jJd.net] 各自が想定してるコードが違うんだから言葉遊びにすぎないよ 自分のレスもいまいちだったかもしれんがNothingをセットして終了するならNothingかもしれないが 後続のコードにIs Nothingなり変数の参照があるならそれは結果的にNothingではなくなるのと一緒と自分は思ってるだけ 例に出して申し訳ないが > Set a = Nothing > のあとに > MsgBox (a Is Nothing) これとかね 自分なりの結論は宣言時にNewは使わないほうが無難
683 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:12:31.97 ID:YOHlvasK0.net] >代入すればNothingになる >その次にアクセスすると、またそのタイミングで自動的にNewされる 厳密にはその通り そんなことは分かったうえで、それをコード上で確認できないから Nothingにならない と表現したわけで、その表現が間違いらしいですわ (VBAコードから)オブジェクト変数をNothingとして評価できない すべての個所をそう読み替えといてくれ 飽きたし俺はこの話はもうこれで終わり
684 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:15:45.64 ID:YJRadFF90.net] まぁ>>670 の言う通り言葉遊びだよね みんな実際の挙動は理解しての会話になってるみたいだし
685 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:19:18.21 ID:y+mxjJK80.net] まあオレは今まで知らなかったけどな!
686 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:32:15.47 ID:/IcSX3Pk0.net] >>644 おれ以外にもthom先生見てる人いたか
687 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 20:35:52.45 ID:TgcL8J/yM.net] どう見ても最初はわかってなかったやろ 最後にやっと理解できたみたいだけど
688 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 21:25:13.63 ID:YV5lTWI/0.net] 人に優しく行きましょう それは分かる人に与えられた特権なのです
689 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 05:40:49.56 ID:bXpTryOw0.net] 人生は優しくなるためにある
690 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:23:09.21 ID:0ps204vGM.net] スマホ手打ちなので誤字等ありましたらすみませんがよろしくお願いします。 rangeを用いた範囲指定でcells(row,columns)の行、列の部分に端数切り上げで数式を入れたいと考えています。 vbaで roundupを用いる時はworksheetfunction.をつける必要があることをネットで知ったのですが、ページによって頭にapplication.をつけてるものとそうでないものが混在しました。有無によってどのような違いがあるのか教えてください。
691 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:47:30.52 ID:06EhkzBAd.net] 数式を入れるのかワークシート関数を使って値をいれたいのかよくわからないけど 後半の質問であればVBA上では動作に違いはないよ 「https://docs.microsoft.com/ja-jp/office/vba/api/excel.application(object)」の 「アクティブ セル (ActiveCell プロパティ) など、最も一般的なユーザーインターフェイス オブジェクトを返すプロパティとメソッドのほとんどは、Application オブジェクト修飾子を指定しないで使用できます。」 と書いてある通り こういう質問する前にヘルプを見ると知りたい事や知っておいたいいことが書いてる場合もあるし怪しい回答の知識を覚えなくて済むから見る癖つけたほうがいいぞ
692 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:54:37.31 ID:6Q6BE8PxM.net] >679 ありがとう、参考にします。
693 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 09:15:22.27 ID:p8/VPuFXr.net] いえいえ
694 名前:デフォルトの名無しさん [2022/03/30(水) 10:25:12.15 ID:otm0Hfbh0.net] 実際に組んでみてうまく行かない場合に調べるとか質問とかしたらいいと思う
695 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 10:38:48.27 ID:xL2+oAob0.net] ちょっと教えてください 複数のシートを一緒にスクロールして 常に同じ位置に同じ行列が表示させられるような移動方法ってありますか? 例) シート1〜シート10までをグループ化して シート1をスクロールして1000行目を頭に表示すると 残りのシート2〜シート10も同じように1000行目を表示している よろしくお願いします
696 名前:デフォルトの名無しさん [2022/03/30(水) 14:07:54.57 ID:4QxrGADI0.net] 裸の王様がやってきた やってきた やってきたぞ
697 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 19:23:16.04 ID:QNA9H61R0.net] >>683 いったんアクティブにしていいなら Application.GotoとかWindow.ScrollIntoViewとかで表示位置は変えられるけど まあ使い物にならない可能性が高いな アクティブじゃないシートのスクロール位置を変える方法があるなら俺も知りたい それかWindow10個作って同時にスクロールにするとか
698 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 19:31:25.53 ID:ljpoek3c0.net] 複数のシートのデータを纏めたシートを作ったらどうかな
699 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 19:32:55.87 ID:2JfZorGz0.net] スクロールのイベントってないんか クリックしたセルを同じにするマクロ なんじゃこりゃ Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "Sheet1" Then Sheets("sheet2").Select Sheets("sheet2").Cells(Target.Row, Target.Column).Select Sheets("sheet3").Select Sheets("sheet3").Cells(Target.Row, Target.Column).Select Sheets("sheet1").Select End If End Sub
700 名前:デフォルトの名無しさん [2022/03/30(水) 19:47:16.20 ID:R9seM6Mc0.net] 馬鹿が考えた操作なんて実装しても、所詮馬鹿の馬鹿な発想でしかない
701 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:06:13.73 ID:wN+Ljz7f0.net] >>687 フォーム内のスクロールバーはイベント取得できるぽい そういうのでいいならフォーム内スクロールバーに従ってシートをスクロールさせることはできそう もしくはシート1のスクロールを監視して自分でイベント発行するか
702 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:25:38.10 ID:N270RWsC0.net] 彼女の下のお口から出る糸を、シート(She糸)と呼びます
703 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:25:54.14 ID:2JfZorGz0.net] >>689 逆にスクロールを実装すればよかったのね 下スクロールを実装したら期待通りの動きになったわ Sub Macro4() ' Keyboard Shortcut: Ctrl+Shift+P Windows("Book1 - 1").Activate ActiveWindow.SmallScroll Down:=30 Windows("Book1 - 2").Activate ActiveWindow.SmallScroll Down:=30 Windows("Book1 - 3").Activate ActiveWindow.SmallScroll Down:=30 End Sub
704 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 04:24:20.35 ID:YoVJ22V0M.net] 糸を出す女ってスパイダーガールか
705 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 07:19:21.13 ID:fdMR9HVCM.net] 宗教的な話題になりそうだけど、If文で判定入れてそれ以外の場合は何もしないって処理の時、elseを省く?それとも何も処理をしないって明示するためにelseの中に何も書かない?
706 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 08:08:06.08 ID:AJ0kjIG/a.net] 俺は省く 逆に Select Case の Case Else は必ずつけて何もしなくていいことを明示するコメントを書いておく
707 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 08:13:36.66 ID:YZ/4IsUH0.net] こういう書き方ってどうにかしてうまくまとめる方法はありますか? if C=1 then if B=1 then if A=1 then msgbox "メイン処理を実行します" else msgbox "A=1じゃなかったので実行しなかった" else msgbox "B=1じゃなかったので実行しなかった" else msgbox "C=1じゃなかったので実行しなかった"
708 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 08:33:32.40 ID:cX1o4aeta.net] >>695 If C <> 1 Then msgbox "C=1じゃなかったので実行しなかった" Goto Skip End If If B <> 1 Then msgbox "B=1じゃなかったので実行しなかった" Goto Skip End If If A <> 1 Then msgbox "A=1じゃなかったので実行しなかった" Goto Skip End If msgbox "メイン処理を実行します" Skip: Goto 嫌なら Sub に入れて Return とか
709 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 09:19:19.95 ID:qbFmdfWP0.net] >>695 ネスト深くなるとわかりにくい 処理は簡単な単位でまとめたほうがいい 実行する/しないは一つの単位(success/errorのように)としてまとめたほうがいい 拒否理由="なし" if c<>1 then 拒否理由="cじゃない" else if b<>1 then 拒否理由="bじゃない" else if a<>1 then 拒否理由="aじゃない" if 拒否理由="なし" メイン処理 else msgbox 拒否理由&"ので実行しません"
710 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 19:02:13.39 ID:qNIRpAbL0.net] わかりにくいってだけで正常に動作しているならコメントでも書いとけばいいんじゃね
711 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 19:04:18.25 ID:iXF+QXI0M.net] >>696 do loop 0でブレイク
712 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 10:46:13.39 ID:fjGlq1dk0.net] >>697 おれもこんな感じだな Elseifは好きじゃないからSelectCaseかなあ
713 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 12:32:39.80 ID:wbru5aYXa.net] VBA の Select Case は Case 節に式が書けるから素直に Select Case True Case C <> 1 msgbox "C=1じゃなかったので実行しなかった" Case B <> 1 msgbox "B=1じゃなかったので実行しなかった" Case A <> 1 msgbox "A=1じゃなかったので実行しなかった" Case Else msgbox "メイン処理を実行します" End Select がわかりやすいかな
714 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 13:02:04.64 ID:ZSAOoecqp.net] >>701 俺もこんな感じにするかな C#とかと違って;で止められないけど まぁそれはそれとして。
715 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 19:50:51.52 ID:xmwnc1Js0.net] 複数の条件が成り立つ場合の優先度とか気にせんと・・・
716 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 20:08:08.57 ID:rQp/oHNqa.net] >>703 なんでドキュメント読まないの? 複数の Case 句の expressionlist 式に一致する場合は、最初に一致した句に続くステートメントのみが実行されます。 https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/select-case-statement
717 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 00:02:19.90 ID:ZgXClf4M0.net] A=1かつB=1かつC=1だったらXが実行されるって言う事ではないのね なんかややこしいね(´・ω・`)
718 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 03:01:36.86 ID:J74pUyNp0.net] 俺は中身が1行の時はCaseを1行にまとめる派 Sub Macro() Select Case True Case C <> 1: errmsg ("C") Case B <> 1: errmsg ("B") Case A <> 1: errmsg ("A") Case Else: MsgBox "メイン処理を実行します" End Select End Sub Sub errmsg(s$) MsgBox s & "=1じゃなかったので実行しなかった" End Sub
719 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 06:50:49.06 ID:o4u0MtXma.net] >>706 errmsg の呼出時の括弧は要らないのでは?
720 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 07:52:44.68 ID:6Vj/pyuu0.net] >>706 こういうふうにはしないほうが良い? Sub Macro() Select Case True Case C <> 1: msg ="C" Case B <> 1: msg ="B" Case A <> 1: msg ="A" Case Else: msg= "メイン処理を実行します" End Select End Sub msgbox(msg)
721 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 08:39:48.32 ID:D1zTFGCZM.net] そうやって本筋じゃない方へ話題は逸れていく
722 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 09:01:58.41 ID:Uf1/B9Ep0.net] Subの場合は 括弧を付けるならCallも付ける Callを付けないなら括弧も付けない それだけ
723 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 09:05:23.70 ID:r53Jbhkva.net] >>708 > こういうふうにはしないほうが良い? うん、それだと C = 2 でテストしたら単に C って表示されるだけだし
724 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 09:06:11.26 ID:6Vj/pyuu0.net] >>709 今回はどんどん話を膨らませていいよ
725 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 10:18:01.32 ID:spDayutJd.net] 僕が考えた最高のコード ってやつだろこんな話題にくいつくのもはずいわ
726 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 10:39:12.57 ID:6Vj/pyuu0.net] >>708 は間違いね こういう風に、メッセージの中だけ変数に入れて最後で表示させるってのはやめたほうがいいでしょうか Sub Macro() Select Case True Case C <> 1: msg ="C=1じゃなかったので実行しなかった" Case B <> 1: msg ="B=1じゃなかったので実行しなかった" Case A <> 1: msg ="A=1じゃなかったので実行しなかった" Case Else: msg= "メイン処理を実行します" End Select End Sub msgbox(msg)
727 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 10:49:41.47 ID:LxaPNz9fM.net] 好きにすればいい
728 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 12:48:35.67 ID:AxYcslms0.net] >>714 実行しなかったって表示するのに実行しそうだな
729 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 13:26:31.81 ID:mz7mxvwZp.net] しねーよハゲ
730 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 15:21:18.52 ID:4YOQBH220.net] お前ら頑張ってるけど メッセージなんかただの処理サンプルだろうから >>701 が採用されそうだけどね
731 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 15:52:40.85 ID:vYlFEoJTd.net] 実際の仕様でもなんでもない話に採用もクソもないのでは 好きにすればいいはなし
732 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:28:53.57 ID:m8vuVm8ra.net] 話題に食いつくのははずいのに批判だけはするんだな てか、批判しかできないのかなw
733 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:42:03.95 ID:6Vj/pyuu0.net] 草
734 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 23:43:32.11 ID:4aElhsU0a.net] >>714 最高のコード
735 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 20:06:13.11 ID:k57kmbe60.net] >>722 End Sub の下に msgbox(msg) があるのに?
736 名前:デフォルトの名無しさん [2022/04/07(木) 20:57:01.15 ID:WZu7hIyw0.net] やっと書き込めた。 BB2Cが死んでJane Stileとかいうアプリで書き込んでるけど、VBAスレもその煽りかめっきり書き込み減ってるね。
737 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 22:52:18.94 ID:shKfmndDa.net] >>723 最(もお茶が)高(く噴き出た)のコード
738 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 09:32:33.40 ID:P5V0Axif0.net] ハイパーリンクで、他のファイルを開こうとすると、警告ダイアログが出ますが、 (「ファイルには、ウイルスやコンピューターに問題を…」) 非表示にできますか? レジストリでDisableHyperlinkWarningをやっても、ダメでした…。
739 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 09:48:16.01 ID:O75PAQWK0.net] ユーザーフォームに設置したボタンをクリックすると Private Sub 〜〜〜_Clickのイベントプロシージャが追加されますが、 このコードの追加位置はどういう基準で決まっていますか? すぐ隣のボタンのClickの近くに挿入されることもあれば、 結構離れた位置に挿入されることもあります。
740 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 18:32:41.81 ID:DozpoMh4a.net] 質問は一人一つまで。
741 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 19:07:30.71 ID:aNhRPKRk0.net] >>726 ウイルスでも作っているの?
742 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 19:44:29.30 ID:p3Omju050.net] エクセルVBAでウイルスを作ることはできますか? エクセルVBAでAIを作ることはできますか?
743 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 19:49:56.82 ID:0/Kcf5P10.net] >>726 試してないから出来るか分からんけどディスプレイアラートは?
744 名前:デフォルトの名無しさん [2022/04/08(金) 19:59:37.27 ID:iHtexTHZ0.net] >>730 直クライアントだからな 余裕で出来る
745 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 20:10:13.83 ID:cwm3b4Q1d.net] >>730 はい はい
746 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 20:43:11.43 ID:p3Omju050.net] >>732 でもおまえウイルスの作り方わからないじゃん
747 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 20:59:12.69 ID:AMkeYZ900.net] ウィルスの定義は「操作する人が意図しない動作を起こすプログラム」 だから空白のボタン押すと背景の色が変わるとかそんなんでもウィルスです
748 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 21:53:49.35 ID:iHtexTHZ0.net] やっとBB2Cが使えるようになった >>734 煽ってもダメ ウイルスなんて作らないし 作り方だって載せるつもりはないよ
749 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 22:14:19.86 ID:AMkeYZ900.net] >>736 いやもう作り方載せたって>>735
750 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 22:18:44.47 ID:7fG2FYL40.net] ヤンキー・ドゥードルが懐かしい
751 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 00:48:37.33 ID:C63TJhml0.net] AIの定義が明確に定まってないので自己学習して勝手に洗練されていくものもAIだしただのマクロもAI
752 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 00:55:30.60 ID:tyw5ZPAK0.net] AIは作るものじゃない 育むものなんだよ
753 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 02:28:28.01 ID:FQQX8rtBa.net] >>736 もうすでにウイルスのソースコード載ってますが? >>714
754 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 06:04:10.90 ID:+bGajSMm0.net] 任意の列が左端に来るように水平スクロールする方法ってある? Application.Gotoで左端に寄せてSmallScrollで上下位置を調整してるけど完全な水平スクロールにはならないんだよね
755 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 07:34:48.36 ID:Dec5MFVZ0.net] With ActiveWindow .ScrollRow = x .ScrollColumn = y End With
756 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 08:12:43.36 ID:+bGajSMm0.net] >>743 それも試したけど、アクティブセルが変わると数値が変わらない?
757 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 08:52:12.11 ID:+bGajSMm0.net] 任意の列とアクティブセルの列の差を求めればScrollRowで行けるかな? 今度試してみよう
758 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 11:14:24.15 ID:Mfv2lAJId.net] Sub World() Dim Abe As Virus Set Abe = New prime minister Abe.coin.End(xldown) Abe.tax.End(xlup) Abe.wing.End(xlright) End World
759 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 12:54:27.64 ID:FQQX8rtBa.net] で、誰かがズームしたりページレイアウト変えたりして、 トラブルの元になると。 ウィンドウ系はいじらない方がいいと 職場のおじいちゃんが言ってた。
760 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:45:19.95 ID:6rDUdJJw0.net] アース、ファイア、ウォータ系の属性のほうがいいかもね
761 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 14:39:59.55 ID:FQQX8rtBa.net] Excel VBA の Window 関連のオブジェクトって、船に刻して剣を求むって感じ 走っている電車の中から、指で窓ガラスに風景を描くみたいな
762 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 15:26:28.03 ID:+bGajSMm0.net] さっぱり例えが分からんw
763 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 16:04:42.29 ID:2h0/Yyo40.net] 詩的すぎるだろw
764 名前:デフォルトの名無しさん [2022/04/09(土) 18:41:50.44 ID:8cH1hwr70.net] >>749 なるほど納得。 納豆食う。
765 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 20:23:31.13 ID:8/Ft6Y7L0.net] 日本人だけど意味がさっぱりわからんw
766 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 22:16:01.68 ID:XcpxlUbda.net] ごめん失敗したテヘ
767 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 01:02:21.87 ID:tD6svEJl0.net] ヘッドレスChromeをseleniumやWebdriverなしでどうにかなりませんか?
768 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 19:56:53.98 ID:anoG1hsda.net] >>755 UiPathおすすめ
769 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 21:59:21.11 ID:Kyp6sDnX0.net] オブジェクトの代入を同一プロジェクトで使いまわすことはできるでしょうか? Public ws1 as worksheet Module1 Sub test1() Set ws1 = Worksheets("Sheet1") ws1.Range("A1") = "Test1" End Sub Module2 Sub test2() Set ws1 = Worksheets("Sheet1") ws1.Range("A2") = "Test2" End Sub これを下記のようにできないかな、ということです。 Public ws1 as worksheet Set ws1 = Worksheets("Sheet1") Module1 Sub test1() ws1.Range("A1") = "Test1" End Sub Module2 Sub test2() ws1.Range("A2") = "Test2" End Sub
770 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 22:26:56.33 ID:p2QF/trT0.net] なにがしたいのか
771 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 22:56:21.06 ID:7xr/cYmKd.net] オブジェクトは無理でしょ Funtionで対応すれば良い 最もそうしない方が良いからデフォで出来ないようになってることは考慮すべきだと思う
772 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 23:25:19.91 ID:9dLPe5470.net] ん
773 名前:?そもそもワークシートってオブジェクト化されてるんだからわざわざ変数にセットする必要なくない? 対象のシートがコードを書いているファイルにあるなら Sheet1.Range("A1").Value = "Test1" で良いでしょ? [] [ここ壊れてます]
774 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 23:56:27.01 ID:Kyp6sDnX0.net] 簡略化するためにThisworkbookを省略して書きましたが、実際には マクロ動作中にほかのブックを触っても大丈夫且つコードがすっきり するようにSet ws1 = Thisworkbook.Worksheets("Sheet1")のように しています 少し時間ができたので増築増築でややこしくなったコードを整理している 最中で、複数のプロシージャで使う固定のシートはまとめて変数にセットして おこうかと思ったのですがFunctionで調べてみます、ありがとうございます
775 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 23:58:43.07 ID:amT3mnzR0.net] 変数を使いまわす(というか広域で使う)のは普通にできる モジュールレベルでPublic変数定義するだけ なんならモジュール名で修飾してもいい ただ、変数の寿命が管理しにくいから、 中身がセットされてないとか、いつの間にか中身が消えてるとかいうことになるかもなw
776 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 00:23:20.44 ID:ccOkbRo70.net] シートをオブジェクト名で指定すればどのブックを触っていようがそのコードが書いてあるブックから参照すると思うのだけど >>761 がやろうとしてる事って他のブックのシートを変数に収納したい場合しか使わなくないか?
777 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 02:00:50.12 ID:vEgugssg0.net] >>763 一部のメソッドでオブジェクト名を省略できないのがあるじゃん 自分がちゃんと理解してないのが原因なのはわかってるけど、構文とかデフォルトのオブジェクトとかいちいち覚えるのが面倒くさいんだわ
778 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 06:30:21.52 ID:j+U2fOIu0.net] やるならこうか? init()に色々初期化みたいなものをまとめて、毎回呼び出す Public ws1 Sub init() Set ws1 = Worksheets("sheet1") End Sub Sub foo() Call init Cells(1, 1) = 1 End Sub Sub foo2() Call init Cells(2, 2) = 2 End Sub
779 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 06:46:39.08 ID:da5RcI7d0.net] 汎用性と独立性を確保するなら引数でシートを渡せ
780 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 07:15:19.69 ID:t+9U/8lg0.net] >>757 初心者がかち当たるあるある疑問だよね。 最初は>>762 の言う方法でやってみればいいと思うよ。 もう少しやり込んでくればデバッグし易くするためにモジュールスコープレベルのPrivateな変数をPublicな関数やプロパティでやり取りするようになるんだけどね。
781 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 07:20:31.49 ID:j+U2fOIu0.net] こういうイメージ? よく考えたらpublicにする必要性が全くない Sub init() Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") Set ws3 = Worksheets("sheet3") Set ws4 = Worksheets("sheet4") End Sub Sub foo() Call init ws1.Cells(1, 1) = 1 End Sub Sub foo2() Call init ws2.Cells(2, 2) = 2 End Sub
782 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 07:21:37.35 ID:j+U2fOIu0.net] と思ったらpublicいるわスコープ他の言語と間違えたわ
783 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 17:42:54.51 ID:oSnOjvyr0.net] Recordset.openでselect文を実行するとエラーになるけどツールでログに出した物を実行してもエラーにならない時って何が原因? ダブルクォートは含まれてない あとはイミディエイトウィンドウに出てくるsqlが変なとこで改行されてるけど関係ないよね?
784 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 17:45:16.76 ID:pq/BAZJoM.net] シラネーヨ
785 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 19:22:20.07 ID:D2BP6h+A0.net] 742で書いた完全な水平スクロールできたわ
786 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 19:25:18.42 ID:D2BP6h+A0.net] >>757 Sheet1モジュールに書くだけでは?
787 名前:デフォルトの名無しさん (ワッチョイ c6da-EhK1) mailto:sage [2022/04/12(火) 19:48:28 ID:hYDOb6070.net] >>770 それだけで答えられるほどエスパーじゃない
788 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 19:58:04.86 ID:t+9U/8lg0.net] >>770 まず出力されているエラーは何なの?
789 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 20:52:44.19 ID:oSnOjvyr0.net] ora 00933 sqlコマンドが正しく終了されていません が出るんだよね
790 名前:デフォルトの名無しさん (ワッチョイ e2da-vtdv) mailto:sage [2022/04/12(火) 21:13:36 ID:cLFsXNmb0.net] そのままのエラー文でググれば一発で回答出てくるぢゃねーか
791 名前:デフォルトの名無しさん (ワッチョイ e24f-EtAN) mailto:sage [2022/04/12(火) 21:30:37 ID:t+9U/8lg0.net] >>776 SQLのケツに;付けろってよ
792 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 01:24:31.19 ID:idY8HIbz0.net] 757です、いろいろご意見ありがとうございます その後考えた結果、シートのオブジェクト名を変数として代入しようとした名前に変えればいいんじゃないかと思いついたんですが問題ないでしょうか
793 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 03:33:56.70 ID:+aMOkW0p0.net] >>779 シチュエーションにもよるかな。 シート名を変えられてもそのシートを使う前提であればそれでいいんじゃないかな。 その場合、 自ブックのシートであれば Dim targetSheet As Worksheet Set targetSeet = 変更後のシートオブジェクト名 みたいに使えるし、 他ブックのシートを扱う場合は Dim targetSheet As Worksheet Set targetSheet = ブックオブジェクト.(シートオブジェクト.Name) みたいに書けば設定出来る。 もっとも、後者の書き方で前者を賄えるから後者だけ関数化してそれを使い回してもいいけどね。
794 名前:デフォルトの名無しさん (ワッチョイ 7b68-xb3m) mailto:sage [2022/04/13(水) 07:03:06 ID:CoVp5Ukt0.net] >>779 オブジェクト名はやめたほうが良い。あんまり意味が無い やるなら、シートの内容を変数名にする ローマ字 set shain_master = sheet("社員マスター") 日本語許容するなら set 社員マスタ = sheet("社員マスター") なおベストは英語
795 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 07:35:12.98 ID:6wqio091M.net] 会社員を英語でなんと言うかがわからんわ worker(労働者)やemployee(被雇用者)じゃニュアンスが違うしー 辞書なしですぐ出てくるレベルのやつはVBAなんかやってないやろ、という偏見
796 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 07:37:38.41 ID:CoVp5Ukt0.net] staffでええやろ
797 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 07:50:17.55 ID:+aMOkW0p0.net] >>782 会社員だから companyEmployeeでいいんじゃね?
798 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 07:56:48.50 ID:HWn/7Hddd.net] Google翻訳だとmember んー、なんかしっくり来ない
799 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 07:59:18.64 ID:PsKYJxH90.net] staffは関係者ってイメージ
800 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 08:15:50.97 ID:1kKv9jFRd.net] staffという単語はcompanyと同義で集団に対して使うって日本人は意外とわかってない
801 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 08:30:55.20 ID:CoVp5Ukt0.net] employee以外ないだろう
802 名前:デフォルトの名無しさん (スプッッ Sd22-eTSu) mailto:sage [2022/04/13(水) 08:56:08 ID:wBIIYhTid.net] 会社員という表現は英語では難しい 大人しく syachiku か Karoushi_Man にしとけ
803 名前:デフォルトの名無しさん (ブーイモ MM02-CB6w) [2022/04/13(水) 09:04:23 ID:YJgAVhDkM.net] 業務用語の変数は日本語で業務用語そのものを使ってる 中途半端な英語だと誤解しやすいし、ローマ字は読みづらい
804 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:04:01.74 ID:NHlBNLdW0.net] Accessならお馴染みの「Northwind」のテーブルでは Employee List とか Employee Details 概念としての会社員ではなく、自社の社員リストなので「従業員・使用人」の意で ま、そのファイルを誰が見る?誰が使う?どこに出す?で適宜に 恥かかない程度で 何だっていいんだろうけれども
805 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:09:02.25 ID:93SXwTUS0.net] リーマンが和製英語からすでに世界に浸透してる
806 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:28:39.30 ID:Wmi1ga+iM.net] ワークマン
807 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 11:06:56.09 ID:BozzLOUH0.net] ワークマンは流行りよ
808 名前:デフォルトの名無しさん (スップ Sd22-2p/j) [2022/04/13(水) 12:58:38 ID:7IxClg8bd.net] 緊急です! マクロの入ったボタンが図だかイラストになってしまい困ってます。 直し方のアドバイスお願いします。
809 名前:デフォルトの名無しさん (ワッチョイ 6711-LXkm) mailto:sage [2022/04/13(水) 13:07:23 ID:zDnWB3YN0.net] >>795 https://mevius.5ch.net/test/read.cgi/bsoft/1647570025/342
810 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 13:09:58.08 ID:Wntan1Ql0.net] こういうの30分一万円無保証とかで稼げないかな
811 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 13:57:45.74 ID:+aMOkW0p0.net] >>795 もうその図からマクロ実行させちゃえばいいじゃん
812 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 14:00:17.02 ID:uBZa/q6E0.net] ■質問 サウンド再生は何通りかあるけど、 一番遅延が小さい方法は何ですか? winmmのPlaySound ?
813 名前:デフォルトの名無しさん [2022/04/13(水) 14:08:46.36 ID:6qNApkxLM.net] >>798 多分それ自体わからんのちゃう? Excel作った本人とかじゃなく事務員とかだろうし
814 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 15:42:21.02 ID:7cmYTCQn0.net] 3時間くらいかけてVBA作って、合間に別のエクセルファイル開いて、閉じようとしたら 「変更を保存しますか?」って出たので、保存せずに閉じたら。 VBAを作った方のファイルまで変更保存せずに閉じられてしまったーーー!! どうにかならない?
815 名前:デフォルトの名無しさん [2022/04/13(水) 15:45:55.22 ID:7IxClg8bd.net] とりあえず顧客に頭を下げてFAXでリスト送って頂いたのでしばらくはなんとかなりそうですがエクセルファイル自体のトラブルについては全員サッパリ意味不明なためどうしようも無さそうです… (エクセルファイル作った方自身が既に会社にいないのでどうしようもない) とりあえずエクセルファイルがどうする事もできないため私と社長ら数名は土日も休日出勤して1月から4月までの記録も全部紙ベースの資料に手書きで書き写す事になりそうです しばらくは紙とペンでのアナログなやり方で回すしかないですがアドバイスくださった方ありがとうございました
816 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 17:20:07.59 ID:SMVlXKyy0.net] >>801 3時間くらいなら今からやれよ
817 名前:デフォルトの名無しさん [2022/04/13(水) 17:28:47.62 ID:MldHjaMW0.net] >>802 あちこちマルチで書いて馬鹿かよ どこかに金を出して頼めよ ゆとりの馬鹿はこれだから
818 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 17:42:34.06 ID:Wmi1ga+iM.net] >>801 該当のファイルを開いた状態でファイルタブのどこかにある自動保存云々が書いてある場所を探せ 運が良ければ一時ファイルが残ってる 残ってなけりゃ諦めろ 次からは動作確認をする前に保存する癖をつけるようにするんだな
819 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 19:21:42.96 ID:9TA12m3K0.net] >>801 これがあるからコーティング中はOneDriveに置いとる
820 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 21:38:12.45 ID:wBIIYhTid.net] >>805 何で誰でも言える極々普通のアドバイスをこんなに上から目線で言えるんだろう
821 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 21:47:36.66 ID:MBul3VW80.net] 便所の落書きにいちいち目くじら立てて突っ掛かるなよ より一層老けて見えるぞ
822 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 22:55:33.89 ID:uonj2wEf0.net] 全国10エリアのそれぞれに、2016年度から6か年度分の「各年度集計用book」があり、 中身は1時間値と月合計を集計する等のクエリーが17あって、 これをsheet上のクエリーリストを基に For Nextで順次更新・上書き保存するVBAを仕込んであります。 これとは別に、各エリアごとにやはりbookのフルパスリストを基に For Nextで「各年度集計用book」を順次開いて、 中のVBAを実行するよう仕込んだ「各エリア一括更新book」を作りました。 (今さら2016年度を再集計するのは、たまにシレーッと修正が訴求修正が入るため) これまで10ヶ月間ほどの月次更新では問題もなく動いてきたのですが、今月の更新で ・sheet名とクエリー名によるクエリー更新のステップでデバックエラーで止まった ・2つ目2017年度あたりのbookをVBAで開いたと思ったら、Excelごと落ちた となり、不安定になりました。 モジュールごと再構成たり、「各年度用集計book」クエリー計算を簡略化して17ステップに削減したりして、 ・タスクマネージャーでは動作中のメモリーは最大10GB/32GBくらい、CPU使用率は最大60%弱 ・1つの「各年度集計用book」の所要時間に30秒程度 まで軽量化したのですが、今後もbook数が増えることを考えると 何か工夫のしどころはないものかと。 自分で気になっているのは、6か年度分のbook更新がどうにか上手くいっても、 「各エリア一括更新book」のプロジェクトに、 済んだはずの「各年度集計用book」の情報が残っていること。 https://i.imgur.com/BvkH6sr.png よく分からないけれど、VBAが扱えるインスタンス数を超過しているのか? これが残っていて良いのか、よくわかりません。 ・Set wb = Workbooks.Open で開いて ・wb.Close SaveChanges:=True で上書き保存して閉じているのですが、 ・For Next内で済んだ変数はできる限りNothingで開放 していますが、改善の余地はありますか?
823 名前:809 mailto:sage [2022/04/13(水) 23:53:53.55 ID:uonj2wEf0.net] >>809 タイポ訂正 誤) 訴求修正 正) 遡及修正
824 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 08:48:02.28 ID:jf4kHNax0.net] >>809
825 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 09:46:20.53 ID:EGNxXvqd0.net] >>809 マクロを1つの専用ブックにまとめてみたら
826 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 13:25:49.47 ID:E7ePXpuT0.net] VBAで他ブックのプロシージャを実行したいんだけど、実行まちをなくすことてできる? Application.Run "Book2!Test2" を実行したあと、"Book2!Test2"の処理終了を待たずに次の行に移りたいんだが。
827 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 13:53:36.44 ID:TZzbtw0W0.net] 非同期は無理 試してないけど、別のApplicationインスタンスを作成して そちらでファイルを読み込んで実行とか
828 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 18:58:30.99 ID:RElcaA4D0.net] メソッドを使い回したいときはクラスを別のクラスに参照渡ししてるんだけど、これってVBAに継承があれば機能的に処理できるのか
829 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 19:03:41.33 ID:sxqTZKvqM.net] クラスのメンバーに他のクラスを入れるのがマイルド
830 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 19:25:43.40 ID:RElcaA4D0.net] いいね それ試してみよう
831 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 20:26:12.03 ID:VI/N1Akx0.net] >>816 継承を委譲で置き換える、というだけですね…
832 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 21:25:22.08 ID:YCtpuDrNx.net] 参照設定なしでエクセルからアクセスファイルの操作をしようとしているのですが フィールド定義の構文エラーが出ます。 テーブルの登録数を減らすと通りますが 上限か何かに引っかかっているのでしょうか? Sub Test() Dim CN As Object Set CN = CreateObject("ADODB.Connection") CN.Open "Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" & "C:\Users\Downloads\データ.accdb" CN.Execute "CREATE TABLE TBL(管理 INT,日付 DATE,番号 INT,内容 MEMO,担当 MEMO,OrderTeam MEMO,Place MEMO,Floor MEMO,GuestNum INT,種別 MEMO,物品 MEMO,対象 MEMO,状態 MEMO,時間1 MEMO,時間2 MEMO,Note MEMO,Total MEMO);" CN.Close MsgBox "作成しました。" End Sub
833 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 21:40:59.88 ID:zMqJUzcEa.net] MsgBox は、End Sub の外に出して下さい。 このスレの流れ的に。
834 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 22:31:20.84 ID:Ep0kCh050.net] フィールド名 DATE は? 予約語では? 他には、day、month、table、text、user、when、where、year、zone とかも
835 名前:デフォルトの名無しさん (ワッチョイ e2da-EhK1) mailto:sage [2022/04/14(木) 22:55:38 ID:Ep0kCh050.net] すまん 読み間違いだった MEMOが多いような気がするが、それも多分外してるな すまん 居ないことにしといてくれ
836 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 23:23:47.63 ID:fL/YN0Wd0.net] 予約後はNote []で括れ
837 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 23:41:44.78 ID:kOhvUD5R0.net]
838 名前:解決しました。 感謝です! [] [ここ壊れてます]
839 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 14:24:02.27 ID:TsNK8La+0.net] >>816 クラスになじめなかったくせに
840 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 15:02:32.60 ID:m9CVWFGZ0.net] う、うるさい!
841 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 10:04:25.26 ID:g0AA3ay0p.net] 無理してクラス使わんでもええんやで
842 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 10:12:12.08 ID:94XVUrLP0.net] 保健室でいいってことか
843 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 10:20:43.39 ID:Xjbe7mxod.net] 特別クラスにさえ入れてもらえないのk
844 名前:デフォルトの名無しさん (ワッチョイ 17da-UOua) mailto:sage [2022/04/16(土) 14:51:07 ID:gJCOre2S0.net] 今は特殊学級は廃止されつつあると聞いたわ 差別に繋がるからだとか
845 名前:デフォルトの名無しさん (ワッチョイ b768-fNw1) mailto:sage [2022/04/16(土) 14:55:23 ID:pYTE49690.net] >>830 それな ・ひまわり学級導入 差別だから廃止しろ! ・ひまわり学級撤廃 障がい者と一緒に授業できるわけねーだろ!分けろ! これを5年ぐらいの周期でず〜〜〜っと繰り返してる。少なくともここ30年はそう
846 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 15:07:04.56 ID:rh08QZl8a.net] 1年目 ひまわり学級導入 6年目 ひまわり学級撤廃 11年目 ひまわり学級導入 16年目 ひまわり学級撤廃 21年目 ひまわり学級導入 26年目 ひまわり学級撤廃 30年目、ひまわり学級は撤廃された状態
847 名前:デフォルトの名無しさん (ワッチョイ d7da-dJ8g) mailto:sage [2022/04/16(土) 17:39:51 ID:aIa1oxEK0.net] コールバイネームしたいから無理にクラス使うというのはある。
848 名前:デフォルトの名無しさん (ワッチョイ 17da-UOua) mailto:sage [2022/04/16(土) 18:34:28 ID:gJCOre2S0.net] 自分が通っていた学校の特殊学級は8組て名称だった 6組まではノーマルで何故か7組が無くて8組が特殊だった。
849 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 18:39:26.14 ID:vqf9SIAK0.net] >>833 何故無理にCallbyName使う必要があるの? 標準モジュールなら普通にApplication.Runじゃダメなの?
850 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 02:09:30.35 ID:BVP+DOJH0.net] >>835 コールバックのやり方調べた時に、 何か忘れたけど、他は面倒な制約があって、 コールバイネームしか使わなくなった。
851 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 03:28:38.26 ID:N2omx0Taa.net] たまーに出てくるオブジェクト指向の話。 もうオブジェクト指向なんて忘れたは。
852 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 07:38:47.19 ID:X2S+9pHC0.net] ワイのコードは素人指向
853 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 09:54:53.72 ID:c23oRZKe0.net] >>837 それでも知らんうちに使ってるんやで 使ってる奴に意識させないのがオブジェクト指向
854 名前:デフォルトの名無しさん [2022/04/17(日) 10:13:47.49 ID:a3I3T2VGM.net] excel vbaではオブジェクトを利用したプログラミングにはなるけど、 それだけでオブジェクト指向だとは言えないな
855 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 10:56:37.84 ID:acUYvJMnd.net] 玄人志向が玄人向けだったのは最初だけ
856 名前:デフォルトの名無しさん [2022/04/18(月) 22:09:45.73 ID:dtBLR+IO0.net] どなたか相談に乗っていただきたいです。 現在、大学の講義で使用するため関数を作成しているのですが、最後に関数に戻り値を入れる際に「代入式の左辺の関数呼び出しは、バリアント型またはオブジェクト型の値を返さなけれななりません。」 とコンパイルエラーが出てしまいます。このエラーはどのように解決したらよいでしょうか?
857 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 22:14:18.56 ID:5XyRTXLN0.net] コード見ないとちょっときつい
858 名前:デフォルトの名無しさん [2022/04/18(月) 22:20:21.18 ID:JAMU3YD50.net] コード作成お願いします! 2つのcsvがあってどちらも1列目に主キーがあります。 B:15列目の対応するキーの値を A:3列目に代入 したいです。 できますかね?
859 名前:デフォルトの名無しさん [2022/04/18(月) 22:25:33.62 ID:dtBLR+IO0.net] Sub TEST1() Dim Hight As Double, Time As Double Hight = 0.4 Time = 2# MsgBox WaveLength(Hight, Time) End Sub Function WaveLength(Hight, Time) As Double Dim G As Double, PAI As Double Dim WL0 As Double, WL1 As Double, WL2 As Double G = 9.80665 PAI = WorksheetFunction.Pi() WL0 = G * Time * Time / (2# * PAI) WL1 = WL0 Do While ((WL2 - WL1) / WL1) >= 0.001 WL2 = WL0 * Worksheet.Tanh((2) * PAI * Hight / WL1) If ((WL2 - WL1) / WL1) < 0.001 Then Exit Do WL1 = 0.5 * (WL1 + WL2) Loop WaveLength() = WL2 End Function
860 名前:デフォルトの名無しさん [2022/04/18(月) 22:26:31.08 ID:dtBLR+IO0.net] >>845 こういった感じです
861 名前:デフォルトの名無しさん [2022/04/18(月) 22:27:22.86 ID:dtBLR+IO0.net] VBA自体初めてなので何からしたらいいのかわかっていない状況です。
862 名前:デフォルトの名無しさん (ワッチョイ b768-fNw1) mailto:sage [2022/04/18(月) 22:30:08 ID:5XyRTXLN0.net] >>845 functionの返り値使いたい時はfunction名に代入すればok。カッコは不要 Sub TEST1() MsgBox WaveLength(Hight, Time) End Sub Function WaveLength(Hight, Time) As Double WaveLength = 5 End Function
863 名前:デフォルトの名無しさん [2022/04/18(月) 22:41:26.28 ID:dtBLR+IO0.net] >>848 できました。ありがとうございます。 すみません、もう少し相談させていただいてもよろしいですか? ループさせる際に値を変化させてDoにもどすことはできますか?
864 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 22:44:42.92 ID:kMWXV8yj0.net] >>847 本筋と関係ない話だけど、HightとTimeは変数名に使わない方がいいよ 同じ名前の関数が既に存在するからトラブルの原因になる 別の単語か略語を考えて
865 名前:デフォルトの名無しさん [2022/04/18(月) 22:46:49.95 ID:dtBLR+IO0.net] >>850 小文字一文字とかでも大丈夫ですか?
866 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 22:48:03.57 ID:tZvgKjwbd.net] それが出来るのがFunctionの良いところよ 戻り値は配列とかに入れておけばok
867 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 22:54:56.92 ID:kMWXV8yj0.net] >>851 1文字でも動くけど、誰が見ても意味のわかる言葉にするのがマナー どうしても別の単語を決められなかったら、Height1とかTime1とかにしとけばいい 1文字にするよりはマシ
868 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 23:00:04.07 ID:5XyRTXLN0.net] マナーってなんだよw あとで自分が見て分からなくなるのが問題 赤の他人が見てもわかるような名前にしておくと、自分のためになる
869 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 23:00:47.59 ID:5XyRTXLN0.net] >>849 >ループさせる際に値を変化させてDoにもどすことはできますか? 言ってる意味がよくわからんかった
870 名前:デフォルトの名無しさん [2022/04/18(月) 23:01:50.92 ID:dtBLR+IO0.net] とりあえず、できました。 Sub TEST1() Dim hight1 As Double, Time1 As Double hight1 = 0.4 Time1 = 2# MsgBox WaveLength(hight1, Time1) End Sub Function WaveLength(hight1, Time1) As Double Dim G As Double, PAI As Double Dim WL0 As Double, WL1 As Double, WL2 As Double G = 9.80665 PAI = WorksheetFunction.Pi() WL0 = G * Time1 * Time1 / (2# * PAI) WL1 = WL0 Do While ((WL2 - WL1) / WL1) >= 0.001 WL2 = WL0 * Worksheet.Tanh((2) * PAI * hight1 / WL1) WL1 = 0.5 * (WL1 + WL2) Loop WaveLength = WL2 End Function
871 名前:デフォルトの名無しさん [2022/04/18(月) 23:03:04.12 ID:dtBLR+IO0.net] ただ、まちがっているみたいです。
872 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 23:03:10.61 ID:wKhqv1yX0.net] >>850 Hight なんていう関数あったっけ?
873 名前:デフォルトの名無しさん [2022/04/18(月) 23:09:31.78 ID:dtBLR+IO0.net] Doの中でWL2=WL0*tanh(2*PAI*H/WL1)を実行して、((WL2-WL1)/WL1)の絶対値が0.001より小さい場合には関数にWL2を代入して、0.001より大きい場合にはWL1=0.5*(WL1+WL2))と変換して再度Doを行うという繰り返しです。
874 名前:デフォルトの名無しさん [2022/04/18(月) 23:13:08.37 ID:dtBLR+IO0.net] すみません、わかりにくいですね。 WL1からなる計算式で求められるWL2とWL1の関係が条件に合わない場合、WL1をWL1とWL2の平均をとって再度WL2を求めたいです。
875 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 23:55:22.83 ID:6SbGdBJw0.net] Do WL2 = WL0 * Worksheet.Tanh((2) * PAI * hight1 / WL1) If Abs((WL2 - WL1) / WL1) < 0.001 Then Exit Do WL1 = 0.5 * (WL1 + WL2) Loop
876 名前:デフォルトの名無しさん [2022/04/19(火) 05:01:48.08 ID:dRTEe6m5a.net] どうでもいいが GやPAIは定数として関数の外にだす方が好き
877 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 06:39:40.35 ID:UDMLP6tq0.net] >>858 cellsのプロパティにある 文脈的に予約後ってコトぐらいwかるだろ
878 名前:デフォルトの名無しさん (ワッチョイ 9f01-0UVf) mailto:sage [2022/04/19(火) 07:20:27 ID:KrqnU+fb0.net] >>863 Cells w それを言うなら Range だし、Range にあるのは Height な そもそも単なるプロパティ名で関数でも
879 名前:予約後でもないし [] [ここ壊れてます]
880 名前:デフォルトの名無しさん (ワッチョイ b768-fNw1) mailto:sage [2022/04/19(火) 07:25:56 ID:UDMLP6tq0.net] よく見たらhightかよクソがw
881 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 07:48:45.10 ID:muVDZfH30.net] >>860 ざっくり見た感じだけなので詳しく分からないけどその計算式って正しい? その計算式の内容と判定条件だと初期値の値によっては計算が収束せずに振動を繰り返すことになるので ループから脱出できなくなる気がする
882 名前:デフォルトの名無しさん (ワッチョイ bf14-4qoo) mailto:sage [2022/04/19(火) 12:03:50 ID:SIyX6JLR0.net] Do?Loopの例文見ると条件はWhileが多い気がする 自分はUntil派なんですが
883 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 12:41:24.95 ID:y80OoYXYM.net] でっていう
884 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 12:53:32.89 ID:Hbe28u0D0.net] Untilはコーディングミスで「なぜか抜けられない」状態が起きた時の解決がめんどくさいからあんま使いたくない Whileならコーディングミスっても、値が範囲内でループし続けてるくらいしか原因がないから突き止めやすい
885 名前:デフォルトの名無しさん [2022/04/19(火) 14:33:22.38 ID:XaMNMP/i0.net] >>869 無能自慢?
886 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 14:38:03.91 ID:Hbe28u0D0.net] >>870 リスクは減らしたいってだけの話 自分一人だけがマクロいじるとは限らないし
887 名前:デフォルトの名無しさん [2022/04/19(火) 15:06:19.06 ID:XaMNMP/i0.net] >>871 いや、お前が無能なだけ
888 名前:デフォルトの名無しさん [2022/04/19(火) 15:24:45.82 ID:Cixyrkk96.net] https://imgur.com/srNrR8t 一応、大学から共有されている理論式がこんな感じなのでおそらく会ってます
889 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 16:03:50.77 ID:NrfRvlTVr.net] どうでもいいけど、Excelってそういう計算やったほうがいいんだっけ 小数点以下になるようなものは避けたほうがいいって記憶がある
890 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 16:13:18.16 ID:Hbe28u0D0.net] 小数点以下の計算は誤った結果が出ることも結構あるから、 ・型はCurrencyにして小数点以下5桁までにする ・可能であれば整数に直してから計算させる くらいはしておいた方がいいね
891 名前:デフォルトの名無しさん [2022/04/19(火) 16:39:16.39 ID:Cixyrkk96.net] Function WaveLength(Height1, Time1) As Double Dim G As Double, PAI As Double Dim WL0 As Currency, WL1 As Currency, WL2 As Currency G = 9.80665 PAI = WorksheetFunction.Pi() WL0 = G * Time1 * Time1 / (2# * PAI) WL1 = WL0 WL2 = WL0 * WorksheetFunction.Tanh(2 * PAI * Height / WL1) Do WL2 = WL0 * WorksheetFunction.Tanh(2 * PAI * Height / WL1) If Abs((WL2 - WL1) / WL1) < 0.001 Then Exit Do WL1 = 0.5 * (WL1 + WL2) Loop WaveLength = WL2 End Function とりあえずこういった感じで修正したものの実行するとオーバーフローするみたいです。 何が原因でしょうか?
892 名前:デフォルトの名無しさん [2022/04/19(火) 16:41:24.14 ID:Cixyrkk96.net] IF条件で抜け出せなくなってしまったとかでしょうか?
893 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 16:59:26.12 ID:Hbe28u0D0.net] >>876 内容はあまりわかっていないが、できそうな対策から お察しの通りLoopを抜ける判定が上手く行ってないと推測される オーバーフロー対策に、書き換え可能であればDoじゃなくてForNextに書き換えたほうがいいかも Function WaveLength(Height1, Time1) As Double ↑引数は接頭にByValかByRefかを書く 多分ByVal そして引数の型も明記する 特にTime1はDate型かそれ以外か明記が必要 Dim G As Double, PAI As Double ↑どっちもCurrencyでいいかと Dim WL0 As Currency, WL1 As Currency, WL2 As Currency G = 9.80665 PAI = WorksheetFunction.Pi() WL0 = G * Time1 * Time1 / (2# * PAI) WL1 = WL0 'WL2 = WL0 * WorksheetFunction.Tanh(2 * PAI * Height / WL1) ↑ここのWL2はいらない Do WL2 = WL0 * WorksheetFunction.Tanh(2 * PAI * Height / WL1) ↑HeightはHeight1にする 'If Abs((WL2 - WL1) / WL1) < 0.001 Then Exit Do 'WL1 = 0.5 * (WL1 + WL2) ↑ここ2行は↓のように書き換える If Abs((WL2 - WL1) / WL1) *1000< 1 Then Exit Do Else’上の条件を満たしていないときはこの値を代入して処理を続けますよの記載にする WL1 = 0.5 * (WL1 + WL2) End If Loop WaveLength = WL2
894 名前:デフォルトの名無しさん [2022/04/19(火) 17:04:43.35 ID:XaMNMP/i0.net] 馬鹿だからCurrencyを使うのだな
895 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 17:07:08.59 ID:3cTbAnobM.net] 数値計算に固定小数点数のCurrecyは駄目 浮動小数点数のDlubleでないと直ぐにオーバーフローする
896 名前:デフォルトの名無しさん [2022/04/19(火) 17:34:34.65 ID:C02npA8w0.net] 解決しました!!本当にありがとうございます!
897 名前:デフォルトの名無しさん [2022/04/19(火) 17:35:09.38 ID:C02npA8w0.net] めっちゃ興奮するw
898 名前:デフォルトの名無しさん [2022/04/19(火) 17:37:09.90 ID:C02npA8w0.net] >>878 ありがとうございます!
899 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 17:44:54.91 ID:Hbe28u0D0.net] >>883 解決したみたいで何よりです 多分、0.001より小さいかの判定だけがネックだったんだと思う もし1と比較している理由を教授に訊かれたら「VBAだと小数の計算が正確ではない事象があるため、回避できるように数式を書きました」と答えとき
900 名前:デフォルトの名無しさん [2022/04/19(火) 17:56:52.80 ID:C02npA8w0.net] >>884 わかりました! 今回は本当助かりました。本当にありがとうございました。
901 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 22:29:37.25 ID:2A4xjXpz0.net] おー理解できたのなら大学の工機前頑張ってなー
902 名前:デフォルトの名無しさん (ワッチョイ b717-73NO) mailto:sage [2022/04/20(水) 00:08:28 ID:Tl7YCJ+60.net] double型を使って除算をすると小数点以下の誤差が出る場合があるのはどのように解決したら良いでしょうか 四捨五入では本来算出したい数値からズレてしまいます currency型なら誤差が発生しない聞いたのですがどうやら馬鹿が使う物らしいので何か別の方法をご教示頂けませんでしょうか
903 名前:デフォルトの名無しさん [2022/04/20(水) 00:24:45.89 ID:TUC465n/0.net] >>887 馬鹿が悔しくて質問か? 除算で1÷3だったらどうなると思う?
904 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 00:37:19.89 ID:EV0gbz680.net] >>887 除算した結果をどうしたいのかによる 結果を他の数値と比較したいのなら、比較したい数値に除数を掛けて比較する
905 名前:デフォルトの名無しさん (ラクッペペ MM8f-/HVa) mailto:sage [2022/04/20(水) 02:03:14 ID:HkpFcH5SM.net] 実際のところ除算の丸め誤差が問題になることは少ない 数値計算では有効数字と桁数さえ把握していれば十分な精度で演算できる というか浮動小数点だろうが固定小数点だろうが四捨五入すれば必ず丸め誤差は発生する むしろ浮動小数点を扱う場合は桁数の差が大きい数値を加減算する時の情報落ちと、値が近い数値同士を減算する時の桁落ちの方が厄介
906 名前:デフォルトの名無しさん (ワッチョイ b717-73NO) mailto:sage [2022/04/20(水) 02:16:34 ID:Tl7YCJ+60.net] >>889 分かりにくかったらごめんなさい ・数十行(場合により数百行から千行弱)の作業計画表があってそれぞれ開始日、終了日、工数を作業担当者が決定し、それとは別に納期を設定します ・各行では作業日数を算出し、工数を日割り計算し、小数点第二位で四捨五入、最終日に余りを加算して進捗の計画とします ・作業担当者は日毎に各項目の進捗率を入力します ・作業担当者はこのファイルとは別に上位工程担当者との連絡シートを更新し、そこで発生する追加工数などをこのファイルで読み込みます ・上記データを元に様々な演算を行い、納期に対して進み見込みか遅れ見込みか、またそれが何日の見込みかを算出します ・結果を当初計画、進捗実績および予測、納期などをグラフで可視化 という仕様のツールなのですが2つ目のあたりで余計なズレが発生して演算が狂ってしまう場合があり、 currency型に値を放り込んで強引にズレが生じないようにしているのが現状です 100%発生するのではなく20物件に1件程度の発生率なので如何したものかと頭を悩ませております
907 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 04:15:00.17 ID:i+5dFZiZM.net] >>891 算数わかる?
908 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 06:42:44.94 ID:PPr2by3tM.net] >891 2つ目のあたりというのがよく分からないけど箇条書きの2段目の項目のことなら処理の仕方が間違ってる 最後に余りを足すなら途中経過はすべて切捨てで処理、途中経過を四捨五入するなら全ての累積値を最後に被除数から引いて加算値を求める どちらかで処理しないとズレるのは当たり前
909 名前:デフォルトの名無しさん (ワッチョイ 1701-hfAD) mailto:sage [2022/04/20(水) 07:19:32 ID:Ls68Jrpy0.net] Currency型てのは誤差が出ないわけじゃなくて精度が固定されてるっていうことなんだけどな そもそも工程表程度の精度で浮動小数点の誤差が問題になることなんてないだろうに どうしても誤差が気になるなら割り算を商余で表現するとか演算順序の見直し(割り算を最後に)
910 名前:デフォルトの名無しさん (ブーイモ MMcf-73NO) mailto:sage [2022/04/20(水) 07:23:24 ID:uFaPvbC9M.net] >>893 余りは工数-日毎工数x作業日数で算出していましたが処理が違いますか? 勿論この場合余りが負の値になる状況もあるので正確には余りとは違う表現をするのが正しいのですが これで算出した最終日の工数が3.5hになるべきところが3.49999hになるのは計算式の誤りですか?
911 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 07:34:26.59 ID:lCHITGXH0.net] >>895 最後に小数点以下第二位で四捨五入すればいいじゃん
912 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 07:40:54.07 ID:lCHITGXH0.net] >>895 どこでどれぐらい誤差が出るかは元データと計算式とデータ型によるから、その情報だけではどこが悪いか判断できない 工数は小数点以下第何位まで入力されてんの? そもそもデータが1000行しかないんなら別にCurrencyのままでいいじゃん 仕事の目的はプログラミングじゃないんだから、結果がちゃんと出たんなら現時点ではそこで終わっとけ 誤差の処理をちゃんとやうとすると情報サイエンスの基礎をみっちりやらないと無理だから、今回の件とは別に自宅で時間かけて勉強しろ
913 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 07:47:48.41 ID:uFaPvbC9M.net] >>896 四捨五入した値をdouble型に代入した際にもこの誤差が発生する場合もあったのですがその場合の対処はDoWhileで数値が丸められるまで四捨五入を繰り返す処理を噛ませれば良いですか? それよりcurrency型に代入した方が処理を省略できるのではないでしょうか 担当者の癖や上位工程担当者の癖、物件の種類などを加味して分析して完了予測を出すためツール全体で2万弱のステップ数があり、可能な限り処理を早めたいです まぁそんなの誤差の範囲じゃんとかもっと別に短縮出来る所あるだろって言われたらそれはそうってなるんですが 工数は小数点第一位までの入力です
914 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 08:21:13.14 ID:lCHITGXH0.net] >>898 10進数の0.1は2進数だと循環小数になるんだわ Doubleは単に桁数が増えるだけで誤差がなくなるわけじゃないから、たぶん根本的に理解が間違ってる
915 名前:デフォルトの名無しさん [2022/04/20(水) 11:58:28.08 ID:TUC465n/0.net] >>898 そもそも何が問題かわかってる? コンピュータ(VBA)の割り算では例えば0.999999とかになる問題は常にあることと、有効桁数を常に頭に入れてロジックを組む必要がある 割り算した結果の少数点同士の足し算もできるだけ避ける 小数点以下は一桁と決まってるなら最初から10倍しといて見せる時だけ小数点を付ける 最終的に割り算したら四捨五入する などなど当たり前のことをわかってないから数値が合わないように見える こんなの基本だが
916 名前:デフォルトの名無しさん [2022/04/20(水) 12:03:05.91 ID:TUC465n/0.net] それと、変数や定数、埋め込み数値の型に気を付け、違う型同士の演算ではどういう結果になるかも言語の仕様を常に調べるのは当たり前のこと
917 名前:デフォルトの名無しさん (ワッチョイ ff63-0fbr) mailto:sage [2022/04/20(水) 12:14:09 ID:AAz4B5BA0.net] >>901 なるほど!さすが
918 名前:物知りですね! でもここは質問スレだからもう少し人には優しくしてくださいね [] [ここ壊れてます]
919 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 12:39:04.97 ID:dxBIrhD/0.net] プログラムの本質からは外れるけど、現場の工場要員を秒刻みで拘束することに繋がるのを 把握しておくべき 上の方の役員からの指示でのシステム構築なのか、現場の意見を汲んだ システム化なのかでも変わってくるかも知らんが、古来そういうのは運用し出してから破綻する 相手がロボットならまだしも、自分だって作業を秒刻みで拘束されたら嫌気さすだろうに システム構築する側の自己満足に過ぎないような無駄なヶ所に注力したところで給料泥棒化するだけ 実際には不良(材料不良・加工不良・落下などの破損・etc)が出たり加工機械の不具合で作業がSTOPしたり 余った時間をバッファに充てるだけじゃ無くて、敢えて余裕をもたせたプランニングを意識しないと 全社員から反発くらって、せっかくの仕事が無かったことにされる 黒歴史の予感しかしない ロボットやオートメーション機器のためのプログラムだとしたらVBAは間違ってると思うし
920 名前:デフォルトの名無しさん (ワッチョイ 5701-5h/q) mailto:sage [2022/04/20(水) 13:55:16 ID:wuSnjbzX0.net] >>900 浮動小数点数は特定の桁数の2進数で表現できる数字に丸める表現方法で、10進数の有効桁数は関係ないんじゃ? そもそも「有効桁数を頭に入れて〜」みたいな正確さを考えて使う型じゃなくて、曖昧で良い場合に使う。 小数同士の演算は(オーバーフローを無視すれば)固定小数点数で問題なく行えるから避ける必要ない。
921 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 13:58:17.02 ID:nqlym3kL0.net] 基本は大事だから 何度でも繰り返しておくんなまし。
922 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 14:12:37.06 ID:2WayYnGs0.net] 質問ですが、 VBAからwebページのデータを取得するとき、 CreateObject("InternetExplorer.Application")とかってやりますが、 サポート終了後はどうなりますか? Edgeでできる?
923 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 14:45:20.55 ID:W96CmtFuM.net] >>906 Selenium Webdriver
924 名前:デフォルトの名無しさん (ワッチョイ 5701-5h/q) mailto:sage [2022/04/20(水) 15:54:04 ID:wuSnjbzX0.net] >>906 当分サポート終了はないけど、そうなったらできなくなる。 Edgeじゃできないから代替案を考える必要がある。 有名なのはSelenium、Chrome DevTool Protocol 前者はライブラリ(参照設定する奴)を利用者全員にインストールしてもらい、 更にブラウザとのバージョン互換性にも対応する必要がある ただし動作環境はエクセルのみっていうVBA最大のメリットを失う 後者は単独で動作するモジュールが作られてる VBA以外の言語の開発環境があるなら、 スクレイピング部分はそれで作成してVBAから呼び出すって方法もある。 自分はそうしてるよ
925 名前:デフォルトの名無しさん (ワッチョイ 5701-5h/q) mailto:sage [2022/04/20(水) 15:57:01 ID:wuSnjbzX0.net] edgeじゃできない、は CreateObject("InternetExplorer.Application") を使ってedgeを操作できないって意味ね だからseleniumとかでedgeを操作することになる
926 名前:デフォルトの名無しさん [2022/04/20(水) 16:15:46.15 ID:TUC465n/0.net] >>904 わからないなら黙っていればいいのに
927 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 16:20:42.29 ID:oDE2bDUYM.net] 固定小数点は格納するたびに四捨五入するようなもんだから誤差の蓄積は多いが 人間社会ではコレをヨシ!としているから問題ない 天文学的な計算では命中しないだろう
928 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 16:26:01.75 ID:2WayYnGs0.net] >>907 ありがとう。
929 名前:デフォルトの名無しさん (ワッチョイ b72f-mbkD) mailto:sage [2022/04/20(水) 17:45:44 ID:DAsyvBxD0.net] >>911 >固定小数点は格納するたびに四捨五入するようなもん もってる精度の桁数を超えない限りそんなことはないわ 想定する桁数内で誤差がでないから固定小数点使うんだぞ 逆に一般的なプログラム言語の浮動小数点は小数以下桁数が浮動する癖に0.1が正確じゃなかったりするから問題なんだよ
930 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 19:09:32.27 ID:cVTwugEg0.net] 0.1は0.1だよ
931 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 19:25:53.48 ID:FB1fQipzM.net] 0.1E+15 桁数は10の15乗の1京 有効数字は1桁の0.1 値は1000兆でも数値は0.1
932 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 19:43:46.55 ID:lF2OJV8Ed.net] Trunc関数で不要な桁をバッサリ逝けば良いんじゃない?
933 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 20:09:02.82 ID:2WayYnGs0.net] >>908 ありがとうございます。 iMacrosってのを試してました。 Selenium、Chrome DevTool Protocolを調べてみます。 Excelで入力ダイアログボックスを出して、入力した番号に応じて、そのページのデータを取りに行く、 ってことがやりたいです。 言語はなんでもいいですね。 できれば、Visual Studioを使いたいですが…w
934 名前:デフォルトの名無しさん [2022/04/20(水) 20:56:24.65 ID:by8HP/iQ0.net] なんだIEEE754仕様問題の話題か。 10進と16進(2進)の浮動小数差異が出るのはまぁある意味仕方がない。 固定小数点の型を持つ言語を使うか、割る前に何桁か分10のべき乗数を掛けて割った後に同じだけ割ってやって適当なところで諦めるか、というところが落としどころだろうね。 ちなみにEXCELの数式の四捨五入は本当に四捨五入だけど、VBAの四捨五入は銀行丸めだから気をつけてね。
935 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 21:03:02.83 ID:lF2OJV8Ed.net] 因みにパワクエも銀行丸め いい加減統一して欲しいわ
936 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 21:09:55.19 ID:Q+UfmON+0.net] 四捨五入はRound使わなくてもできるらしいで 知らんけど
937 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 21:17:52.87 ID:Me5L26li0.net] >>906 おれも心配してたけどオートメーションの場合は6月以降も使えるらしいな
938 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 22:25:36.74 ID:DAsyvBxD0.net] >>918 暗黙の変換(丸め)を四捨五入というのは問題があるかと
939 名前:デフォルトの名無しさん [2022/04/20(水) 23:37:18.06 ID:by8HP/iQ0.net] >>922 何故に暗黙の変換限定の話と思ったのかは分からないけど、型はなるべく明示的に変換しないとね。 その辺、VBAはOption Strict Onが使えないから大変。 もっとも、.Netでも匿名型を使うメソッドは固めてOption Strict Offに設定したモジュールに突っ込んでおく必要があるけど。
940 名前:デフォルトの名無しさん (ワッチョイ b72f-mbkD) mailto:sage [2022/04/21(木) 17:21:20 ID:pjiVvgnX0.net] ああ、そうだな。Cxxxで明示的に型変換しても銀行丸めだから 暗黙の変換に限った話ではなかったな 匿名型のくだりは何を言ってるか意味不明だがな 匿名型は名前がついてないだけで厳密に型指定されているんだが
941 名前:デフォルトの名無しさん [2022/04/21(木) 23:11:20.77 ID:VWW2tbiZ0.net] CcxxとかじゃなくてもRound使ったって普通に銀行丸のだろ
942 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 02:09:40.61 ID:M5fmJ0ze0.net] ワークシート関数のROUNDは四捨五入 VBAのRound関数は銀行丸め VB.netのMath.Roundメソッドも銀行丸め これ真面目な話テストに出るし実務でもトラブルの元だからちゃんと覚えて使い分けろよ
943 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 08:50:16.15 ID:Uci4ALKRM.net] そもそも四捨五入や銀行丸めは暗黙の(型)変換でも何でもないけどな
944 名前:デフォルトの名無しさん [2022/04/22(金) 12:17:14.78 ID:6grDaRhxp.net] VBAの四捨五入は型変換でやるもんだと思ってるんだろ
945 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:26:05.45 ID:Sb+Ase1ga.net] VBAで全ての物事を解決したいと考えています。 まずはOCRからやっていきたいです。 次に、人工知能とビッグデータに関する VBA のライブラリを充実させたいです。 それができたら、VBA で、callbyName を使って、疑似マルチスレッド化してサーバーOSを作り、 メタバースを作りたいです。 どうしたらいいですか?
946 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:56:56.20 ID:JqjwtZFMr.net] 沢山金がある →MSに依頼する 少しだけ金がある →スクールにでも通う 金が無い →自力で調べろ
947 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 13:46:25.69 ID:qHWul8Ex0.net] >>929 もう休み始まったのか羨ましいな
948 名前:デフォルトの名無しさん [2022/04/23(土) 07:32:43.48 ID:Q/JWtTUi0.net] VBAのコードをパスワードではなく AccessのようにMDEまたはACCDE化して隠蔽できないのかね?
949 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 13:58:03.66 ID:yVxZarCbp.net] あったとして、ワークシートが見れない
950 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 21:14:41.84 ID:QWCWIiV00.net] VB6.0の質問となります。 ご存じのかた、ご教授お願い致します。 CommandButton1のDownPictureプロパティ(ボタンを押すと指定したピクチャが表示される) で設定するピクチャファイルをボタンを押すたびにランダムのピクチャを 表示する方法はありますでしょうか? ピクチャを固定でなく、可変でいろいろなピクチャを表示することはできるのでしょうか? 宜しくお願い致します。
951 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 21:26:02.35 ID:Owv7WUis0.net] >>934 可能だけどスレチ VBとVBAは似てるけどまったく違う言語なのよ VB専門のスレで聞くか、できるという情報を手がかりにぐぐって
952 名前:934 (ワッチョイ 2590-WvSx) mailto:sage [2022/04/23(土) 21:56:53 ID:QWCWIiV00.net] >>935 ありがとうございます。 VBスレで聞いてみます。
953 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 03:02:47.88 ID:dQQkhpXr0.net] なんで.netじゃなくてVB6.0?
954 名前:デフォルトの名無しさん (ワッチョイ a868-g9NX) mailto:sage [2022/04/24(日) 07:12:27 ID:V025dUWC0.net] 聞いてやるな
955 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:27:40.38 ID:rcB2xidb0.net] 保守案件じゃねーの? それより > VBとVBAは似てるけどまったく違う言語なのよ のほうが気になるわ
956 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:33:51.29 ID:V025dUWC0.net] VB6とVBAは割りと似てるよ .netは別物だけど
957 名前:デフォルトの名無しさん [2022/04/24(日) 09:47:15.58 ID:K6J8xSzg0.net] VB.NetとVBAが違うと言いたかったんじゃないか? VBAとVB6.0なんてガワ以外大して変わらんだろ
958 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 11:05:42.56 ID:JjYc30D0a.net] それなら全くスレチって言うわけでもないだろうしVB6以前スレに誘導してもあっちは過疎ってるから>>935 の真意がわからん 古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]c2ch.net https://mevius.5ch.net/test/read.cgi/tech/1440930335/
959 名前:デフォルトの名無しさん [2022/04/24(日) 11:34:19.84 ID:3PCmdv6z0.net] >>934 配列かコレクションに取りうる画像ファイルのパス全部突っ込んどいて 毎回Rnd関数でランダム添え字作成してDownPictureへ代入する処理を Timerイベントで定期的に起こせばいいんじゃね
960 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:34:51.24 ID:/i/HSWcF0.net] >934の方法で出来るね vb.netはCommandButtonというコントロールがないからButtonコントロールで処理することになるけど
961 名前:934 mailto:sage [2022/04/24(日) 14:05:21.06 ID:sOMp0pcl0.net] >>943 教えていただき、ありがとうございます! この方法でできました! 助かりました! >>944 .netは方法が違うんですね。 ありがとうございます。
962 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 14:18:48.53 ID:H35nhyzua.net] VBAに聞けば、VB6.0の問題が解決すると思ってる魂胆がむかつく
963 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 14:19:17.64 ID:H35nhyzua.net] 次の質問どーぞー!
964 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 14:49:27.80 ID:SWKX3wPR0.net] >>933 なんでだよ Accessだってオブジェクトはそのまんまだぞ Codeを隠すってだけだ まあ、Excelでそんなことしたら阿鼻叫喚の地獄絵図がそこら中で起きるだけだろうが
965 名前:デフォルトの名無しさん [2022/04/24(日) 15:00:54.37 ID:awQxKQ/u0.net] >>945 結局、こういう馬鹿は馬鹿だからこんな書き込みをすることになるんだよな
966 名前:デフォルトの名無しさん (ワッチョイ a868-g9NX) mailto:sage [2022/04/24(日) 19:19:11 ID:V025dUWC0.net] >>949 そうそう、まさに>>949 みたいな感じで
967 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:32:26.94 ID:4thwl0KN0.net] VBAのコードを隠すとかw いやらしいコードとか胸アツ
968 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 21:56:52.40 ID:HnHBh+4U0.net] ソースを見たらBase64が書き込まれてるとかかw
969 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 22:10:43.02 ID:qlayZYg40.net] 変数や関数名を1文字にして、インデントをなくし、マルチステートメントを使い、GoToで飛ばしまくる これぐらいやっとけばニワカには暗号化されてるのと同じに見えるよ 組み込み関数に型文字を付けたり、行番号とか書いとけばさらに混乱するんじゃない?
970 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 22:11:47.35 ID:qlayZYg40.net] 代入のLetを省略せずに書くとか
971 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 22:21:56.70 ID:qlayZYg40.net] 例えばこういうのは初心者だとVBAのコードだと認識できない Option Explicit Sub a() 10 Dim i%, s$: For i% = 0# To 15 Step 1&: Let s$ = Hex$(i%): Debug.Print s$, 20 Next i%: GoTo Next_i: Let i% = 999# 30 Next_i: Debug.Print End Sub
972 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 16:32:49.44 ID:mIKR8D/k0.net] もっと初心者だとこういうもんだと覚えて、ウルトラコード量産して 逆にそれがウケてそこら中から引っ張りだこに成る可能性も
973 名前:デフォルトの名無しさん [2022/04/25(月) 18:25:34.65 ID:d4FCGwAUa.net] あとどこからも呼ばれないコードを周囲に書いとくとか
974 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 22:42:22.33 ID:LL5g/Itw0.net] 難読化してくれるサイトもあるようだがAIでも駆使してんのかよ
975 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 13:34:27.36 ID:h7wIW8Sj0.net] VBを学んでみたいのだけど、専用アプリをインストールすれば良いのですか?
976 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 13:39:28.14 ID:4e+J3DaO0.net] それを聞くようでは勉強進まないと思うぞ VBAなら、Excelのオプションから設定しよう
977 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 13:41:38.59 ID:h7wIW8Sj0.net] はい!分かりました先輩!
978 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 11:18:39.59 ID:13VCBUUL0.net] VBとVBAは違うだろ
979 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 11:35:58.26 ID:5AfXZQ180.net] めんどくさくなりそうだからその話題はいいわ
980 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 12:17:37.70 ID:0nl7nS5l0.net] ヤフーの質問サイトをたまに見ていると、VB板なのにExcel VBAの質問している方が多いですからね。
981 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 14:37:20.10 ID:VQIBBePJ0.net] これはマイクロソフトが悪い
982 名前:デフォルトの名無しさん [2022/04/28(木) 02:09:14.27 ID:ba7q24a/0.net] 質問と言うわけじゃないんだけど、最近VBAのお仕事が立て込んでて、こねくり回していたら変な現象が起きたのでちょっと報告。 セルのフォーマットを変えても値がそのフォーマットに合わせて変更されず、セルの中身を触ろうとして初めて設定したフォーマットが反映されることがある。 個人的に勝手に「ガラスのフォーマット」と呼んでいるけど、これをVBA上でフォーマットを反映させたいと思い、Cell(1,1).value = Cell(1.1).valueみたいにすれば行けるかなと思ってやってみたら行けたので、 範囲でも行けるかなと思ってRange(“A:A”).value = Range(“A:A”).valueとしてみたら行けた。 調子にのって複数のセル範囲を一度にしてみたら、VBA側ではエラーはなくセルの内容がまばらに#N/Aとなった。 それも何かしら値が設定されていたセルもそうでないセルも関係なくまばらに#N/A。 複数範囲、例えば”A:A,B:B”みたいなのをSplitで「,」で分割してひと範囲づつ行ったら起きなくなった。 まだ詳しくは調べていないし、ヘルプも見ていないけどEXCELのバグと考えるのは早計かな?
983 名前:デフォルトの名無しさん mailto:sage [2022/04/28(木) 06:30:27.37 ID:4LxgxN/hd.net] ストゼロのコピペみたいになってるので先ずはExcelの異常より自分の異常を気にした方が良い お大事に
984 名前:デフォルトの名無しさん mailto:sage [2022/04/28(木) 06:56:19.59 ID:Xx5H6lJB0.net] >>966 重い
985 名前:デフォルトの名無しさん mailto:sage [2022/04/28(木) 07:13:52.33 ID:Nya/6dWlM.net] うーんこの
986 名前:デフォルトの名無しさん mailto:sage [2022/04/28(木) 08:23:08.41 ID:tFS3Ff7A0.net] 同一sheet、複数areaの仕様通り
987 名前:デフォルトの名無しさん mailto:sage [2022/04/28(木) 10:11:30.42 ID:w1n3DLDr0.net] 新人の頃、なんでもやたらバグ!と言い募ってたら、ここの諸先輩にブン殴られた 何でもかでもぜんぶ他者のせいにしてると、モニタから腕が伸びてきてホントにブン殴られる 多分、立て込んでるがキーワード 立て込んでるなら尚更マシン複数台用意して 作業を分散して負荷を軽減するなり、都度都度保存してExcelも終了させておいて 合間にエロ動画見たりしながらExcelさんを休ませてあげないと、テンポる
988 名前:デフォルトの名無しさん [2022/04/28(木) 14:24:22.28 ID:UYKtqYXXd.net] 糖質か
989 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 15:02:24.64 ID:VxUwChyk0.net] ここ最近、5ちゃん全体が重いのだが? 同志達もそう?
990 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 17:00:23.18 ID:1aSdL/gJ0.net] >>973 昔から2ちゃん5ちゃんは世界のどこかで紛争が起きるとアクセスが急増したりサイバー攻撃されたりで重くなる 今はロシちゃんウクちゃんのせい
991 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 19:06:07.89 ID:lunnn7Hg0.net] 5chのサーバーはアメリカにある なんかあるとすぐに攻撃されるからな
992 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 00:10:15.39 ID:xtMjZAZqa.net] まったく重くないが。 そろそろ次スレよろ
993 名前:デフォルトの名無しさん [2022/04/30(土) 10:32:12.86 ID:lfBpjyTL0.net] >>976 はぁ?よろじゃねえよ てめえが立てろハゲ
994 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 10:33:08.68 ID:/k/F8o6k0.net] よろ~☆ミ
995 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 11:25:04.05 ID:SY9/68Ub0.net] 46497!
996 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 15:57:06.54 ID:jIMADI4Y0.net] あれ?昔からのしきたりで、スレ主が次のスレ立てを担当するはずでは??
997 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 15:58:48.35 ID:ttNuaWX+d.net] 質問したい奴が立てればいいぐらい どうでもいいスレだろ
998 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 00:13:28.72 ID:AQA/eAvl0.net] 980番を踏んだ奴が立てるんじゃなかったか
999 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 01:58:03.34 ID:Pk0oKD+E0.net] 建て方知らないもん アソコの立て方は得意だけどさ
1000 名前:デフォルトの名無しさん [2022/05/01(日) 02:01:11.00 ID:q0kLnjNbd.net] 立てても使い道(相手がいない)がないのになぜ立てるか
1001 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 02:24:06.36 ID:2t63WK/jM.net] 立てたぞ Excel VBA 質問スレ Part76 https://mevius.5ch.net/test/read.cgi/tech/1651339421/
1002 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 05:51:26.54 ID:QKAZyHTH0.net] >>985 有能
1003 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 14:10:11.29 ID:X7BfbxUdr.net] Excel2019になってから重いデータを処理する時にエラーが出やすくなりました。 7000データあるものから鳥瞰図を作成して画像として貼り付ける処理をしているんですがコピーして貼り付ける際にたまにエラーが発生します。(1004データを貼り付けできません) バッファとして貼り付ける前にwaitで数秒待ってあげるとエラーが出なくなるんですが…… 仕方ないんですかね?
1004 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 16:57:37.12 ID:9Zz7qGMa0.net] エラーをキャッチすれば?
1005 名前:デフォルトの名無しさん (ワッチョイ 2701-XZ6m) mailto:sage [2022/05/03(火) 18:40:38 ID:1FiEgH3Q0.net] エラー発生時にエラータグにとばしてそこで数秒待って再度実行も試しましたが結局永久ループになってしまいました。
1006 名前:デフォルトの名無しさん (ワッチョイ 075f-erxH) mailto:sage [2022/05/03(火) 18:51:21 ID:wJ2FprYn0.net] DoEvents入れてみるとか
1007 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 19:57:23.11 ID:1FiEgH3Q0.net] DoEventsも最初に試しましたがイマイチでした。 あまり同じような症状が出ている方少ないのかな?重い処理だと次の処理が追い越しちゃってエラーが出てる感じなんですよね。
1008 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 23:05:49.83 ID:0jm7qJTo0.net] Application.ScreenUpdating = False をやってから処理して、終わったら Application.ScreenUpdating = True にしてみたら?
1009 名前:デフォルトの名無しさん [2022/05/04(水) 01:08:45.09 ID:llwekS7n0.net] >>987 まぁ同期が取り切れていないということで、 コピーが終了したタイミングが取得出来ないと言うことなら待たせるのは仕方ないんじゃないかな? 後続の処理の流れによりけりになるけど、 ある程度時間が経過すればエラーが起きなくなると言うことであれば、それを待たせる時間がもったいないなら そこで貼り付けはしないで後続処理を進めて、貼り付け自体はタイマーでイベントを起こしてそこで貼り付けの処理すれば時間の節約にはなるかも知れない。 内部的にどんな感じで処理されてるか分からないから後続処理の内容によって待つ時間を増やさなければいけなくなるかも知れないけどね。
1010 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 04:41:51.29 ID:Bmz10qTz0.net] アドバイスありがとうございます。 Application.ScreenUpdating=Falseはいれています。 やはり仕方無いのですかね? PCの性能面でも良くないのかも知れません。 メモリーリークのような事が起こっているのでしょうかね?
1011 名前:デフォルトの名無しさん (ワッチョイ 87da-Nh0L) mailto:sage [2022/05/04(水) 06:45:06 ID:XHZmixda0.net] オブジェクト変数のその都度開放とかは?
1012 名前:デフォルトの名無しさん (ワッチョイ df4f-bbcD) [2022/05/04(水) 07:00:53 ID:llwekS7n0.net] >>994 メモリーリークというのは メモリの解放を上手く行えずゴミが溜まったり 本来指すべきメモリのアドレスを 違うアドレスをさして変なアドレスからデータ読んだり 変なところに飛んだりすることを指す訳だけど 話を聞いた限りだとその可能性は低いかな。 強いて言えばコピーする際にクリップボードが 数、あるいは容量的にパンパンで次のコピーを 行おうとしたときにもうコピー出来ない、 またはコピーしようとしているんだけど 空き容量が少なくて、そこで内容を展開しているから 時間が掛かっているとかの類が考えられるかな。 どのくらいコピーペーストしているのか分からないけど、 とりあえずコピーペーストする前かした後に 一回一回、クリップボードをクリアする処理を挟んでみては?
1013 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 07:22:42.23 ID:sN1XYX+fd.net] Excel2019当方でも同じ PCの性能が良すぎてExcelの処理が追いついてない感じ 極力クリップボード経由を避ける どうしても必要なら間にDoEvents - Sleep - DoEvents を入れる
1014 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 07:28:33.66 ID:CsYq7Xth0.net] >>996 > 本来指すべきメモリのアドレスを > 違うアドレスをさして変なアドレスからデータ読んだり > 変なところに飛んだりすることを指す訳だけど それはメモリーリークとは言いません
1015 名前:デフォルトの名無しさん [2022/05/04(水) 11:56:06.30 ID:ZnBr6fHma.net] pc買い替え
1016 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 12:08:38.05 ID:7uEIwZovM.net] 1000
1017 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 83日 21時間 44分 6秒
1018 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています