1 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 13:43:16.31 ID:6yf2E1Gz0.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ↑同じ内容を3行貼り付けること ExcelのVBAに関する質問スレ コード書き込みや作成依頼もOK 次スレは>>980 が立てること 無理なら細かく安価指定 ※前スレ Excel VBA 質問スレ Part77 https://mevius.5ch.net/test/read.cgi/tech/1658009255/ - VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
477 名前:デフォルトの名無しさん [2022/12/22(木) 13:55:10.49 ID:llMY0dtCH.net] いや、購入した本が間違ってる場合もあったんだよ 今なら複数のサイト比較して一番いいコードを参考にするって出来たけど、 当時は変な本に当たるとどうしようもなかった 良い本かどうかの判定も難しかった
478 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 14:10:57.81 ID:YMkZN6Dm0.net] >>470 情報の質にバラつきがあるのはネットも同じ 役に立たないサイトのがよっぽど多い
479 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 16:47:07.71 ID:lq0Ds6x10.net] でもさ、初期にExcelの指南本書いていた人達はどこで知識を身につけたのだろうか?? それこそ何も情報が無い時代なはず…
480 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 17:00:36.54 ID:nD0nOW6q0.net] いちばん最初は、分厚い説明書付いてきた 足りなければmicrosoftのFaxへ電話して 欲しい情報の番号押せばダラダラと何十枚ものFAX資料として引っぱり出せた 金有る奴は説明書の最後のページにある有料版の冊子を取り寄せてた ヘルプが充実してきてそれらは廃れた
481 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 17:16:41.62 ID:YMkZN6Dm0.net] >>472 昔はマイクロソフトが講習会とか開いてたんよ 1回何万円も払って授業を受けに行ったわ
482 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 19:04:05.80 ID:dL3lthyL0.net] >>469 趣味ならともかく曲りなりにもビジネスなら時間は重要だろ あと、ちょっとレアな手法(例はよくないかもだけど例えばクラスにデフォルトプロパティを追加する方法とか)は載ってる本を探しきれない
483 名前:デフォルトの名無しさん [2022/12/22(木) 19:55:30.36 ID:b1U2eBw5d.net] >>472 頭の弱い人の幼稚な発想だね 何歳?
484 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 20:17:52.60 ID:lq0Ds6x10.net] >>476 あんた、最近みんなから相手されないからって拗ねたレスするなよな。 職場でもそういった態度なんか?
485 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 20:53:21.34 ID:zxeRX39Sa.net] >>475 え?クラスモジュールでデフォルトプロパティ設定できるの?
486 名前:デフォルトの名無しさん [2022/12/22(木) 20:57:06.81 ID:b1U2eBw5d.net] >>477 自分がどんな馬鹿なことを聞いたのか理解できないのか? 真正の馬鹿だな
487 名前:デフォルトの名無しさん [2022/12/22(木) 21:07:40.03 ID:llMY0dtCH.net] >>471 だからネットなら比較簡単って言ってるじゃん 最初に見つけた解決法でハイ終わり!って小学生かいな >>478 気にしたこと無かったけど、凄い方法で実現できるようだ https://thom.hateblo.jp/entry/2015/02/16/003000 エクスポート、インポートでやっと実現するとか面白いコーディングだ
488 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 21:15:05.86 ID:dL3lthyL0.net] >>478 ちょっとトリッキーだしMSが保証してるかどうかがわからんから例としては良くないって書いたけど VBA クラス デフォルトプロパティ でググれば出てくるよ https://thom.hateblo.jp/entry/2015/02/16/003000 こんなのどうやって見つけたんだろう...
489 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 21:15:50.72 ID:zxeRX39Sa.net] >>480 この人のブログはかなり読んでたつもりだったけど この記事は完全に見落としてた ってか、この手法は面白いけどマニアック過ぎるね 後で試してみよう
490 名前:デフォルトの名無しさん [2022/12/22(木) 21:53:51.19 ID:VSY8vUs50.net] Range(Cells(7, 1), Cells(7, 3)) = "一括入力" Range(Range("A7"), Range("C7")) = "一括入力" Range(Cells(7, 1), Range("C7")) = "一括入力" Range(Range("A7"), Cells(7, 3)) = "一括入力" 結局セルの指定方法のひょうじゅんってどれなの?
491 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 22:20:04.73 ID:lq0Ds6x10.net] >>479 だからこっちがあんたに質問してるの もう一度聞く 職場でもそんな態度で過ごしてるのか?
492 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 22:31:11.78 ID:dL3lthyL0.net] >>483 範囲が固定なら Range("A7:C7") = "一括入力" 可変なら Range(Cells(R1, "A"), Cells(R2, "C")) = "一括入力" ' 行可変 Range(Cells(7, C1), Cells(7, C2)) = "一括入力" ' 列可変 Range(Cells(R1, C1), Cells(R2, C2)) = "一括入力" ' 両方可変 かな まあ他にもReSize( )使ったりケースバイケースかと
493 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 22:33:05.06 ID:GH82dNkB0.net] >>483 列の範囲だけだったらResizeかな
494 名前:デフォルトの名無しさん [2022/12/22(木) 23:10:32.55 ID:llMY0dtCH.net] >>483 そもそも一括入力する場面ってのがほぼ無いと思うが・・・ vbaでテンプレートを作らざるを得ないような状況なら、一番上かな。アルファベットでセル指定する意味は無い >>484 お前がアホだからアホみたいな意見が付いてるんじゃないか >>472 はちょっと酷すぎるぞ
495 名前:デフォルトの名無しさん (ワッチョイ 268c-Q+2S) mailto:sage [2022/12/23(金) 00:01:20.20 ID:ybGAYlyS0.net] >>483 Range("A7").Resize(1,3)="一括入力" Cells(7,1).Resize(1,3)="一括入力" これが一番応用効いて楽だよ
496 名前:デフォルトの名無しさん (アウアウウー Sa9f-3IAs) mailto:sage [2022/12/23(金) 00:11:39.80 ID:qKiD8YiAa.net] いつものかまってちゃんを相手するなよ。 スルースキルも身に付けろ
497 名前:デフォルトの名無しさん (ワッチョイ 9710-3IAs) mailto:sage [2022/12/23(金) 00:17:53.03 ID:cgp6NnPO0.net] >>487 都合の悪い質問に答えられないか。。 あんたさ、職場で上司や同僚から「取っ付きにくい人」とか「話かけにくい」って言われてないか? そういう性格早く正さないとハブられるよ?
498 名前:デフォルトの名無しさん [2022/12/23(金) 01:52:37.99 ID:9H6cWVdzd.net] >>490 馬鹿だと事実を指摘されて悔しい馬鹿
499 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 03:09:02.33 ID:QA4NKpfz0.net] 単なる雑談に噛み付いて謎のマウント取りはじめるとかキチガイだろ そんなやつに触れるなよ 無視が一番
500 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 08:29:10.87 ID:jHuJUdY9M.net] NG推奨:Sd8a-g3+u
501 名前:デフォルトの名無しさん [2022/12/23(金) 11:57:56.55 ID:UPL2DLzJd.net] 別ファイルの複数シート(日付ごと)の特定の値を日付ごとにとってきたい場合ってどうしたらいいんでしょうか
502 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 12:02:19.94 ID:qgR3sDVKd.net] 自分で書いてる通りのコードを書けばいいんじゃね 試しに書いてこれでいいですか?ってきいてみようぜ
503 名前:デフォルトの名無しさん [2022/12/23(金) 12:35:41.71 ID:urphUqXfM.net] マクロの記録で生成されたコードからスタート
504 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 13:27:34.05 ID:hEY6OCXna.net] 会社から他の社員にVBA教えてやってくれ、って言われたら素直に応じる?
505 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 13:38:51.27 ID:qgR3sDVKd.net] 業務命令で仕事のタスクとして依頼されるなら応じるだろ それとVBAを教えてやれって言われることなんてあるか? なんらかの業務で使ってる○○を直すからわからない事があったら質問してくるんで教えてやってくれ みたいな依頼じゃないのか
506 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 13:47:47.29 ID:D9+1PSvKr.net] でも大概適当な上司はそんなもん
507 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 15:22:20.31 ID:9qrIygbaa.net] ユーザーフォームを表示してテーブルにあるデータのうち任意のレコードを入力させるマクロを作っているのだけれど、テキストボックスにするべきかコンボボックスかそれともリストボックスをクリックさせるべきか、迷っている 皆さんはどういうUIにしてますか?
508 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 15:23:49.23 ID:XyJuHQV+0.net] 社長に好みを聞く
509 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 15:59:13.07 ID:qgR3sDVKd.net] 要件満たせるならどれも一緒だけどその3つの何で迷ってるか書いてみたら?
510 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 16:13:57.75 ID:9qrIygbaa.net] >>502 テーブルにあるレコードは100件くらいで、その中からなるだけ手っ取り早く入力できるようにしたいんですよね テキストボックスとリストボックスを併用してどちらか好きな方から値を取れるようにした方がいいのかなと考えています
511 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 16:36:35.72 ID:QA4NKpfz0.net] 上司に言われただけじゃ無理でしょ 本人のやる気がなければいくら教えても無駄 まずは自分で調べてできるとこまで書いてもらって、無理ならいくらでも聞いてって形式じゃないと教えられないわ そこらへんの講義してる先生じゃないんだから教材なんか持ってないのに1から教えるのは不可能
512 名前:デフォルトの名無しさん [2022/12/23(金) 17:32:52.63 ID:+XkEwRY60.net] お助けを願います Range("A1") = "=SUBTOTAL(103,A4:A300)" & """/""" & "COUNTA(A4,:A300)" 計算式の結果と結果の間に文字列のスラッシュを置きたいが上手くいきません
513 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 18:03:29.80 ID:qgR3sDVKd.net] >>503 じゃあそうすればいいのでは 作ってみて違和感あれば別の方法考えたらいいんじゃ >>505 CONCAT使えばいいんじゃない
514 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 18:28:53.74 ID:yAoZE/rR0.net] >>497 覚えるべきは、あなたです。末端は、組織が作ったシステムを使うだけでいい。 というべき。
515 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 18:40:22.55 ID:uM3VpDxWa.net] VBAのスキルが重宝される程度の職場なら、職務経歴書のいいネタと思って教えてやれよ それが済んだらお前はさっさとステップアップすればよい
516 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 18:53:30.35 ID:yAoZE/rR0.net] >>508 程度のレベルで身につくんだけど、実際日本人の9割以上はVBAなんて、出来ない。 よくエクセルマクロを使える割合見たいのがあるけど、ああいうサイトに行く人という母数でとっても3割程度。 実際は、まともな企業でも数百人に一人くらいしかいない。 だからVBAだけで神扱いされるんだけど・・・ 本来は、幹部こそ覚える技術なんだよね。 システム化って、まさに業務運用そのものを決めるようなものだから。
517 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:11:38.96 ID:PMhHGTDf0.net] AからFの列範囲に何行あるかわからないデータがあるとき データがあるセルの下に オートシェイプを線を入れるにはどうしたらいいですか? 標準の線では線種が少ないのでオートシェイプでいれたいです
518 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:30:37.54 ID:6wvtOpdna.net] >>507 本来うちの会社もそんな感じ考え方だったのだけど 部長(配列もfor eachも使えないレベルの自称VBA名人)が 旗振り初めたお陰でしょーもないVBA講座が始まったんだよ 俺自身は社内でVBA使えることを殆ど話したことなかったが、 お前もなんかちょっとは使えるみたいだから 講座受けて講師手伝えとか言われ始めたわ 下らなすぎてマジで憂鬱
519 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:35:41.52 ID:yAoZE/rR0.net] >>511 全員が使える必要はないんだよなぁ VBAで無駄な作業を消していくから、社員はむしろ削られる方向になる。 だから、末端がやると摩擦が起きるから、幹部がやるのが正しいんだけどねぇ…。 幹部がプログラミングできると、それを理解しているんだけどね・・・。 そもそもシステム化とは、業務運用・業務ルール・業務管理あらゆるものを交換の利く末端に強制的に行わせるものなんだから、それって幹部の仕事だよね?ってはなしなのにね。
520 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:42:26.59 ID:P8QL3kUaM.net] 自意識過剰
521 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:42:56.24 ID:imkEbUvu0.net] >>497 勤務時間内ならそれも仕事だから教えるが 編集の方法だけ教えて細かな内容は自分で調べるように伝える あとは「教えました」できないのは本人の勉強不足なので質問されれば答えるだけ
522 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:17:22.06 ID:dQOM9Mcwr.net] 仮に講義したとしても 「初心者にvbaの事をすべて教えるなんて不可能だから、取り敢えず基礎的な事だけ教えるか。配列まで教えるのは無理だな」 ↓ 「セルだけで処理したら30分くらいかかるし固まるし使えない」 ↓ 「配列使えばすぐ終わるよ」 ↓ 「そんなの習ってない。教えないほうが悪い」 ↓ 上司「何で教えないんだ。不備があるから評価下げる」 ってなる未来しか見えない 自分で調べる事ができるヤツは講義なんか必要なく聞かれた事に回答するだけで十分だしな
523 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:19:41.37 ID:GG/9dHCFr.net] 結局、講義したいなら有料の〇〇コースって外部の講義を使用するのが一番なんだよな 金がかかるコースなら明確に〇〇まで、って言えるし 金がかかんない内部での講義だと、最終的には教えないやつが悪い。講義するならちゃんと教えろって言い出すヤツは絶対いる
524 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:26:33.05 ID:Q+yAHYlca.net] セミナー行っても全員が自信を持って理解できたってことにはならないだろうしな。。 作った気にさせて終わりみたいな。
525 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:53:24.44 ID:imkEbUvu0.net] 聞かれたら教えるけど、聞かれなかったことは教えようがない 調べればすぐできるのになんで調べないのかわからない
526 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:00:03.44 ID:cgp6NnPO0.net] 本来、質問するならネット等に載っていない事例を聞くべきだよね。 ただこのスレに対する質問がガクッと減るがなw
527 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:06:01.97 ID:imkEbUvu0.net] あと、教わればどんなことでもできるようになると勘違いしている初心者も多い 考えるのと覚えるのは教わる側の問題
528 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:45:43.34 ID:qgR3sDVKd.net] >>510 マクロの記録で試しに線を引いてみたらコードを生成してくれるから それをみてあたりとかつけてみたらいいんじゃないの? 特定セルの座標はTop,Left 高さと幅はHeightとWidthで取得できるから計算して引いてみ
529 名前:505 [2022/12/23(金) 22:06:41.02 ID:G+gOrUWca.net] >>506 ありがとうございます concatなかったんでconcatenateを使いましたが同様にエラーが出てしまいました 基本から調べてみます スレ汚しすみません
530 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 22:21:44.94 ID:qgR3sDVKd.net] >>522 これでいいんじゃないの? Range("A1") = "=SUBTOTAL(103,A4:A300)&""/""&COUNTA(A4:A300)" Range("A1") = "=CONCATENATE(SUBTOTAL(103,A4:A300),""/"",COUNTA(A4:A300))"
531 名前:デフォルトの名無しさん [2022/12/24(土) 10:17:10.27 ID:4SoiJAnm0.net] >>522 セルに入れたい数式自体がエラーになる(間違ってる)からVBAでもエラーになってる。 セルに入れたい数式は下記かと。 =SUBTOTAL(103,A4:A300)&"/"&COUNTA(A4:A300) VBAで書き込む場合。.Formulaは無くてもいけるけど明確に数式として入れたい場合は書いといた方がいい。 Range("A1").Formula = "=SUBTOTAL(103,A4:A300)" & "&""/""&" & "COUNTA(A4:A300)"
532 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 13:34:40.02 ID:xbH5VpiM0.net] >>524 > "=SUBTOTAL(103,A4:A300)" & "&""/""&" & "COUNTA(A4:A300)" "=SUBTOTAL(103, A4:A300) & ""/"" & COUNTA(A4:A300)" じゃだめなの?
533 名前:デフォルトの名無しさん [2022/12/24(土) 13:48:48.91 ID:4SoiJAnm0.net] >>525 それでもいい
534 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 17:51:15.49 ID:45VxsXpS0.net] にんげんだもの
535 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 20:52:11.13 ID:04vSlPMR0.net] 正月はVBA三昧! コード書きまくるぞ~
536 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 10:24:03.69 ID:RFEZE8mMa.net] 休みでもVBA書くのか、凄いな 家だとVBAのネタがないからいまいちやる気にならない
537 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 12:52:26.69 ID:lugHnWiN0.net] え?みんな休日はExcelやらないの? 自分は隙あれば何かしらの練習してる。 勘と腕が鈍りそうな気がして。。。
538 名前:デフォルトの名無しさん [2022/12/27(火) 12:56:35.30 ID:4LpiodjLH.net] このスレに質問が来ればいくらでも回答するよ
539 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 14:46:03.57 ID:r8IxISV7a.net] 家だとVBAで作りたいネタが思い浮かばない、、 何を題材にして練習しているのか教えてくれると嬉しいな
540 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 14:52:53.05 ID:ITKU+yxr0.net] >>515 VBAを教えるのに必要なのは、講義の時間ではなく、「自分でも業務改善プログラムを作れた!」っていう成功体験だと思う。 処理速度云々は、相当後のほうでいいと思う。 ここで、資質があるやつと、そうでないやつがわかる。 資質のあるやつは、自分の作ったプログラムをさらに改善しようと、いじる。 このいじる作業をしているやつだけを見つけて、さらに教える。 改良作業をやってるやつは、理屈を理解し始めているから、いじれる。 そして、そのうちマニュアルやサイトでの調べ方と適用方法を理解して、自然と、命令数が増えてくる。 改良を試みてないやつは、たぶんプログラム自体、どっかから丸々コピペしてきて、それで運よく目的を達成できてるだけだから、動作原理わかってない。 ゆえに、次の問題を与えても、成長していないから組めない。
541 名前:デフォルトの名無しさん [2022/12/27(火) 15:30:01.29 ID:4LpiodjLH.net] >>532 このスレをずーっと過去に遡って、面白そうな奴を片っ端から解いていくだけでいいんじゃないか? 俺は毎日やってるから出来ないけど あと、vbaよりもスプレッドシートのGASのほうが色々出来て面白いよ
542 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 15:56:24.02 ID:lnirqxnTd.net] 雑談みたいな書き込みは自重すればいいのに・・・
543 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 18:13:52.44 ID:lugHnWiN0.net] いやならスレを開かなければ良い
544 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 23:00:25.77 ID:lvm99r8j0.net] いやなら5chやめればいいのに
545 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 01:04:02.08 ID:vaYWjZbJ0.net] いやならヅラを被れば良いのにな
546 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 20:47:21.58 ID:sL7xQ5iP0.net] いわなら砕けばいいのにな
547 名前:デフォルトの名無しさん [2022/12/28(水) 23:15:21.21 ID:5cqOgtBW0.net] いや奈良公園にせんべい持ってくと鹿に襲われるけどな
548 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 23:31:04.44 ID:iylgISulM.net] 人間用のせんべい持って行くなよ
549 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 06:52:02.69 ID:AIOxbE0/0.net] マジレスすると、2ちゃんねる時代からスレタイから脱線した内容になるのは普通だから。 それが気にくわないなら開かなきゃ良いだけ。
550 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 18:32:00.23 ID:tmwuu1S/p.net] 軌道修正レスも普通だから。 いやなら開かなければいいだけ。
551 名前:デフォルトの名無しさん [2022/12/30(金) 09:09:52.34 ID:WIIszMQ70.net] Excell2019 win10という環境で標準のVBEを使用しています。 ローカルインドウやウォッチウインドウにて多次元配列の中身を確認しながらデバッグを している時に、一個ずつ+マークを押して展開するのが不便に思っています。 一行ずつ動かしながら逐次中身の変化を追いかけたいので、ずっと展開しっぱなしにしたいです。 ボタン一発で配列全部展開してくれるとか、展開しっぱなしにするとか何か良い方法はないでしょうか?
552 名前:デフォルトの名無しさん [2022/12/30(金) 10:22:12.46 ID:xFabiT9dM.net] 無い。 配列の内容をワークシートに展開する関数を作って、 イミィディエトウインドウから 関数(配列) と実行。
553 名前:デフォルトの名無しさん [2022/12/30(金) 11:00:35.06 ID:zE3ePWnpH.net] 最初から個別の値をウォッチ式に入れておくとか a(0) a(1)
554 名前:544 [2022/12/30(金) 11:34:25.20 ID:WIIszMQ70.net] >>545 >>546 ありがとうございました。 個別でウォッチ追加します。
555 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 12:00:12.33 ID:MT1c2vte0.net] いえいえ
556 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 15:58:51.64 ID:IwLtnZMZ0.net] 複数のExcelファイルで作業をしていると、ふと見るとVBEの左側のツリーに立ち上げたファイル名がずらずら並んでいることがあります 普通はそのファイルを閉じればツリーから消えるのですが、たまに消えずに延々と溜まりまくるときがあります こうなるとメモリ消費しまくって最終的にはメモリ不足で動かなくなります こうなってしまうのはどんな理由が考えられるのでしょうか それとも、Excelは定期的に全部閉じる癖をつけておくべきなんでしょうか
557 名前:デフォルトの名無しさん [2022/12/30(金) 17:13:53.47 ID:zE3ePWnpH.net] >>549 Excelがファイル閉じるのを失敗している その場合、一度失敗するとそれ以降全部失敗する 再インストールか、メモリの増設した方がいいと思う あとLAN上にあるExcelファイルを開くとそれになりやすい
558 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 17:26:59.66 ID:esJPCknOd.net] >>549 マクロで開いてるならマクロがおかしいから private変数でブックを保持する様にしているならそれが解放されてないと起きるかと
559 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 17:56:14.08 ID:IwLtnZMZ0.net] >>550-551 ありがとうございます 他ファイル参照するために開いて閉じるようなマクロは結構多用してます 基本的には単純に開いてはデータ引っ張って保存せず閉じるというような内容ですが… 参照するファイルはLAN上ではありませんが、OneDriveの共有フォルダには置いてあります(ローカル保存) 一度この辺のマクロを見直してみたいと思います 原因がわからなければ再インストールしてみます
560 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 19:08:24.88 ID:k0Mu53Mo0.net] >>549-552 ウチもマクロで他の個別ブックを開いて その中のマクロを実行して上書き保存・当該ブックを閉じる をやってたけど、VBEの左側ツリーに閉じたはずのブックがズラズラ・・・ 開くブックが70個ちょっと、中のクエリーをテーブルとして変数に設定するところで いつもコケるようになった。 ブックの保存先はいずれもローカル。 操作するブックと操作される個別ブックの変数、プロシージャ名は 重複しないようにしていたがダメ。 次のブックを開くインターバルを1秒~とか、 クエリーはテーブルオブジェクト変数に入れているので、 毎回Nothingを入れてみたがダメ。 結局、地域毎に開くブックを50個くらいに収まるように 操作するブックを分けた。 ブックを割り当てる変数と、 それを保存・閉じる記述を見直してみようと思う。
561 名前:デフォルトの名無しさん [2022/12/30(金) 20:11:23.30 ID:zE3ePWnpH.net] >>552 onedriveか、あれもLANと同様になんか変な挙動になっている 僕はあまりの挙動不安定さにスプレッドシートに逃げたよ 閉じる動作・共有に関して、もっと突き詰めたほうがいいかもしれない カンだけど僕がやるなら以下のような形です。解決するかどうかは不定。 ・開いたExcelを、一回activebookにしてから閉じる ・適度に、OSに処理を返す。forを使っている+時間が掛かっている場合、適当にDoEvents()を挟んでみると改善する可能性があります ・onedriveの挙動が予測できないので、一旦ダウンロードフォルダなどにコピーしてから使ってみる。 どうも共有フォルダはタイムラグがあるのか、意図しない非同期になってしまい良くないことが起こっている気がする。 非常に問題を捉えづらい、難しい問題と思います。頑張ってください
562 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 20:26:56.53 ID:esJPCknOd.net] >>553 WorkbookやWorksheet含めてObjectは順序だててNothingするようにしたらそんなこと起きないとおもうよ set oWB = xxx set oWS = oWB.xxx なら set oWS = nothing set oWB = nothing という順ね 面倒でもNothingで解放するクセつけたほうがいいと思うぞ
563 名前:デフォルトの名無しさん [2022/12/31(土) 09:58:21.76 ID:doxP0Tnc0.net] マクロの管理・閲覧ってみなさんはどうしてるんでしょうか? 基本的にはブックの中に保存してるとは思うんですが ブック開かないと中身確認できないですよね? 何らかのファイルに中身を保存して、たとえばvscodeなどのエ
564 名前:fィタで開いたりするのでしょうか? [] [ここ壊れてます]
565 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 10:37:26.00 ID:YncayN1e0.net] 俺は普通にブックをSVNでバージョン管理してる 差分を見たい時は見たいバージョンを保存して最新版と保存したバージョンから各々エクスポートして差分を取ってる VsCode の拡張もあるみたいよ ⇒ >>462
566 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 11:33:27.48 ID:h8iAJsoLd.net] >>556 ブックのマクロを別ファイルに保存するということはコードの2元管理になるからしない 普通にブック開いてVBEでみるだけでそれで困ったことはない 別のブックのコードを参照したい場合は一時的にそのコードをコピペしてエディタで見ることはあるけど終わったら削除してる 何度も手直しするような事もないからバージョン管理もしてない
567 名前:デフォルトの名無しさん [2022/12/31(土) 12:12:05.76 ID:60VcS97wH.net] >>556 特にしてない 昔はよく使う「最終行の取得」や、「set〜」なんかをまとめたブックを作ってそれをコピペしていたけど、 コピペしないほうが早い事に気づいてからはそういうのもなくなった 高速化もよほどじゃない限りしなくなったな。
568 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 14:12:00.31 ID:QIMjPb7U0.net] vbaでファイルを開くダイアログを出させて、ユーザーに任意のシートを指定させ、 VBA側でそのシートオブジェクトを取得して、解析をするというものを作ろうとしています。 よろしくお願いします。 ttps://oshiete.goo.ne.jp/qa/3042408.html こちらに「シートを選択させてアクティブにする」というコードがあります。 ttps://www.kurumico.com/excel-vba-file/315/ こちらには「ファイルをダイアログから選択指定して開く」というコードがあります。 単純に組み合わせたら願望はかないました。 そこで質問したいのは MyDialog.Controls.Add(ID:=957).Execute これが一体何なのかということです。 エクセル2019の左下にあるシート一覧を左右に移動する ← → このマークのところで右クリックをすると同じようなシート選択ダイアログが出てきます。 そして選ぶと、アクティブになります。 957を一覧から探してもこういう説明を見つけられないでいます そういう理由からCommandsBarsもControls.addもイマイチ理解を深める事が出来ずにいます。 どこかいい説明サイトがありますでしょうか?
569 名前:デフォルトの名無しさん [2022/12/31(土) 15:46:44.58 ID:60VcS97wH.net] >>560 無かった 一応コードの意味から '新規コマンドバーを一時的に追加する Set foo = CommandBars.Add(Temporary:=True) '上記にコマンドID957を追加し、実行する。2はスペルチェック。多分1はダミーコードでなにも起こらないはず。 foo.Controls.Add(ID:=957).Execute で、この957って何って質問なんだろうけど、これはシート選択ダイアログのIDと思われる。 普通は定数名で設定し、マジックナンバーは使わない。 foo.Controls.Add(xlSheetList).Execute 'のような形になるはず 定数名とIDの対応表がどこかにあるはずなんだけど、全然見つからない。もしかすると無いのかもしれない。 使い方は公式を見るのが早い https://learn.microsoft.com/ja-jp/office/vba/api/office.commandbarcontrol https://learn.microsoft.com/en-us/office/vba/api/office.commandbarcontrol.id 一覧はこれだと思うけど、そこにも載ってない https://www.microsoft.com/en-us/download/details.aspx?id=50745 ただこのコマンドリストを一時的に利用するというテクニックは、これ以外に使い道は無いと思うから そんなに深く考えなくてもいいと思うよ
570 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 16:01:13.15 ID:jV5H7FOV0.net] 俺もID=957が何なのか探したけど見つからんな 昔のExcelでもちゃんとシート選択ダイアログは出てくるからVBAが付いてるOfficeならバージョンによって動かないみたいな事は起きないと思われるが これが気持ち悪い場合は適当な選択フォームを作った方が良いだろうね
571 名前:560 mailto:sage [2022/12/31(土) 18:56:24.99 ID:QIMjPb7U0.net] >>561 >>562 調べていただきましてありがとうございました。 これで質問を解決とさせていただきます。 深く考えない事にしますが、これを初めて見つけた人はどうやって見つけたのでしょう…
572 名前:デフォルトの名無しさん [2022/12/31(土) 19:13:19.72 ID:60VcS97wH.net] >>563 昔はそういう一覧が合ったんだと思う で、マイクロソフトが更新忘れて、忘却していると思う (別に作る義務はないんだけど) マイクロソフトに言えば、作ってくれるかもね
573 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 20:36:02.66 ID:2V6bSqaW0.net] >>563 debug.Print CommandBars.Add(Temporary:=True).Controls.Add(ID:=957).Caption 「シート一覧(&S)」 これで存在を確認できるね for-nextで総当たりして見つけたんだろうね リボン以前の時代に
574 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 22:52:34.11 ID:J15SQ39W0.net] マイクロソフトのサポートに聞けば有償で教えてくれるだろ
575 名前:デフォルトの名無しさん [2023/01/01(日) 02:02:13.06 ID:WHfKVncD0.net] 素人質問で申し訳ありません。 G行(列?)にワンクリックで時刻を出るように Private Sub CommandButton1_Click() End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("G2:G30000")) Is Nothing Then Exit Sub Target.Value = Date Cancel = True End Sub とvisualbasicで入力しました。 でワンクリックで「時間:分:秒」は出るようになりましたが、全部「0:00:00」 になってしまいます。今の「時間:分:秒」が出るにはどうしたらよいでしょうか。 ちなみにセルの書式設定で「時刻」⇒「13:30:30」の設定にしてあります。 よろしくお願いいたします。
576 名前:デフォルトの名無しさん mailto:sage [2023/01/01(日) 02:13:01.01 ID:U+Y4eA/v0.net] Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("G2:G30000")) Is Nothing Then Exit Sub Target.Value = Now Cancel = True End Sub
577 名前:567 [2023/01/01(日) 02:19:43.81 ID:WHfKVncD0.net] >>568 ID違うかもですが早急なご回答感謝です。 下から3行目のDateをNowに変更いたします。 ID:U+Y4eA/v0様とご家族の今年一年の 健康をお祈り申し上げます。