1 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 00:22:23.67 ID:Fd224klc0.net] !extend:checked:vvvvv:1000:512 ↑同じ内容を2行貼り付ける ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part68 https://mevius.5ch.net/test/read.cgi/tech/1598756127/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
596 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 20:35:33.37 ID:zFuXTVqB0.net] wsに何を入れてるか自分でわかってないのでは
597 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:23:33.63 ID:PnrMZIJR0.net] >>594 エラーになってる行以外は正しいからちょっとした勘違いじゃね? それよりFor Each ... In WorkSheets のループ中にシートの移動とかして大丈夫なんだっけ?
598 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:58:25.06 ID:dqyQLjrK0.net] Like ""じゃなくて.Value <> ""にしてElse消した方が分かりやすいとは思う まあその辺は好みか
599 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:02:43.36 ID:PnrMZIJR0.net] >>596 > Like ""じゃなくて.Value <> ""にしてElse消した方が And を Or にするのを忘れてるぞ…
600 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:11:37.90 ID:dqyQLjrK0.net] そんな揚げ足取らんでも
601 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:37:22.94 ID:+Mz9f4POH.net] 可読性無視 For Each ws In Worksheets with ws .Activate If .Cells(4, 1) & .Cells(6, 1) & .Cells(18, 1) & .Cells(20, 1) & .Cells(30, 1) <> "" then .Name = "済" & .Name .Move After:=Sheets(Sheets.Count) End If End with Next
602 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:44:11.84 ID:hflY2uffd.net] 最近はexcel vbaを淘汰しようとkintoneとかゆうのが台頭してきたな
603 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 00:16:34.90 ID:WNqxBDcE0.net] >>600 大体今までの経験則から言うと ノンプログラミングというのは ろくなことがない。 無理に纏めようとして 歪みが生じて 結局ぐちゃぐちゃになるのがオチ
604 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 00:29:46.89 ID:eSMVOSkL0.net] >>600 結局、スクリプトとかが必要になる
605 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 00:46:13.94 ID:zh7tau7O0.net] Select文で求めない条件を並べるのもおすすめ Select Case Empty Case ws.Cells(4, 1).Value .... Case ws.Cells(30, 1).Value Case Else Worksheets(ws).Name = "済" & Worksheets(ws).Name End Select Case節で分けなくてもカンマで条件を繋げても問題ない 短絡評価にもなる
606 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 11:57:03.39 ID:RXmZGByb0.net] sagasu= Dir(ThisWorkbook.Path & ”作業ファイル*20210209*”) Worksbooks.Open(以下略) みたいな感じで自動でファイルを探してきて開くマクロを作りたいのですが、20210209の部分が常に変わるので、 変数=hizuke(yymmdd、str)を定義したのでこれをDir関数にワイルドカードつきで組み込みたいのですができませんか? 初歩的かもしれませんが検索しても見つからなくて、、、
607 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 12:24:40.43 ID:3oJYLekcH.net] >>604 sagasu= Dir(ThisWorkbook.Path & "作業ファイル*" & 変数 & "*") あと、hizukeって関数は自作しなくてもFormatというのがある
608 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 16:16:16.99 ID:RXmZGByb0.net] >>605 やってみたらできた ありがとうございます!!
609 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 17:23:48.59 ID:/LZ4DWEX0.net] いつものあれか
610 名前:デフォルトの名無しさん [2021/02/10(水) 01:23:44.62 ID:nFlUbaHj0.net] 足し算のできないいつもの人か
611 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:21:46.44 ID:LZ9Af/PB0.net] 良かったよ プロだらけだったらヤバいスレになるw 趣味と後学のために少しずつやっていたら好きになってきた。 仕事で使う機会あまりないわ
612 名前:デフォルトの名無しさん [2021/02/12(金) 13:51:51.87 ID:IzjdsqjHM.net] しじいの言う「後学」という単語に哀愁を感じる
613 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 15:55:10.24 ID:/wh0XpHtM.net] Excelの新機能「Lambda関数」によって「Excelの数式がチューリング完全になった」とナデラCEO。プログラミング言語としてのExcel数式であらゆる計算が可能に https://www.publickey1.jp/blog/21/excellambdaexcelceoexcel.html
614 名前:デフォルトの名無しさん [2021/02/12(金) 16:16:26.53 ID:IzjdsqjHM.net] チューリングウイルスに期待
615 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 17:41:16.52 ID:o9EDytUaM.net] マクロを10個くらいリボンに登録したらVBEがアドインだらけになってワロタ どうやらxmlを作って一つのアドインとしてまとめて登録するのがセオリーみたいだな
616 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 20:11:52.96 ID:00Lfe/Nd0.net] >>611 ええええええええええええええええええええええええ ちょっと驚愕のニュースだ
617 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 20:13:11.50 ID:00Lfe/Nd0.net] つまりもうマクロを四苦八苦して作る必要はないんだな!?
618 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 20:18:24.17 ID:00Lfe/Nd0.net] Excelだ Excelの時代が来る
619 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 20:22:55.94 ID:eP0byIu+0.net] 重さが気になる 便利だけど重くて出来るだけ避けるような関数にならないか
620 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 20:59:52.79 ID:jxDcSv/l0.net] >>611 よくわからんけどVBA使わなくてもユーザー定義関数が書けるようになったのか? でもそれだけじゃチューリング完全じゃないよね? 誰が説明してくれ…
621 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 21:35:08.47 ID:4lNcO7mK0.net] よくわからんがVBA使わないでってことなら https://papasensei365.com/excel-game-dq3/
622 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 22:07:36.71 ID:aXSnuzkq0.net] LAMBDA の発表: Excel の数式をカスタム関数に変換する https://techcommunity.microsoft.com/t5/excel-blog/announcing-lambda-turn-excel-formulas-into-custom-functions/ba-p/1925546
623 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 22:29:40.24 ID:aRG7/C7T0.net] よく分からんけどlet使えてことだろ
624 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 22:35:41.83 ID:jxDcSv/l0.net] >>620 ああ、なるほど名前の一種として関数定義ができるのか 再起を使えばチューリング完全にもなりそうだし、これいいな ただ、また「(俺が見て)わけのわからん機能は使うな」とか老害に言われるんだろうなw
625 名前:デフォルトの名無しさん [2021/02/12(金) 23:02:00.32 ID:82D6PoJM0.net] vbaにLinq付けてくれたほうが喜ばれるぞ
626 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 23:07:09.02 ID:GpQsWoGq0.net] Lambdaがファーストクラスオブジェクトなら以下のようなscheme風の無限ループも書ける ((lambda (x) (x x)) (lambda (x) (x x))) VBAの時代は終わるかも
627 名前:デフォルトの名無しさん [2021/02/12(金) 23:12:05.58 ID:82D6PoJM0.net] まともなセル内数式エディタは付きますか?
628 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 23:18:29.37 ID:00Lfe/Nd0.net] 恐ろしいことにつくらしい 動画紹介でついてた
629 名前: mailto:sage [2021/02/13(土) 01:03:54.87 ID:HkWfV2pEH.net] >>611 その lambda とやらは、不動点コンビネータを記述できるのですか?
630 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 04:07:19.47 ID:yi//B+MQH.net] セキュリティでVBA禁止にしても、開いた瞬間に固まるブックが簡単に作れてしまうのかな 意図せず無限ループになったらデバッグが大変そう
631 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 06:10:57.87 ID:qLIOxiK10.net] へー EXCELでLinqやラムダ式が書けるようになるのか Linqやラムダ式は.Netでも便利だけど 開発者をふるいに掛けているものの一つだから 理解出来ない脱落者はEXCELやVBAの 開発ですら役立たずの烙印を押される そんなときが来るなんて夢にも思って無かったな
632 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 06:48:06.39 ID:qLIOxiK10.net] あ、なんだ VBAで使えたりLinqが使えるようになる訳では無いのか あいつら基本レイトバインディングだからトレースするとき慣れてないと分かり辛いんだよな 良かったなお前ら
633 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 07:44:30.44 ID:PYtZn7CJ0.net] >>628 > セキュリティでVBA禁止にしても、開いた瞬間に固まるブックが簡単に作れてしまうのかな 今でもあるけど計算回数の上限決めて打ち切るでしょ
634 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 07:56:56.81 ID:IALcuoUI0.net] >>627 https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/ LAMBDA is the true lambda that we know and love you can define a fixed-point combinator dekiru
635 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 11:41:30.80 ID:PelpVnvk0.net] >>611 どんだけ凄いの? だれか40歳にもわかるように説明して
636 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 12:21:31.92 ID:PYtZn7CJ0.net] >>633 例えば、A1, B1, C1セルの中身をカンマで繋いでD1に格納したい その際セルが空なら"[空だよーん]"ってしたいとするでしょ 今までは D1: =TEXTJOIN(", ", FALSE, IF(A1 = "", "[空だよーん]", A1), IF(B1 = "", "[空だよーん]", B1), IF(C1 = "", "[空だよーん]", C1)) って似たようなIF式を何度も書く必要があったけどLAMBDA使えたら f: =LAMBDA(x, IF(x = "", "[空だよーん]", x)) って定義しておけば D1: =TEXTJOIN(", ", FALSE, f(A1), f(B1), f(C1)) って書ける さらに課長に"[空だよーん]"とかふざけんな、"[空でございます]"にしろって言われてもLAMBDAの1箇所を直すだけで済む
637 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 12:41:35.80 ID:BN4b1mTrp.net] >>633 40のお前がバレンタインデーでチョコ貰えるくらい凄い
638 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 12:49:30.81 ID:PelpVnvk0.net] >>635 (>_<)\
639 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 14:07:20.92 ID:IALcuoUI0.net] ただの関数定義じゃないか それで十分だった気はするが
640 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 15:14:43.31 ID:wz9KaBQo0.net] VBAに影響ほとんどなさそう 一発でピボ集計とかシート挿入とかに関係ないし
641 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 15:33:24.19 ID:QpeYGISo0.net] と言うかラムダ式書けるなら、ついでにセル内でも数式の改行とインデントができるようにしてくれればよかったのにな Excel職人のIFだらけの数式を読むのがまずキツイんだは
642 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 15:40:56.55 ID:jHG+5C+w0.net] セルで分ければいいんだけど一つの数式にまとめられるのがすごいと思ってるからな まあ自分もそうだったけど
643 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 17:28:35.52 ID:VP7xI/GI0.net] 単に複数セル使うのが嫌なだけってのが多いように見える
644 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 18:42:07.48 ID:yi//B+MQH.net] まとめて印刷とか名前を付けて保存みたいな手作業を置き換えるVBAはなくならないかな
645 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 19:19:56.21 ID:PYtZn7CJ0.net] >>639 > セル内でも数式の改行とインデントができるようにしてくれればよかったのにな それ昔からできるぞ… https://www.becoolusers.com/excel/img/long-formula-line-break20.png
646 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 19:28:08.81 ID:jHG+5C+w0.net] 営業の要ミーティング恐い((((;゚Д゚)))))))
647 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:29:40.36 ID:T3s5Sft8d.net] >>639 普通にやってるけど。 読むのキツイんだろ。
648 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:48:38.47 ID:wz9KaBQo0.net] うかる!って、説明ヘタだね…
649 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:16:40.52 ID:OlVotr6u0.net] 職場にIf and orの職人がいるオレに謝れ
650 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:44:53.12 ID:29TtheM20.net] んー? 今までセル内の数式って受身の動きだったけど それ実装すれば自発的に動けるようになるってこと?
651 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:40:24.25 ID:X0FsHGir0.net] >>643 まじか、しらんかったわ 勝手にスペース削られたりするもんだと思ってたわ。。
652 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:53:19.53 ID:D24G58JB0.net] >>648 自発的には動かないよ 今まではVBAでしかユーザー定義関数は作れなかったけどVBA使わなくても作れるって言うだけ ただマクロを有効にする必要がないから実務としてはそれなりに意味はある
653 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:53:54.05 ID:D24G58JB0.net] >>649 まあ俺もつい1年ぐらい前に知ったんだけどw
654 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 05:33:27.25 ID:8cTA8eHd0.net] それよりかパイプライン演算子を実装して欲しい ラムダ関数はその足掛かりな気もするけど
655 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 08:25:32.74 ID:0LuW/JvdM.net] セルの書式を調べる関数はよ
656 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 09:01:53.08 ID:D24G58JB0.net] >>653 Cell("format", a1) じゃ駄目なの? https://dekiru.net/article/4431/
657 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 09:44:10.83 ID:9bE5PNm50.net] EXCELって意外と古いの使ってたりするから受け渡しがどうかな
658 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 09:46:12.37 ID:HYvJ8gAi0.net] >>652 一部がダメ文字の文字コード
659 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 10:33:56.69 ID:ccxL17vjM.net] >>654 ああごめん 表示形式以外の書式ね 色とかフォントとか罫線とか
660 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 10:46:19.10 ID:IPhvN32f0.net] もしかして >>653 は データの「表示形式」だけでなくて フォントや横位置/縦位置、塗りつぶし、罫線なんかの戻り値が欲しいのかしら?
661 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 10:47:17.03 ID:IPhvN32f0.net] ありゃ。本人からの返事の方が早かった
662 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:28:53.22 ID:D24G58JB0.net] >>657 4.0マクロ関数でどうぞ https://blog.goo.ne.jp/koyaman2/e/58506c9b0f18f1577aa694ab4af30edf
663 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 16:36:27.43 ID:W30Sj/2D0.net] VBAはSelectのCaseで、False,Empty,Nullあたりが同一判定されて、個々に行えないのがクソ
664 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 17:23:19.56 ID:D24G58JB0.net] >>661 VarTypeも知らない僕はアホです っていうカミングアウトか?
665 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 19:08:55.75 ID:hT3ZVIIc0.net] ねこ
666 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 11:39:26.92 ID:S0ZRmbKV0.net] DIR関数を利用して以下のりようなロジックを見たのですが、 foldercheck = (Dir(wrkpath, vbDirectory) <> "") ()の中のロジックはどのような技法なんでしょうか if Dir(wrkpath, vbDirectory) <> " then
667 名前:664 [2021/02/15(月) 13:15:47.99 ID:S0ZRmbKV0.net] https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/comparison-operators Dim MyResult, Var1, Var2 MyResult = (45 < 35) ' Returns False. MyResult = (45 = 45) ' Returns True. 自己解決しました。上記と同じなのですね。お騒がせしました。
668 名前:デフォルトの名無しさん [2021/02/15(月) 19:45:33.20 ID:olEKN+utr.net] フォルダへの書き込みのアクセス権をチェックするようなサンプルないですかね。 イメージとしてはフォームのフォルダ選択ボタンを押して選んだフォルダが書き込みできなければ選んだ時点でそういうメッセージを出したい。このあとアウトプットフォイルを書き込む際にエラーが出る前に
669 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 20:10:33.97 ID:xaJaofAeH.net] >>666 まじめにやるならGetFileSecurityとGetAclInformationを使う もっと簡単にやりたかったら、ダミーのファイルを1つ作ってみてOn Errorでエラーになったかどうか判定
670 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 20:15:42.96 ID:nKU68rXI0.net] FSOのGetFileでフォルダーを取得して Attlibutesプロパティ見ればいいんでないかな
671 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 20:16:42.83 ID:nKU68rXI0.net] >>668 訂正 GetFile → GetFolder だった
672 名前:デフォルトの名無しさん [2021/02/15(月) 20:30:32.32 ID:btvLdCUB0.net] >>668 いいわけないだろw そもそもフォルダのR属性は他の用途に使われている
673 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 22:00:51.83 ID:iJ9piVTy0.net] 普通にicacls呼べばいいじゃん
674 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 22:59:53.76 ID:R4sT9O4+0.net] >>662 いや、それだと0と1がIntegerとしか返ってこないし、 TrueとFalseもBooleanとしか返ってこないから判定できないだろ。バカかお前?
675 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 23:48:13.25 ID:yTkZToOt0.net] isnullはあったよなたしか
676 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 02:55:26.52 ID:nbeJO0KhM.net] CSV形式で保存する前に、Serial値の表示形式をyyyy/m/dにマクロから変更して 保存してからその後開くと、"1/1/2020"とか意味分からんStr型になっちゃうんだけど、 誰か分かるひといる? csvを取り込むソフトがどうしてもこの表示形式に変更しないと、うまく取り込めない謎仕様なんだ。 ちなみに、いったん保存してから開いてやってもダメだった。 (もちろん、手作業で開いて表示形式変更したらバグらないんだけど・・・) rngObj.NumberFormatLocal = "yyyy/m/d"
677 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 07:43:45.82 ID:+oOyZ54g0.net] >>672 型を判定してから値を判定すりゃいいだけだろ 応用力ないのか?
678 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 10:30:54.61 ID:OCcCJKsW0.net] 整数の1と小数の1.0だと値(バイナリ)が違うって知ったら狂いそうだな
679 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 11:04:29.70 ID:+oOyZ54g0.net] >>674 いま手元にExcelないから確認できないけど rngObj.NumberFormat = "yyyy/m/d" か book.SaveAs …, Local:=True に、してみたらどうかな
680 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 11:41:24.25 ID:XpWP4Lg+0.net] 2021/2/15 6:43 みたいに、時間が入ったセルの、 日付の部分 だけ変えたいんですがやり方がわからないです セルの日付(2021/2/15)を変数で定義して、新たな日付(2021/2/16)の変数も定義して replace(セルの位置,セルの日付,新たな日付) で入れ替えようとすると型が合わないって出てしまうのですが どうすればいいでしょうか?
681 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 11:56:30.35 ID:S5ddSisTa.net] >>678 もしかして変数で定義してる型がDateだったり?
682 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 11:58:31.61 ID:XpWP4Lg+0.net] >>679 dateとstring両方試しました
683 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 12:13:25.96 ID:9n1pp/97M.net] CStr(Format(a,″yyyy/m/d“))
684 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 12:24:02.20 ID:XpWP4Lg+0.net] すいません自己解決しました 変数の定義がおなしかったみたいです
685 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 13:04:12.03 ID:nbeJO0KhM.net] >>677 いけましたサンクス!!!
686 名前:666 [2021/02/16(火) 19:15:33.72 ID:+pX1epGPr.net] 遅くなりましたが、結局Dummyファイルの書き込みにしました。アドバイス頂いた方ありがとうございました。
687 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 21:00:08.21 ID:PQjj23xSa.net] スミマセン、セルの特殊な機能だと思うのですが、 セルにポインタを合わせると、セルの外側右下に小さな▼が出現、 ▼を押すとセルの下に小さなウィンドウが展開し、羅列された文字や数字を選択できる。 上記機能の名称とは何なのか、 どこでイジれるのか、作成できるのか等わからず困ってしまいました。 機能が生きているセルもありましたため、 新規で作成せずともその機能をコピーしようともしましたが方法わからず。 お詳しい方いらっしゃいましたら お力添え願いたいです。 失礼します。
688 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 21:24:43.99 ID:kmFmEkS70.net] VBAとは関係なく 「セルの入力規則」から「リスト」を選択してあとは適宜 詳細は上記キーワードで検索して
689 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 22:46:03.00 ID:g3oiZXVYr.net] 教えていただけると助かります。 VBAでIEからExcelに文章を写したいです。 アクティブなIEからカーソルで範囲指定して、その内容を写すことは可能なのでしょうか? 例えば、ヤフーで気になる記事の内容だけをコピペといった感じです。 気になるものだけなので、検索を入れ込む必要はないです。 IEとYahoo起動まではできるのですが、その先が分かりません。 よろしくお願いいたします。
690 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 23:02:29.70 ID:LtHH0x/40.net] それ手動でコピペしたほうが早いんじゃね
691 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 23:41:10.89 ID:5LT5VcGn0.net] 気になる記事の条件は? それを自分で判断するなら>>688 が正解だと思うが
692 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 09:01:14.53 ID:tQXaEzsv0.net] >>687 ちったぁググれ https://konowaza.com/excel/copy_paste_macro.html
693 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 10:16:38.01 ID:vOoN+LpT0.net] >>690 優しすぎる
694 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:53:19.33 ID:3Z4/s25m0.net] >>686 ありがとうございますm(_ _)m トライします。
695 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:57:54.00 ID:quEf8nPTr.net] いえいえ
696 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:59:55.94 ID:Mp3MtPnAH.net] クリップボードを監視して、新しいデータがコピーされるたびに保存してくれるアプリとか使えばいいんじゃない? いちいちウィンドウを切り替えたりペーストしなくていいやつあるだろ
697 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 15:46:44.57 ID:i293dZUhd.net] >>686 機能が生きているセルを上記指南で解析し、 貼り付けで解決しました! 助かりました。 ありがとうございました!
698 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:01:12.58 ID:YnE2/fOB0.net] 最終列までコピーをしたいんですがエラーを繰り返しなかなか実現できません… 例えばA3セルがデータの始まりでA7セルが最終列の場合、以下の文になるかと思いますRange(“A3:A7”).copy ただ、半年に一度最終列が一列追加になるので、メンテナンスしなくていいように上の文のA7の部分が最終列になるようにしたいです この場合何かいい方法はあるでしょうか
699 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:41:15.13 ID:FtApzB1S0.net] 行じゃなくて列?
700 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:42:03.66 ID:tZ0yQ1Z/0.net] オーソドックスなのはこれだけど、物凄い珍回答を聞いてみたいわ Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
701 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:45:44.66 ID:LXOFF6tt0.net] >>696 last_row = Sheet1.UsedRange.Row + Sheet1.UsedRange.Rows.Count - 1 last_col = Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1 Debug.Print "A3:" & Sheet1.Cells(last_row, last_col).Address(RowAbsolute:=False, ColumnAbsolute:=False) こんなん?
702 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:46:54.85 ID:bJ7UNxEFr.net] >>690 ありがとうございます❗ 探してたものに出会えました。 ググってはみたんですが、このサイトには巡り会えなかったので、本当に助かります。 やってみたら、思う結果になりました。 ありがとうございました。
703 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:47:30.28 ID:YnE2/fOB0.net] 行じゃなく列です 最終列が半年に一回追加になるのです…
704 名前:デフォルトの名無しさん mailto:696 [2021/02/17(水) 22:50:45.05 ID:YnE2/fOB0.net] >>697 ごめんなさい、最終列の話だったのでA3セルからD3セルをコピーする場合、以下になるんでした Range(“A3:D3).copy 今はD3が最終列ですが、半年後にはD3が最終列になるイメージです
705 名前:696 mailto:sage [2021/02/17(水) 22:51:42.12 ID:YnE2/fOB0.net] 何度も間違えてすみません… 今はD3が最終列ですが半年後にはE3が最終列になるの間違いでした
706 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:55:52.03 ID:X7VrF3DN0.net] 最終列取得の仕方調べないの?
707 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:06:07.99 ID:FtApzB1S0.net] Range("A3").CurrentRegion.Copy
708 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:08:53.17 ID:ooyd3US+0.net] ColLst = Sheet1.Сells(3,Columns.Count).End(xIToLeft).Column Range(Sheet1.Cells(3,1),Sheet1.Сells(3,ColLst)) みたいにケツのColumnIndexを可変化させりゃええ 指定範囲より右側にコメントが入るのであれば別の方法を考える必要があるけど
709 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:09:11.52 ID:LXOFF6tt0.net] CurrentRegionは使えそうで使わない
710 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:16:43.14 ID:FtApzB1S0.net] UsedRangeだって使うの怖ない? どっかにドットあるだけども持ってかれる
711 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:18:02.78 ID:tZ0yQ1Z/0.net] これってやり方は何通りかあるけど、 どの状況でも使える完璧なのが無いよな 一見よさげなUsedRange.Find法とかも、 検索と置換の状態が変わっちゃうし
712 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:21:06.27 ID:LXOFF6tt0.net] ちゃんとやりたい場合列のヘッダの名前の有無を確認とか意味解析するしかないよ
713 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 00:18:06.29 ID:ZQty99yr0.net] vbaしかつかえないうんちなんだけど、ダイアログに変数名入れたら、その名前を反映させた定型コード作ってくれるような支援ソフトないの? たとえば、Dim var: var= xとかFor i=LBound(arr) to UBound(arr)とか。いちいちめんどい。 cliborはつかってる。スレチだったらすまそ。
714 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 02:16:18.22 ID:QcGF+jUk0.net] それこそ自分で作れよ 自分だけにに都合よく自動化したいならそれしかないだろ
715 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 08:21:36.53 ID:sd++046d0.net] >>711 そういうの別言語だと見たことあるけど VBAでは諦めた方がいいんじゃないかなぁ https://mobile.twitter.com/johnsundell/status/1221758718188060673 こういう奴でしょ? (deleted an unsolicited ad)
716 名前:696 mailto:sage [2021/02/18(木) 08:30:28.40 ID:0xKDo7Uv0.net] 最終列の取得をしてコピーしたいと申した者です 具体的には2シート目以降のC8セルから最終列までコピペしたくこのような文を書いてました Maxcol = Worksheets(1).Range(“C8”).End(XlToRight).Column For i = 2 To Worksheets.Count Worksheets(i) = Range(Cells(8,3), Cells(8, Maxcol)).Copy Worksheet(1).Cells(Maxrow,1).PasteSpecial Paste:=xlPasteValues Maxrow = Maxrow + 1 Next i 上には書いていませんがMaxRowで最終行していて、1シート目の最終行にペーストするイメージです このとき以下の箇所でエラーになりました Worksheets(i) = Range(Cells(8,3), Cells(8, Maxcol)).Copy
717 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 08:31:50.99 ID:cssKdxraM.net] >>713 やっぱVbaだと厳しいか、、、別言語だとこんなのあるんだな!ありがとう。
718 名前:696 mailto:sage [2021/02/18(木) 08:45:37.53 ID:0xKDo7Uv0.net] 解決しました… Rangeの中にCellsを入れる際はCellsの方にもワークシート名を記載してあげなければいけなかったんですね… お騒がせしました
719 名前:デフォルトの名無しさん [2021/02/18(木) 10:27:10.11 ID:4sNPnSsIM.net] 4点指定でrange作れればいいのにね
720 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 13:38:16.10 ID:EVRbmhyV0.net] >>717 まあ、 Sheet.Cells(開始行, 開始列).Resize(行数, 列数) もしくは Sheet.Cells(開始行, 開始列).Resize(終了行 - 開始行 + 1, 終了列 - 開始列 + 1) ってやるだけだし
721 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 17:41:06.06 ID:Khd0zmwWM.net] >>714 これで動くのか それならまあいいけども
722 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 20:47:31.34 ID:Sdz2Rpjn0.net] コンパイルしたときに「ユーザー定義型は使用できません」といったようなエラーが出るのですが、 エラー箇所が選択されず特定できません。 ググってみたのですが「関数を一個ずつ切り貼りしながらコンパイル」的な記事しかなく、 結構大きなプロジェクトファイルになってしまっていて現実的ではありません。 原因って何が考えられますでしょうか。
723 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 21:08:20.83 ID:QcGF+jUk0.net] 情報が少なすぎるだろ で、ユーザー定義型を使ったの?
724 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 21:48:45.33 ID:sd++046d0.net] >>720 VBAでは珍しいかも知れないけど VBSではよくある話 実行前コンパイルの概念がないからね 別に1関数単位で抜かなくても 纏めてごっそり抜いてみて エラーが発生しなくなったら 残った部分には原因がなくて 抜いた部分に原因があるんで まずそうやって切り分ける 抜いた部分から半分くらい戻してやって またエラーが起きないか確認するのを 繰り返して行く内に 原因の可能性がある範囲はどんどん狭まるんで そうやって確認して行く
725 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 21:52:25.45 ID:sd++046d0.net] 原因として考えられるのは ない型を指定した場合なので 型宣言の書き間違えとかかな
726 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 21:59:48.04 ID:Sdz2Rpjn0.net] >>721 使ってます。 また、クラスモジュールやライブラリも沢山使ってます。 以前なら間違っている名前の箇所が選択されるので、直ぐに原因が特定できたのですが・・・ >>722 今、出来る範囲でモジュールを解放・インポートを繰り返して検証して見たのですが、 フォームモジュールのいくつかが原因の様で、これらを抜くとコンパイル(実行前コンパイル)が成功します。 ただ、その原因と思われるモジュール内の全てのコードを削除しても同じエラー発生します。 意味が分かりません・・・
727 名前:デフォルトの名無しさん [2021/02/18(木) 22:36:52.79 ID:Xk2lzcuAM.net] フォーム内のエラーはフォーム呼び出しコードが選択されるから、F8の手押し連打で進めて行けばエラー箇所で止まるんじゃね
728 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:05:06.07 ID:jY4O/2kG0.net] いつもの人っぽいけど、クラスモジュールでエラー止める設定すれば分かるかもしれん
729 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:14:40.89 ID:Oj+90OvE0.net] >>726 シートに書くとエラーの場所がわからないから標準モジュールに書け、 なんて書いてるサイトがあって、その解決策しばらく気づかなかったわ
730 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:38:17.80 ID:chyUcvsN0.net] ズボラせず1個ずつちゃんと調べなよ
731 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 00:07:23.60 ID:3RXIcFsGH.net] DimとかConstとかでタイプミス SubやFunctionの宣言部でもよくある Visual StudioでVB.netプロジェクトを作ってコピペで発見できる場合もある
732 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 03:59:43.95 ID:fFtIagGX0.net] >>725 ,726 実行時例外じゃないです。 >>728 >>724 の通り、発生元と思われるモジュール内コードを全て削除しても発生し、 モジュール自体を解放すると発生しなくなるため悩んでいます。 私も一個づつ調べたいのですが、もはや調べ方も分からない状況です・・・。 >>729 宣言文のタイプミスでも、通常はエラーが発生すれば原因箇所が選択(反転)されると思いますが、 今回はそのエラー箇所の選択がなく困っています。 vscodeですがVB.netプロジェクトへのコピペもやってみましたが、 関係のないエラーや注意が大量発生して特定困難でした。 というか互換性ないと聞いたのですが・・・
733 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 04:14:33.39 ID:fFtIagGX0.net] お礼言うの忘れてました。 沢山回答ありがとうございます。 些細な事柄でも気になる点があればレス欲しいです。 一応質問内容をまとめます ・エラーが発生しているのはコンパイル時です ・通常あるエラー発生箇所の選択がされません(この「発生個所が選択されないという現象」自体の原因も調べています) ・原因と思われるクラスモジュールを解放すると発生しなくなります ・しかし、そのモジュール内のコードを消すだけでは引き続き発生します
734 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 05:06:58.61 ID:UOwA+kJV0.net] なるほど つまりVBAのコード側の問題ではないと 詳しい状況が分からんから何とも言えんけど 考えられる状況としては ・ファイルがぶっ壊れてる ・フォーム側に使ってるバージョンにそぐわないオブジェクトが設定されている ・使ってるバージョンにそぐわないAPIとかが使用されている ・何か変な参照設定切ってそれを使ってる とかじゃない? クラスとかライブラリ(何をもってライブラリと言ってるのかは分からんけど)使ってて 結構大きなプロジェクトファイル使ってると言うなら 元々動いてたものだったと思うんだけど 今改修を掛けているものが同じ環境下(EXCELのバージョンとか使ってるならランタイムとかが同じ) で動くか確認した方がいいんじゃないかと思うよ
735 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 05:44:12.15 ID:6sfyeCMi0.net] >>731 クラスモジュールを開放したあと、同名のクラスモジュールを空で新規追加したらどうなるの? そのクラスモジュールの名前は何?
736 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 14:25:58.33 ID:fFbWPHDZ0.net] ユーザ定義型は定義されていません
737 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:58:08.64 ID:p5a0AjpTa.net] >>724 インポートとかすると改行や全角空白、タブ、eofとかがおかしいのが入ることあるよ
738 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 23:14:07.14 ID:FBAC49/30.net] ぶっちゃけ原因不明でコードを新規ブックにそのままコピペしたら動いたってのは何度かあった 理由がわからんだけだったのかもしれないけど
739 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:17:20.20 ID:/mom05J70.net] 怪しい辺りを切り取り貼り付けで直るパターンもあった
740 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 02:39:20.18 ID:exEQDxd80.net] エクスポートして新規ブックでインポートしてどうなるか試せ そのクラスモジュールとやらをどっかに張ればなんかわかるかもしれん
741 名前:デフォルトの名無しさん [2021/02/20(土) 10:48:29.96 ID:+4W1iOYZ0.net] 帳票でひな形ファイルにDBからのデータを張り付ける際に ひな形ファイルに前もって用意している一覧より件数が多くなり 一覧部を増やす際って存在している行を必要分コピペしたら処理が重く遅くなりますか? 範囲指定して行の高さや罫線その他書式を作成していくのが普通ですかね
742 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 11:52:03.51 ID:FtzhhzvS0.net] 1件ずつコピペしてたら遅くなる可能性があるけど 必要な行数を計算してコピペ1回なら問題にはならんのじゃないかな
743 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 13:27:35.51 ID:GLzvS33R0.net] すげえ基本的な話だけど 2003と2019じゃソースを書き換えないと使えないのはわかるけど 2015と2019は使えるの?
744 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 18:00:11.01 ID:M8GDG/5fa.net] 自分で試せばいいのに
745 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:13:12.43 ID:OBWJcVSW0.net] 書き換えないといけないところが分かるなんてすごい実力者だね
746 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 00:07:25.30 ID:J4wkOwtc0.net] 複数バージョン持ってないと試せんだろう
747 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 00:25:53.91 ID:yZKJ3RszM.net] どっちでも動くように作るのさ
748 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 02:57:17.71 ID:PfdFyViG0.net] 持ってないバージョンで動かないかもとか考えなくてもよくね
749 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:11:53.20 ID:NVBTtkD2H.net] 逆に、2019だけで動くようにしろと言われてもできる気がしない わざと追加されたワークシート関数を使うみたいな、手段と目的を逆転させるのは無しで そんなに言語仕様って変わってたっけ?
750 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:19:27.77 ID:BLnKvBaX0.net] VBAの言語仕様なんて、64ビット対応しか変わってないだろ EXCELのアプリケーションモデルは多少の変化はあったかもしれんが
751 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 09:10:45.20 ID:Mdn5KR7p0.net] 基本使えるだろうけど 365のは分からん
752 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 09:54:57.69 ID:E7dwtz5J0.net] 2019未満は切り捨てるためにわざと2019仕様に変更とか わからん
753 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 18:05:27.14 ID:bOGV4XR6a.net] 古いのいつまでも使われると新しいの売れないからかな
754 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 11:45:30.79 ID:FCcJxvZt0.net] >>747-748 動かなくなる原因は言語仕様だけじゃないよ 2007 辺りでグラフ周りがかなり変更されてソースに手を入れる羽目になったとかある
755 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 13:18:52.42 ID:kOquHQc20.net] そうっすか
756 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:32:51.40 ID:/Yenw0XZd.net] >>752 正にそれ結構大変だった。
757 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 00:40:47.03 ID:HDXsWzJB0.net] VB長けてる人ってExcelの機能関数に疎い人多いね 田中に聞けば?
758 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 01:26:36.59 ID:QrJrBlgW0.net] Worksheetfunction使うのでそれはない。
759 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 02:17:27.39 ID:CQQJwOCp0.net] 2019欲しいけど いまクソ高いんだよな 昔は10000ぐらいで買えたよな?
760 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 02:42:57.68 ID:+tup+0KC0.net] 今でも1000円で…
761 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 02:59:15.91 ID:CQQJwOCp0.net] 割れは怖くて使えんわ
762 名前:デフォルトの名無しさん [2021/02/24(水) 14:09:58.51 ID:HLiwO+Yd0.net] 64bitで未定プログレスバー使うにはどうすればいいの?
763 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 19:44:17.34 ID:CpCHMr0L0.net] オレの2019はアマゾンで900円くらいだ
764 名前:デフォルトの名無しさん [2021/02/25(木) 21:11:18.01 ID:u/u+FiSza.net] 原本となるシートでマクロが動いて欲しくないからマクロを搭載した別ブックのシートにコピーしようとしてるのだけど、activeXコントロールのコピーで詰んでいる。 selectAllすると位置がずれる、ネットで見かけるfor each x in sheets.Shapes方式だと「rangeクラスのTopプロパティを設定できません」とか出る(原因分からないうえ、同じものが複数コピーされてたりする) Clickメソッド使ってるからシート自体に記述しなくちゃならない状態(原本にマクロを搭載できない理由でもある) 原本をコピーした新しいシートにマクロを転写する方法か、activeXコントロールをうまくコピーする方法などをどなたか分かれば教えてください。 よろしくお願いします
765 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 21:28:47.82 ID:mAZPOqOP0.net] 俺はファイルコピーで解決しようとするから知らんわ
766 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 22:14:57.96 ID:zfgrXATG0.net] シートコピーしたら
767 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 23:11:51.37 ID:h5Yd8P0i0.net] デザインモードじゃないから梃子でも動かないって意味か?
768 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 03:13:02.34 ID:RTjFElvVH.net] >>762 ブックを別名で保存してからそっちを開いたら? コントロールの状態や中身まで含めた完全なコピーが簡単にできるよ
769 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 14:42:35.05 ID:uwtwTRSf0.net] >>760 わいはコントロールやめてユーザーフォームで自作した
770 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 18:00:57.54 ID:3R2zb4XV0.net] >>762 原本はそのままで動くように作っといて、原本をコピーするマクロは原本とは別ファイルにするのが良いんじゃね
771 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 04:24:42.64 ID:RGn50kCua.net] >>764 新しくシートをコピーしたらシートにプログラムが何も書かれてない状態になります(原本に記述されていないから) シートにシートをコピーしたらコントロールが消えてしまいます(コントロールのコピーに躓いている) >>766 >>768 フールプルーフの観点で原本にプログラムを直接書きづらいんですよね。このツールを使うのも原本を更新するのも私じゃないので… >>767 フォームなら別のブックにコピーできるし使いたいんですが要件的に使えないんですよね 最初はフォームで動作するものを作ったんですが、いちいちウィンドウが開くのめんどくさいと一蹴されました あくまでシートにマクロをコピーする方法か、activeXコントロールの綺麗なコピーの方法を探しています。
772 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 04:28:43.21 ID:qDfn4Zqt0.net] >>769 みつかるといいね
773 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 08:38:37.65 ID:+dnfLZll0.net] >>769 出来るけど、セキュリティ的に大問題アリ。 マクロウイルスのやりたいことと一緒だからな。
774 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 10:42:13.72 ID:MpvSTRAea.net] ウイルスの作り方探してるのかな
775 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 16:48:22.46 ID:9QiTc1mX0.net] 質問です。 VBAでウィンドウの幅によってレイアウトが変化するページを取り込む方法で詰まっています。 例えば、下記のURLのテーブル「5」をExcelに取り込みたいとします。 しかし、このページはウィンドウの幅を狭くすると「自動レイアウト」になります。 https://www.nankankeiba.com/uma_info/2014104006.do https://i.imgur.com/EE2hZfE.png 本当はPC固定レイアウトで取り込みたいのですが、下のVBAだと自動レイアウトの方で取り込まれてしまうのですが どうしたらよろしいでしょうか。 VBA https://i.imgur.com/tQsJ8fB.png PC固定のレイアウトで取り込みたいけど、取り込むとこうなる https://i.imgur.com/106irI4.png
776 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 16:50:21.04 ID:9QiTc1mX0.net] >>773 列や行の関係でPC固定で取り込めるようにしたいのですが、クエリで何か設定などあるのでしょうか
777 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 19:51:14.14 ID:qDfn4Zqt0.net] >>774 よくわからんが内容は正しく取得できているんだから、表示用のシート作って そっちに2行を1行にまとめて表示させるマクロ書けばいいんじゃね
778 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 20:13:53.31 ID:9QiTc1mX0.net] >>775 実は最近サイトがスマホ用に「自動レイアウト」に対応してリニューアルしたので もともと作ってあった表示用シートが連れてしまうために「PC固定レイアウト」にしたいのです…
779 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 20:25:57.30 ID:Ydjbk0QN0.net] URLの後ろに何か引数入れればいいんだろうけど、javascript読めんからわからん。 Web系のスレで聞くか、ここでやるんだったらDOM解析してgetElementsByTagNameとかで取得するしかない。
780 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 20:28:08.24 ID:9QiTc1mX0.net] >>777 やっぱりweb系のプログラミング知識がないと無理っぽいですかね 自分はさっぱりなので、そっち系でも聞いてみます。
781 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 20:46:04.22 ID:Ydjbk0QN0.net] ってそれExcel2013? 2019だとどちらも見えていて、 Table4が自動でTable5が固定になっている。 もし2019が使えるなら、QueryTables.Addじゃなくて、 Queries.Addでやってみるといい。
782 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 21:38:16.92 ID:9QiTc1mX0.net] >>779 わあああ!できました!!! 自分のだと、テーブル5だと自動で、テーブル6が固定でした!! 固定と自動でテーブルずらすだけで良かったんですね。 本当に助かりました;;感謝!
783 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 21:44:40.46 ID:9QiTc1mX0.net] なるほどー URLの違いじゃなくてテーブル数が増えていてテーブルの変更でレイアウトを別々で読み取っていたんですね 今後も参考になる知識でめっちゃタメになりました! いやーID:Ydjbk0QN0さんの着眼点のおかげで助かりました。感動です
784 名前:デフォルトの名無しさん mailto:sage [2021/02/27(土) 23:59:01.77 ID:W4zZ+WShM.net] いいってことよ(≧∇≦)b
785 名前:デフォルトの名無しさん mailto:sage [2021/02/28(日) 00:38:35.67 ID:1YMxSz2W0.net] XMLを取得したあと、要素を取得するためにgetElementByIdを使用する方法は無いでしょうか? XMLでは仕様上IDの規定が無いのでこのメソッドは無いようですが、 対象にしているデータはIDが重複していない(タグ名は重複)ことが分かっています
786 名前:デフォルトの名無しさん mailto:sage [2021/02/28(日) 08:33:47.20 ID:0O+t6o860.net] やったことないけどXMLをブラウザーで開いて取得とか
787 名前:デフォルトの名無しさん mailto:sage [2021/02/28(日) 13:49:51.41 ID:0oELj/fSM.net] >>783 単なる属性値だからxpathで属性検索すればいいんじゃね?
788 名前:デフォルトの名無しさん mailto:sage [2021/02/28(日) 17:16:05.41 ID:1YMxSz2W0.net] >>785 ごめんなさいこれで出来ました コーディングミスしてただけだったようで…
789 名前:デフォルトの名無しさん mailto:sage [2021/02/28(日) 23:20:44.51 ID:Kw7HIYRo0.net] テーブルを使った列転記について質問です。 オートフィルターを使って、 特定条件に合致する列のみを別シートに転記するvbaを作成しています。 検索条件が1件でもヒットすれば、うまく動くのですが、 検索条件の結果が0件の場合、なぜかテーブル内にある全ての列がコピーされてしまいます。 解決方法をご教示いただけたら幸いです。 With Range("A3").ListObject .Range.AutoFilter 1, "佐藤" .Range.AutoFilter 2,"2020" .Range.AutoFilter 3, "土地" .ListColumns(4).DataBodyRange.Copy Sheets(2).Range("B12") .ListColumns(5).DataBodyRange.Copy Sheets(2).Range("D12") .ListColumns(6).DataBodyRange.Copy Sheets(2).Range("C12") End With
790 名前:デフォルトの名無しさん mailto:sage [2021/02/28(日) 23:38:01.73 ID:aFXd9lq10.net] 0の時コピペしない
791 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 03:56:15.13 ID:eH/icf8Z0.net] Countifsで、1件以上の時 と 条件分岐させるのが読み返してわかりやすくなるんでね
792 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 16:05:10.88 ID:SmQDGBhxa.net] 前回の表示が残っているならメッセージボックスとか出すといいかも
793 名前:デフォルトの名無しさん [2021/03/02(火) 13:09:41.26 ID:hWjLfumtC.net] (1)A1〜A100セルにそれぞれ0001.txt〜0100.txtという文字列が格納されている (2)ファイルサーバ上(\\share\txt)に(1)の名前と対応する実際のテキストファイルが格納されている →この場合、B1〜B100セルの中に(1)と対応する(2)のテキストファイルの中身を自動で入力させたいのですが、どのようにすれば可能でしょうか。。
794 名前:デフォルトの名無しさん [2021/03/02(火) 13:28:23.53 ID:xn7W4wyt0.net] 丸投げか? まずは自分で作ってみろよ
795 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 13:38:46.86 ID:Myd7KGhQ0.net] 先生が添削してくれるみたいです
796 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 15:10:40.09 ID:S4zyTxBwM.net] A1セルに書かれたファイル名を読み取る そのファイル名を開く B1セルから書き込む を繰り返せばいいと思います
797 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 17:47:07.08 ID:stzBjdlCH.net] いつもの人
798 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 19:42:52.19 ID:h1fr2K930.net] >>791 どうでもいいがB1〜B7へは入力じゃなくて出力って言った方がいい
799 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 23:19:45.83 ID:yDNF8xvg0.net] >>791 マクロの自動記録
800 名前:720 mailto:sage [2021/03/03(水) 02:30:35.83 ID:hWQCqBl50.net] >>720 ですが、解決というか悪化したので一から作り直すことにしました。 原因と思われていたフォームモジュールを解放しても常時コンパイルエラーが発生するようになりました。 思い切って順に全て解放しながらコンパイルしてみたところシートを含めた全てのモジュールを 削除して新規シート一枚の状態でも発生する始末です。 >>733 試してみたところ、使用できない文字を使った時と同じ「不正なオブジェクト名」だと怒られます。 (もし重複なら「既に〜使われています」) コンパイルエラーの原因にある「ユーザー定義型」というのはフォームのモジュール名の事だったのかも・・・ ちなみに原因らしいフォームのモジュール名を変えても同様のコンパイルエラーは発生し、 その新しいモジュール名でも同じ症状が出るようになります。 >>732 >>何をもってライブラリと言ってるのかは分からん すみません。参照設定にあるCOMコンポーネントの事です。 APIはSleepしか読み込んでおらず、 コントロールもリストボックスとコマンドボタンとオプションボタンのみです。 元の環境で実行も出来ませんでしたが、 テストで色んなモジュールの解放してインポート、モジュール名変更して戻すを繰り返していると、 プロジェクトのコンパイルは同じエラーがでるが、(環境問わず)実行は可能という状態になりました。 コンパイルのテストしかしていなかったのでどのタイミングで実行可能になったのかは分かりませんが、 引き続き調べてみます。
801 名前:720 mailto:sage [2021/03/03(水) 02:46:34.41 ID:hWQCqBl50.net] >>733 レスに追加です 名前の変更では「不正なオブジェクト名」と出ますが、その名前でのインポートは成功します。 インポート出来れば自由にフォーム名を変更したり戻したりできました。 >>735 見てみましたが、特に変わりはないようです。 >>738 フォームモジュール以外を全部移したところコンパイルが通りました。 同じフォームを作って再発すると怖いので、 フォームに有ったコントロールはシート上に再現して、とりあえずこれで運用してみることにしました。
802 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 21:19:07.61 ID:CdcHt2GZ0.net] シートの中身を初期化しようと、範囲選択してClearcontentしたら処理が滅茶苦茶重くて 他のどの処理よりも一番重いまであります セルの中身をクリアして真っ新にしたいんですが、軽くなる方法とか削除するのに他のいい方法は何かありますか?
803 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 22:01:26.45 ID:x1QDDRPj0.net] 画面更新切ってないとか
804 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 22:53:36.00 ID:cY/9Er0+0.net] 場合によってはシートごと削除&同じ名前のシート作成orテンプレで用意していたシートをコピー
805 名前:デフォルトの名無しさん [2021/03/03(水) 23:58:49.06 ID:zTCiutcbd.net] >>800 Clearcontentsじゃなくて単に「削除」に時間が掛かってるだけ説。 どうしようもないExcelのバグ、俺もこの前株シミュレーター作ってて直面した。 たかだが3万行×1列消すのに10分掛かる糞仕様。 どういうわけかD列とE列に入っているがD列を消してからだとE列が、E列を消してからだとD列がそうなる。 2007と2013入れてたがどちらでも同じ結果。スプレッドシートでならサクっと消せた。
806 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 00:37:39.40 ID:0V1y42950.net] 質問させてください 業務用PCのためDsoFramerのインストールを容易には出来ない環境で、ユーザーフォームにワークシートを表示するシステムを作成するのは厳しいでしょうか
807 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 02:10:45.74 ID:EcELbNCH0.net] レスありがとうございます 画面更新は勿論切ってます ただ初期化したいだけなのにアホみたいに時間が掛かるので、同じ使用のシートを作る処理にする事も検討します
808 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 06:47:21.46 ID:yRtnuXOv0.net] 変数に入れてから消すとか、同じ選択範囲の配列(空白)ぶっこんでみてもだめかな
809 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 10:44:48.81 ID:B7/1q6yvH.net] 一気に何万行も消さずに100行ずつとか小分けしたら軽くなったりしないのかな
810 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 10:49:05.92 ID:1zCrSMV60.net] ClearContentsで重かったことなんてないなあ。 めんどくさくてVBAじゃなくマクロで作って選択範囲小分けのまま放置してるからかな?
811 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 11:15:36.75 ID:fKYNPqjU0.net] >>800 ふーん 範囲指定して消したらどう? 後、最近のEXCELはひょっとして セルの内容が変わったら 再計算しているかも知れないから 一応自動計算も切ってみたら? セル値が変わった時のイベント拾って 何かやってるとかいうオチだったら 問題外だけど
812 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 11:36:50.11 ID:EtHhkpeQ0.net] スレが見つからなかったのでこちらで失礼します C8の値が$100にならない理由を教えて下さい https://i.imgur.com/XLERVNc.png
813 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 11:53:16.96 ID:w9aQykj0M.net] 関数変わっちゃうけど代案を出すなら VLOOKUP(B8,B1:C5,2,FALSE) とかどう?
814 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 12:01:03.02 ID:1zCrSMV60.net] なんだこりゃ LookUpって欠陥あるんかね
815 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 12:21:33.50 ID:w9aQykj0M.net] LOOKUPって近似値を検索する関数だから文字列探そうとすると上手くいかない事が多かった気がする だから面倒臭くなってVLOOKUP,HLOOKUPを使うように癖をつけた記憶がある
816 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 13:49:43.11 ID:1PJYOy7Jr.net] これ思い出したわ https://i.imgur.com/x2uWdkO.jpg https://i.imgur.com/fnrEWzZ.jpg
817 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 13:50:26.95 ID:FInty+sk0.net] 新規作成してから試してみたけど$100になったな
818 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 14:14:53.10 ID:Kq0/JwOuM.net] >>810 C8 が "もり " みたいに空白入ってるとかじゃね?
819 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 14:47:21.95 ID:skJUg0gJ0.net] 検査範囲の値は昇順にしてください そうでなければ正しい値はえられません 並んでないときはVLOOKUPやHLOOKUPを使ってください という旨のことをヘルプに書いてある。
820 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 16:50:41.38 ID:b7V1SruDM.net] LookupにもVLookupやHLookupみたいに検索方法のオプションあればいいのにね まあMSとしてはExcel最新版にしてXLookup使ってねって言うことなんだろうな
821 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 18:46:57.78 ID:EcELbNCH0.net] 初期化で若干重たいのは取り敢えず諦めることにして、外部のCSVをクエリテーブルで読み込んでから Refleshでシートに書き込んでるのですが、この書き込む前の段階で、クエリテーブル上で不要な列のデータを削除する事って可能でしょうか? 不要なデータが大量に混ざっているので、全部まとめてシートに書き込むとやはり重たいので軽量化したいのですが……
822 名前:デフォルトの名無しさん [2021/03/04(木) 19:49:49.80 ID:V/SEJayw0.net] いつものあいつだな
823 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 20:49:35.42 ID:yRtnuXOv0.net] lookup系よりindexmatch使うことが多いな
824 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 20:55:32.61 ID:INwEijJcM.net] lindexmatch使いアピールしてはじめて自称excel上級者として一人前
825 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 21:28:29.09 ID:Cjl2zDCE0.net] 昔はユーザー定義関数作ったけど、今はXLOOKUPがある。
826 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 22:18:19.39 ID:1zCrSMV60.net] IindexMatchなんぞ使わず、 列をボーンとコピー挿入してVLOOKしてこそ一人前
827 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 05:33:04.89 ID:eGeMRqFI0.net] いつものあいつて何?
828 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 09:21:20.59 ID:n//DPju00.net] とうしつの自己紹介
829 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 21:02:22.60 ID:s30llsqJ0.net] 臭う質問者の総称
830 名前:デフォルトの名無しさん mailto:sage [2021/03/06(土) 12:22:29.01 ID:yJvSdslEH.net] 実際に使ってないような質問をして答えさせて悦に入る人
831 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 10:26:06.26 ID:FD1rrusm0.net] webページからデータをとってきてセルに格納するマクロを書いています msxml2.xmlhttpというのを使うとページの内容をgetすることができるのですが、これはどうやらieを利用しているようです ieはいつなくなるかわからないので他の方法があれば今のうちから変えておきたいのですが、vbaで使える方法で他にどういうのがあるか教えてください
832 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 10:30:32.44 ID:ZX3XyXetM.net] IEはなくなるのにVBAは大丈夫だと思う理由は? 言語もPythonとかにしてBeautifulSoupやSeleniumでも使った方がよい
833 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 10:37:32.50 ID:4ExLqYxe0.net] パワークエリはどうかな
834 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 10:42:14.29 ID:TW4NSoKtM.net] 無くなったときのビジネスインパクトはIEよりもVBAの方が遥かに小さいから、MSがどっちか先に切るとしたらVBAだろう 最悪VBAは切られてもExcelのバージョンを塩漬けにして運用できなくはないしな
835 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 11:28:15.07 ID:zpOLYdVD0.net] >>830 まあそのうちpythonに移行するんでしょうけど、今は慣れない言語を一から勉強してる暇はないので それで、あなたはvbaでやる他の方法を示せないということでよろしいですか? >>831 どうかな、じゃなくてどうやるのか教えてください
836 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 13:02:06.24 ID:JbGOdXToM.net] 704 名無し~3.EXE sage 2021/03/01(月) 20:11:45.17 ID:hZCKpI4x デスクトップ版のVBAマクロに替えてWeb版はOfficeスクリプトがプレビュー中(現在は法人向け365のオンラインのみ) https://docs.microsoft.com/ja-jp/office/dev/scripts/resources/vba-differences 705 名無し~3.EXE sage 2021/03/01(月) 20:16:10.79 ID:hZCKpI4x Excelの新自動化ソリューション「Office Scripts」プレビュー版が登場 https://ascii.jp/elem/000/004/000/4000725/ Excel操作をJavaScriptで記録 〜Microsoft、“Office Scripts”をパブリックプレビュー https://forest.watch.impress.co.jp/docs/news/1227931.html
837 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 13:04:56.15 ID:JbGOdXToM.net] 788 名無し~3.EXE sage 2021/03/03(水) 18:26:40.20 ID:5NVXQTtc Excel関数ベースのプログラミング言語「Microsoft Power Fx」登場 オープンソースで公開予定 https://www.itmedia.co.jp/news/articles/2103/03/news080.html Microsoft、自社製RPAツールを全Windows 10ユーザーに無償提供 マウスクリックやキーボード入力をGUIで自動化 https://www.itmedia.co.jp/news/articles/2103/03/news096.html
838 名前:デフォルトの名無しさん [2021/03/07(日) 13:46:03.75 ID:5FBwssoR0.net] >>833 なんだただの馬鹿か 煽って聞きだそうとしてもこのスレはいつものあいつで耐性ができた人ばかりだから無理
839 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 14:06:40.31 ID:4ExLqYxe0.net] 触れないようにしてたけど辛辣で草
840 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 17:25:15.30 ID:CYFzWFvV0.net] >>836 答えられないならレスしなくていいよ 無能に用はないから
841 名前:デフォルトの名無しさん [2021/03/07(日) 17:51:15.16 ID:5FBwssoR0.net] >>838 悔し買ったか?馬鹿
842 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 18:27:16.06 ID:REgzkSN70.net] な、age厨だろ?
843 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 20:22:49.89 ID:l5mf+U2f0.net] 反論できなくてアゲサゲ言い出す奴は見苦しい
844 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 21:30:58.30 ID:iHuYVCVV0.net] 言われて下げてやんのwww
845 名前:デフォルトの名無しさん [2021/03/07(日) 22:58:33.05 ID:5FBwssoR0.net] 馬鹿は自分が相手にしてるのはただ一人だけと思い込む
846 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 05:43:53.99 ID:bSh0ioyn0.net] な、age厨だろ?
847 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 07:03:19.05 ID:+AeHqC2j0.net] 自己紹介www
848 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 09:05:36.54 ID:+ItxpBbz0.net] 類友
849 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 09:36:00.68 ID:gk28PyLU0.net] もはや論点なにそれ状態
850 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 10:52:47.61 ID:TrYviUKj0.net] 保存して閉じる処理をしても、ファイルは閉じてもExcelはとじません Private Sub Workbook_BeforeClose(Cancel As Boolean) '処理 Application.DisplayAlerts = False Application.Quit ThisWorkbook.Close savechanges:=True Application.DisplayAlerts = True End Sub これでもダメでした Application.Quit ThisWorkbook.Close savechanges:=True
851 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 11:07:15.73 ID:9xs5g46P0.net] ActiveWindow.Close
852 名前:848 mailto:sage [2021/03/08(月) 11:38:58.50 ID:TrYviUKj0.net] >>849 Application.Quit ThisWorkbook.Close savechanges:=True ActiveWindow.Close これもダメでした
853 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 11:53:11.92 ID:9xs5g46P0.net] Application.Quit Application.DisplayAlerts = False ThisWorkbook.Close savechanges:=True Application.DisplayAlerts = True
854 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 11:57:13.64 ID:vFSNvomr0.net] Application.DisplayAlerts = False If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close Application.DisplayAlerts = True End If とかどう?
855 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 11:59:04.12 ID:ub+dBY/l0.net] >>848 何でセーブする前にEXCELのアプリケーション閉じようとしてるの?
856 名前:848 mailto:sage [2021/03/08(月) 12:04:00.24 ID:TrYviUKj0.net] >>851 >>852 ダメでした。 ほかのファイルでは問題なくExcelが終了するのですが Private Sub Workbook_BeforeClose(Cancel As Boolean) を使うマクロのときだけ、閉じなくなるような気がします。関係ありますかね?
857 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 12:23:48.80 ID:Qtlmv4rK0.net] >>853
858 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 12:30:21.22 ID:ub+dBY/l0.net] わざわざセーブメッセージ叩き潰して ブック捕まえたまんまにして アプリケーション閉じようとしてるんだから わざと閉じられないようにしているようにしか見えない
859 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 12:44:18.76 ID:Qtlmv4rK0.net] savechangesでも無限ループしてそう
860 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 12:56:18.62 ID:vFSNvomr0.net] >>854 BeforeCloseにApplication.Quit記述してイミディエイトからThisWorkbook.Closeを実行してみたけど問題なく閉じたから何か別の物が干渉してる可能性があるかなぁ
861 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 13:04:41.43 ID:9xs5g46P0.net] めっちゃ古いバージョンとかじゃないだろうな
862 名前:848 mailto:sage [2021/03/08(月) 13:32:58.59 ID:TrYviUKj0.net] >>855 当初はこれでしたが、ググったら、Application.Quitを上に書くらしいです ThisWorkbook.Close savechanges:=True Application.Quit >>856 Application.Quit ThisWorkbook.Close savechanges:=True だけでも同じでした >>857 他に保存する方法を教えてください >>858 自分でも試してみましたが、確かにちゃんと閉じますね。他の干渉を疑ってみます。 >>859 2019です
863 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 13:49:36.30 ID:9xs5g46P0.net] Application.EnableEvents = true を頭に付けてみるとか
864 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 18:00:51.59 ID:+0kCYoNG0.net] そこでやるべきことは ThisWorkbook.Save だけだと思うんだが
865 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 18:30:55.70 ID:bSh0ioyn0.net] コマンドプロンプトでtaskkill /f /im excel.exe
866 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 19:53:15.72 ID:Awv++sSE0.net] Quitは最後では 変なExcelプロセスが残ってないか確認した方がいいのでは
867 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 21:03:57.98 ID:53ng3r6C0.net] VBEでVBAを使って出来たものがマクロであってる? 本屋にVBAの本とマクロの本があるけど同じことと思っておk?
868 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 21:12:54.65 ID:ub+dBY/l0.net] >>865 半分正解
869 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 21:17:42.97 ID:ub+dBY/l0.net] 「VBEで作ったものはマクロ」 これは合ってる 「VBAとマクロは同じことを言っている」 マクロにはVBAtで作られたもの以外に 4.0マクロと言うものが有ってだな・・・ まぁ、あまり気にしなくても良いかもしんないけど
870 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 21:34:20.02 ID:B96zl28N0.net] マクロ スクリプト 関数 これらはプログラムのひとかたまり 厳密に区別しずらいけどそれぞれ ニュアンスの違いはある
871 名前:デフォルトの名無しさん [2021/03/08(月) 21:58:36.85 ID:U/cFdqiVM.net] >>865 VBEはエディタ。Excelの場合はVBAとマクロは同じ意味で使われる。ExcelマクロがExcel VBAのコードで表現されるため。
872 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 22:10:13.99 ID:Awv++sSE0.net] >>867 なんかいろいろ違うぞ
873 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 22:16:46.29 ID:Dj6nESKZ0.net] 関数は全然違うだろwww
874 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 22:42:26.89 ID:53ng3r6C0.net] >>866 まだ表紙なのに理解半分かw >>867 4.0マクロネットで見て使ったこと1回だけあるけど関数みたいなやつだった記憶。 >>868 スクリプトも便利そうですよね。 デスクトップかっこ良くするフリーソフトに自由にスクリプト使えますって書いてあって挫折した。。 >>869 出来たもんがマクロでVBAが設計図でVBEが紙と鉛筆か。 みんなありがと、ネットにも解説サイトあるけど違うとこ見ちゃうから本買ってくるわ。ノシ
875 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 23:14:12.98 ID:u4CRr3CF0.net] そういえばvbaをjsで書ける世界まだなんだっけ? gasみたいな感じで書けないかな
876 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 23:18:26.32 ID:hUWITx/G0.net] WScriptのJScriptでExcel使えるだろ
877 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 00:19:47.43 ID:fLnH8jKyM.net] >>873 >>834
878 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 02:53:50.15 ID:uNAjD4zcH.net] 微妙に違う気がするなあ VBAはプログラミング言語の名前(の略称)。単語と文法が書いてあるだけの辞書みたいなもん その言語で書かれた物がマクロで、むしろ設計図はこっちが近い VBEはマクロの作成を手助けするツール、紙と鉛筆って考え方はだいたい合ってる で、マクロの中でも結果を一組だけ呼び出し元に返すように作られてるのが関数
879 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 05:15:21.29 ID:suvlK62N0.net] 機能とワークシート関数とか全くわからん 操作なんてVBAで良いじゃん 周りでもそういった人いるしさ
880 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 08:22:35.06 ID:zXQo4RJq0.net] 本来、Excelの操作の自動化を目的にしたVBAマクロなのに元の機能そのものが全く分からんとか本末転倒にも程がある
881 名前:デフォルトの名無しさん [2021/03/09(火) 10:45:46.13 ID:pnwu5thka.net] 作成依頼です 一定範囲内において、選択されたセルすべてに、書式設定で取り消し線を付けたいです たとえば、D5からD20の範囲内で、そこ以外の範囲が選択されていた場合はエラーを返す 範囲内なら、選択されたセル(単一、複数、飛び石あり)すべてに、一括で取り消し線を追加 というような感じです 飛び石状態で複数が選択された場合に、上手く処理できなくて相談させていただきました よろしくお願い致します
882 名前:デフォルトの名無しさん [2021/03/09(火) 11:04:35.36 ID:oV9GYLDS0.net] >>879 そんな仕様のものを作ってはいけない
883 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 11:21:48.31 ID:Nc9tdWjH0.net] >>879 選択範囲をまとめて見るんじゃなくて、選択されたセル一つ一つについて既定の範囲内にあるか条件判断をし、エラーかそうでないか エラーでなく全てのセルが範囲内なら一つ一つのセルに取り消し線を追加 とすれば普通にできるでしょ 横着しようとしてるからいけないんじゃないの
884 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 11:25:30.81 ID:uNAjD4zcH.net] VBEは赤ペン先生?全部じゃないけど間違いをすぐ教えてくれる
885 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 11:58:31.47 ID:zYh1VL3E0.net] >>879 お金ください
886 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 12:03:56.11 ID:uNAjD4zcH.net] >>879 For Eachでセルを1個ずつ処理するんだよ For Each、セルアドレスチェック、1つでもD5-D20じゃなかったらエラー エラーがなかったらもう一度For Each、各セルに取り消し線 みたいな流れ
887 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 12:09:52.12 ID:4S2gbixUa.net] ピボットグラフのスライサー内の選択を変えた時にマクロが動くようにしたいです イメージ的にはワークシートイベントです 例︰スライサーの日付を変更時にグラフの色を塗る 選択変更の検知方法を教えてください よろしくお願いします
888 名前:デフォルトの名無しさん [2021/03/09(火) 12:25:42.94 ID:t7O7P6i9M.net] 外枠なら面倒だけど取り消し線なら簡単だ
889 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 12:38:26.95 ID:uNAjD4zcH.net] 外枠でも大差ないと思う Selectionの上下左右に罫線を引くだけ
890 名前:デフォルトの名無しさん [2021/03/09(火) 12:43:13.10 ID:pnwu5thka.net] >>881 >>884 なるほど、これなら自分でできそうです ありがとうございました
891 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 13:03:57.82 ID:C5e26MY+0.net] いえいえ、自分でもっと勉強してくださいね
892 名前:デフォルトの名無しさん mailto:sage [2021/03/09(火) 16:16:21.91 ID:1va3W7Si0.net] >>879 If Intersect(Selection, Range("D5:D20")).Count <> Selection.Count Then MsgBox "エラー" Else Selection.Font.Strikethrough = True End If
893 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 00:11:15.88 ID:seJ5KfaI0.net] だってさ、先輩がExcelなんか全部マクロで動かせば良いって言われたからさ。。。 ワークシートの関数とかそんなもん覚えなくて良いと言われたからさ。 だからVBAしか知らない。 今凄く関数とか機能を覚えるために苦労してる。
894 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 02:20:07.32 ID:Mh5oeh7J0.net] >>891 無理してやる必要ないのに、何のために覚えるの?
895 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 07:58:05.94 ID:seJ5KfaI0.net] >>892 マクロだけでは遠回りだと気づいて
896 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 08:18:24.93 ID:afuwFvM40.net] vlookupはなんであんな変なインターフェースなんですか
897 名前:デフォルトの名無しさん [2021/03/10(水) 09:29:52.26 ID:AjUIRLk9M.net] ポーカーフェイスですよ
898 名前:デフォルトの名無しさん [2021/03/10(水) 10:14:53.26 ID:B52MA1yl0.net] >>894 古いから
899 名前:デフォルトの名無しさん [2021/03/10(水) 14:59:19.94 ID:hxdj8Ixba.net] screenupdapingを非表示にした状態でcalculationを自動にしたら、ちゃんと計算やってくれますか?
900 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:30:04.25 ID:PHH+vFRc0.net] >>897 自分でやってみりゃいいじゃん
901 名前:デフォルトの名無しさん [2021/03/10(水) 15:39:38.02 ID:hxdj8Ixba.net] >>898 updatingが表示になったときに計算されるのか、非表示中に計算されてるのかがわからないのです。
902 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:43:34.11 ID:TvaGnuXK0.net] ExcelからVBAが完全になくなるより先にMSが先になくなりそうじゃない?
903 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:57:24.48 ID:kPBSipVT0.net] MSがなくなるより先にお前がなくなるんじゃない
904 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 17:04:34.10 ID:ij0IDF+ed.net] その前にIT途上企業のウチの会社がなくなるな
905 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 17:25:36.32 ID:PHH+vFRc0.net] >>899 対象セルのvalue値を処理中に debug.printで書き出すなり どこかのセルに突っ込むなり トレースして確認するなりすればいいじゃん まず聞く前にググる癖をつけないと いつまで経っても誰かに聞かないと 何も出来なくなるよ
906 名前:デフォルトの名無しさん [2021/03/10(水) 17:37:30.93 ID:hxdj8Ixba.net] >>903 わかりました。てか式の値見ればすぐわかりますね。やってみます
907 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 18:13:57.59 ID:osSCK/tE0.net] 今日水曜日なのにweekdayName(weekday(Date))で木曜日と出るのは仕様? Dateは2021/03/10 weekday(Date)は4 と出ることは確認済み weekdayとweekdayNameで週始めを日曜とするか月曜とするかで差が出てるんだろうからweekdaynameをvbSundayにすることで解決はするけど、何かが原因でここに違いが出てるなら修正したいので仕様かどうか知りたい
908 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 19:31:18.15 ID:WhcyA+8r0.net] 仕様ではない
909 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 19:41:43.99 ID:iMortp6N0.net] Weekdayの規定値がvbSundayで、WeekdayNameの規定値がvbUseSystemDayOfWeek。 どっちかに合わせた方がいいと思う。
910 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 20:15:11.47 ID:FQxPGFWfa.net] やっぱり>>885 の方法はないですかね 諦めてマクロボタンで更新します ありがとうございました
911 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 16:08:09.65 ID:2F7MZ2cN0.net] >>907 なるほど、自分のwindowsカレンダーの開始日が月曜になってるからなのか なんで既定値が違うんだろうという疑問は残りつつも納得、ありがとうございました
912 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 14:18:56.93 ID:cUuyzc0G0.net] VBA学ぶのにお勧めの本ありますか?
913 名前:デフォルトの名無しさん [2021/03/12(金) 14:22:39.95 ID:b9Kr93A50.net] >>910 MOSの本
914 名前:デフォルトの名無しさん [2021/03/12(金) 14:25:27.81 ID:b9Kr93A50.net] 正確にはVBAエキスパートか。 見過されがちだけど、試験対策本は非常によくまとまっている。
915 名前:デフォルトの名無しさん [2021/03/12(金) 17:44:33.68 ID:UcsTGFzQM.net] 買う前に周辺の図書館を回れば、vba本が見つかるかもしれない
916 名前:デフォルトの名無しさん [2021/03/12(金) 19:23:46.81 ID:7Crflr6rM.net] 金額の話なのか?
917 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 19:31:10.39 ID:f8Q6HjqoM.net] 650頁を超える「Excel VBA逆引き辞典パーフェクト」を最初から通して読む
918 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 23:07:31.55 ID:NBdc6r9a0.net] VBの、何かあの電話帳より分厚いの有るじゃん 叩かれると85ポイントくらいダメージを受けそうな感じのアレ マジレスすると、あれで勉強したわ
919 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 23:38:50.44 ID:sGQx1lBf0.net] >>894 XLookupを使いなさい
920 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 02:37:38.41 ID:5xXr3I9d0.net] まじレスすると他人のおすすめの本は買っただけで満足して読まない可能性が高い
921 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 07:57:23.36 ID:slDJWJ280.net] >>910 出来るだけ薄い奴がいいよ 少なくとも一週間で読み切れそうな奴 細かい部分は結局ググる事になるから手っ取り早く基礎だけ学べるのがいい プログラミングの勉強は書き方を学ぶというより、 「ググる方法、ググって出てきた内容を理解できる最低限の知識」を身に着ける方に重きを置いた方がいい
922 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 08:14:07.47 ID:csBuBYNL0.net] >>910 現在の知識レベルによって薦める本は変わってくるけどなーんも知らないと言うのならVBAの絵本でいいんじゃなかろか >>919 の人も言ってるけど基本、ネットで調べることになるんでどちらかというと 自分が知りたいことを調べられる単語をすぐに思い浮かべる力と それを理解する力の方が自分的には重要な気がする 後、理解出来なければ取り敢えず書いてみてこねくり回すことも大事 本当に基本的なことさえ分かっていれば、 その内クラスやAPI、コールバックとかにぶつかることがあってもネットで調べることが出来れば 自分が然るべき理解力をつけた際に理解出来るようになる。
923 名前:デフォルトの名無しさん [2021/03/13(土) 08:17:01.13 ID:tBGlpruK0.net] メルカリなどでたくさん買って、好きなのを使えばいいよ。
924 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 11:51:20.74 ID:9LAtgmD40.net] >>910 VBAの神様
925 名前:デフォルトの名無しさん [2021/03/13(土) 14:55:26.89 ID:4/YYKqK7F.net] Excel VBAは自己流が多いと思うけど、体系的に学習するならマイクロソフトのVBAエキスパート本だろうな。
926 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 21:38:13.19 ID:99ipLDsT0.net] 小手先のテクニックより 複雑怪奇なExcelの挙動の中身がどうなってんのか 詳細に説明してほしいわ 謎挙動がおおすぎる
927 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 21:57:08.91 ID:7fDCnZwF0.net] 具体的には?
928 名前:デフォルトの名無しさん [2021/03/13(土) 22:05:26.89 ID:tBGlpruK0.net] >>924 あまり使われていないVBAの機能を使うとすぐにバグにはまる。
929 名前:デフォルトの名無しさん [2021/03/13(土) 22:07:49.91 ID:tBGlpruK0.net] ActiveXのボタンが消えるバグなどは放置状態
930 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 01:08:53.96 ID:EQ7/9AB00.net] vbの構文がダサすぎるのが嫌 綺麗に書いても汚らしく見える Dim asとかキモいんだよ
931 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 02:39:44.98 ID:QAEhurjz0.net] VBAのコードのフォントを HGP行書体 (日本語) とかにしてみたら?
932 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 03:51:24.74 ID:+mKOZ3nE0.net] ACCESSのレポートではかけたのですが VBAで規定の先よりも細い線を書くことはできませんか?
933 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 06:39:33.91 ID:6QvkQitw0.net] コントロールのボタンが押す度徐々に小さくなったり消えたり動き回ったり 配列返す関数をUboundに渡すとメモリリークしたり、 フォームをモーダル表示中にシートをアクティブにすると何故かシートを操作できたり、 インターフェースを実装するクラス自体をインターフェースに出来てしまう上に、それをするとバグったり、 いくらでも上げられるだろ 特にフィルタ関連は変なのが多い specialcells(xlcelltypevisible)とかcopyメソッドとか
934 名前:デフォルトの名無しさん [2021/03/16(火) 14:07:15.77 ID:yEkj4Jws0.net] 作成依頼なんですがお願いできますでしょうか A列に数字(No.) B列に文字列(名前)の3000行ほどの表があります。 A列の数字は重複している箇所があり、 A列が他の行と重複している場合B列の文字を全て繋げてC列に書き出したいのですが可能でしょうか。 サンプル A列 B列 C列 11111 A子 A子 11112 B子 B子 11113 C子 C子・D子・E子 11113 D子 C子・D子・E子 11113 E子 C子・D子・E子 11114 F子 F子 11114 F子 F子 11115 E子 E子 ただし、サンプルのように A列が重複してもB列の文字列が同じだった場合は『F子・F子』とならずに『F子』のままで、 重複しないA子、B子もそのままにしたいのです。 Aが列の数字は最大で20ほど重複している場合があります。 ずっと手作業でやってて挫けそうなんでお願いします!!
935 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 14:24:36.41 ID:gGJzxP62H.net] >>932 Sub Macro1() rr = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To rr n = Cells(i, 1)
936 名前: s = Cells(i, 2) t = s & "・" For j = 1 To i - 1 If Cells(j, 1) = n Then w = Cells(j, 2) If InStr(t, w) = 0 Then t = t & w & "・" End If End If Next t = t & s & "・" For j = i + 1 To rr If Cells(j, 1) = n Then w = Cells(j, 2) If InStr(t, w) = 0 Then t = t & w & "・" End If End If Next t = Left(t, Len(t) - 1) t = Right(t, Len(t) - 1 - Len(s)) Cells(i, 3) = t Next End Sub [] [ここ壊れてます]
937 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 15:29:08.70 ID:yEkj4Jws0.net] >>933 どひゃ〜!!!! しゅ、しゅごいぃいいい! ありがとうございます!ありがとうございます!本当にありがとう!
938 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 15:59:46.67 ID:cZC9o7Y5M.net] それ、例えば百合さんと百合子さんがいた時にバグらない? こういうのは辞書に登録してitemsプロパティをjoin関数に渡すのが鉄板だと思う 最近ならvba使わずにfilter関数とunique関数でも同じことできるから、もしかしたらこっちの方が楽かも
939 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 15:59:47.11 ID:btbyDUmHr.net] >>933 きったねえソースだなおい
940 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 16:01:05.39 ID:YCs8uHit0.net] お、きれいなソース期待かw
941 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 16:15:55.00 ID:gGJzxP62H.net] 百合・百合子バグ修正 Sub Macro1() rr = Cells(Rows.Count, 1).End(xlUp).Row For r = 1 To rr n = Cells(r, 1) s = Cells(r, 2) t = "・" & s & "・" For i = 1 To r - 1 If Cells(i, 1) = n Then w = Cells(i, 2) If InStr(t, "・" & w & "・") = 0 Then t = t & w & "・" End If End If Next t = t & s & "・" For i = r + 1 To rr If Cells(i, 1) = n Then w = Cells(i, 2) If InStr(t, "・" & w & "・") = 0 Then t = t & w & "・" End If End If Next t = Left(t, Len(t) - 1) t = Right(t, Len(t) - Len(s) - 2) Cells(r, 3) = t Next End Sub
942 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 16:53:04.48 ID:cZC9o7Y5M.net] 百合さんと百合・D・ルフィさんがいた時にバグる
943 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 17:22:11.94 ID:gGJzxP62H.net] 百合・D・ルフィバグ修正 Sub Macro2() Dim d As Object Set d = CreateObject("Scripting.Dictionary") rr = Cells(Rows.Count, 1).End(xlUp).Row For r = 1 To rr For i = 1 To rr If Cells(i, 1) = Cells(r, 1) Then s = Cells(i, 2) If Not d.exists(s) Then d.Add (s), 0 End If Next Cells(r, 3) = Join(d.keys, "・") d.RemoveAll Next End Sub
944 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 17:31:00.58 ID:tUVUKdZi0.net] >>932 Ruby で、CSV ファイルでやってみた require 'csv' tmp_hash = { } result_ary = CSV.read( "input.csv" ) # 2次元配列 result_ary.each do | row | # 1行ずつ処理する if tmp_hash.has_key? row[ 0 ] # 既に、その数字が存在すれば # 文字列が存在しない時だけ、その文字列を追加する tmp_hash[ row[ 0 ] ][ row[ 1 ] ] = true unless tmp_hash[ row[ 0 ] ].has_key? row[ 1 ] else tmp_hash[ row[ 0 ] ] = { row[ 1 ] => true } end end # p tmp_hash # {"11111"=>{"A子"=>true}, "11112"=>{"B子"=>true}, # "11113"=>{"C子"=>true, "D子"=>true, "E子"=>true}, # "11114"=>{"F子"=>true}, "11115"=>{"E子"=>true}} result_ary.each do | row | # 1行ずつ処理する # その行の3列目に、キーを結合した文字列を追加する row.push tmp_hash[ row[ 0 ] ].keys.join( "・" ) end csv_str = result_ary.map( &:to_csv ).join # 2次元配列を、CSV 文字列に変換する print csv_str
945 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 17:41:01.13 ID:QPeaG/4LM.net] 何故突然にRuby?
946 名前:932 mailto:sage [2021/03/16(火) 18:32:29.43 ID:yEkj4Jws0.net] >>940 度々ありがとうございます! 最初ヤツでも今の所大丈夫そうでしたが、今後はこちらを使わせていただきます! 他の方もありがとうございます!
947 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 19:02:04.81 ID:EUyNpk5n0.net] >>942 rubyスレだと相手にもされないからわざわざ違うスレに来てるかわいそうな人だよ
948 名前:デフォルトの名無しさん [2021/03/16(火) 21:06:28.11 ID:8Gn4pDRu0.net] 名前の例が○子とは、そうとうなジイさんだなw
949 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 21:12:32.28 ID:gGJzxP62H.net] >>945 現代だとどう書くの? ランキングによると結が人気あるらしいから結A、結B、結Cか
950 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 21:15:14.58 ID:lullOsMB0.net] そら「百合(ろーず)」よ
951 名前:デフォルトの名無しさん [2021/03/16(火) 21:28:58.74 ID:8Gn4pDRu0.net] >>946 なんで女なのか?
952 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 21:42:16.30 ID:gGJzxP62H.net] そんなこと言ったら、なぜ日本人なのか、なぜ人類なのか
953 名前:デフォルトの名無しさん [2021/03/16(火) 21:51:49.14 ID:8Gn4pDRu0.net] 太郎、次郎、三郎、四郎、五郎でいいだろ。
954 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 21:55:45.14 ID:YCs8uHit0.net] なんで男なのか?
955 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 22:05:23.00 ID:gGJzxP62H.net] 3000行もあるのに、それじゃ考えるのが大変だ
956 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 23:39:47.76 ID:FDp5iKWO0.net] 手作業でAからFカップを調べる作業にVBA使うとか お前ら男として終わってるわマジで
957 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 00:14:55.79 ID:8Ujh9QFC0.net] ろーずって薔薇じゃないの?
958 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 00:20:54.29 ID:lKwA7qQn0.net] そうだよ
959 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 00:54:57.81 ID:KXbC8pO1H.net] わざと間違えるっていう2chから続く伝統芸 https://i.imgur.com/h4Fip2L.jpg
960 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 02:44:52.10 ID:LQZUutD10.net] >>933 いきなりCellsで始まるのはいただけないなw できればブックから始める習慣を付けて欲しい。
961 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 03:45:50.60 ID:KXbC8pO1H.net] >>957 なおした Option Explicit Sub VBA69_932() Dim A_number As Long, B_name As String, C_list As Object Dim last_row As Long, row_loop As Long, search_loop As Long Set C_list = CreateObject("Scripting.Dictionary") With ThisWorkbook.ActiveSheet last_row = .Range("A" & Rows.Count).End(xlUp).Row For row_loop = 1 To last_row C_list.RemoveAll A_number = .Range("A" & row_loop) For search_loop = 1 To last_row If .Range("A" & search_loop) = A_number Then B_name = .Range("B" & search_loop) If Not C_list.exists(B_name) Then C_list.Add (B_name), 0 End If End If Next .Range("C" & row_loop) = Join(C_list.keys, "・") Next End With End Sub
962 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 10:07:11.87 ID:wJCP0FMq0.net] >>933 謎の変数名を多用するのやめてくれ。見る気が一瞬で失せる。 ネスト深くするのも罪悪感感じてくれ
963 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 10:20:01.36 ID:QeKL1gNm0.net] 配列でやれ
964 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 10:38:31.95 ID:CnU6DmD/0.net] はい
965 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 10:48:27.37 ID:AkcuhhXSr.net] れつ
966 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 10:49:53.05 ID:rwSgtXuJ0.net] ゴー
967 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 10:52:25.95 ID:KXbC8pO1H.net] >>960 なおした Option Explicit Sub VBA69_932_a() Dim This As Worksheet Dim table() As Variant Dim A_number As Long, B_name As String, C_list As Object Dim last_row As Long, row_loop As Long, search_loop As Long Set C_list = CreateObject("Scripting.Dictionary") Set This = ThisWorkbook.ActiveSheet last_row = This.Range("A" & Rows.Count).End(xlUp).Row ReDim table(last_row - 1, 2) table = This.Range("A1:C" & last_row) For row_loop = 1 To last_row A_number = table(row_loop, 1) C_list.RemoveAll For search_loop = 1 To last_row If table(search_loop, 1) = A_number Then B_name = table(search_loop, 2) If Not C_list.exists(B_name) Then C_list.Add (B_name), 0 End If End If Next table(row_loop, 3) = Join(C_list.keys, "・") Next This.Range("A1:C" & last_row) = table End Sub
968 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 10:59:16.82 ID:AkcuhhXSr.net] 変数にABCなんてのを使ってる時点でセンスゼロ 後で見て全くわからないバグの温床にしかならない
969 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 11:12:33.58 ID:QeKL1gNm0.net] LBound UBound使えよ
970 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 11:56:37.23 ID:KXbC8pO1H.net] >>965 お手本見せて >>966 データ数は変数に入れたから改めて調べる必要ないという判断
971 名前:デフォルトの名無しさん [2021/03/17(水) 12:13:35.08 ID:YH/YYkmR0.net] クソコード
972 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 12:27:17.82 ID:rAxKrtcHF.net] うんコード
973 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 13:20:25.46 ID:4HdAS7ns0.net] 変数名に対する識者の見解 https://mevius.5ch.net/test/read.cgi/bsoft/1608362765/253n
974 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 14:37:09.94 ID:rwSgtXuJ0.net] 口だけで何もしない(できない)奴はスルーでいいよ
975 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 15:25:09.30 ID:vF0LuwhE0.net] >>964 うーん 頭ごなしに糞というつもりはないけど そうだね、もし改善点を挙げるとすれば・・・ まぁ聞き流して良いけどね。 ・変数名は一貫性を持たせて、一見して何を意味しているのか分かるようにすること。 例えば頭の1文字が大文字だったり小文字しているのをキャメル形式に統一するとか。 ・ActiveSheetは極力使わない。 キチンとした意味を持っているならそれでいいけど、フォームやツールバーから呼ばれることやそのように改修される可能性も考慮してどのシートを使うか明示的に指定する方が良い。 もちろんその際はシート名が変更されてしまうことを考慮して シート名ではなくシートオブジェクト名を使用する。 ・単一責任原則を踏襲する。 一つの関数またはメソッドに、一つの役割のみ持たせて一つの関数またはメソッドが増長になることを防ぐ。 とは言ってもこれは何を一つの役割とするかを決めるセンスが必要で、 これを上手く作れれば「糞」からひとつ脱却出来る。 後は趣味の問題だけど ・Withを使わないことに慣れる。 VBA → VB.Net → C#に移行したとき、Withが無いから慣れておくとちょっと楽。 ・CreateObjectは使い所を考える。 CreateObjectはバージョンを考慮せずに済んだりする反面、 メソッドやプロパティのインテリセンスが効かなくなるため、タイプミスをし易くなるという欠点がある。 参照で繋ぐか、CreateObjectで作成するかは 一考した方が良い。 尚、本来Variant型は何でも入ってしまう危険な型なので 使わない方がいいと言いたいところだけど EXCELのRangeオブジェクトとあまりに相性が良いから使うなとは言えない。
976 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 16:55:51.25 ID:ttYMdvTCd.net] ワロタ
977 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 19:15:40.71 ID:2RS2aA5zM.net] メガネをクイってしながら凄い早口で言ってそう
978 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 19:24:46.18 ID:lGPcjQzL0.net] >>967 940が一番何をしてるのか分かりやすい これにシート銘柄をしっかり記述すればよいのでは?
979 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 19:25:19.68 ID:lGPcjQzL0.net] 銘柄w シート名ね
980 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 19:38:30.30 ID:vF0LuwhE0.net] >>964 ついでにもう一つ言っておくと、 ディクショナリやコレクションの要素数は1バイトで扱える数、つまり1から数えて256まで。 着眼点は良かったけど、3000行を考慮すると オーバーフローで落ちる可能性があるよ。
981 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 19:56:32.92 ID:lKwA7qQn0.net] >>956 ちがう 金星(まぁず)ちゃんというDQNネームがあった
982 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 19:57:39.75 ID:lGPcjQzL0.net] ディクショナリは重複確認用で3000データをまるまる格納する訳じゃないだろ
983 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 20:01:06.73 ID:cHLiD5SO0.net] >>977 >ディクショナリやコレクションの要素数は1バイトで扱える数、つまり1から数えて256まで。 初耳
984 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 20:20:25.27 ID:lKwA7qQn0.net] >>977 嘘を言うな
985 名前:デフォルトの名無しさん [2021/03/17(水) 21:15:41.95 ID:X8ZT7dpP0.net] 256ページの辞書なんて存在するの?
986 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 21:56:14.59 ID:2ghuU9if0.net] ウィンドウ上の制限
987 名前:デフォルトの名無しさん [2021/03/17(水) 23:33:51.91 ID:YH/YYkmR0.net] 経験からくる誤った思い込みだろうね。 1バイト単位の区切りというのは、8ビットパソコン時代からExcelが存在していれば、可能性としてあるが、16ビットパソコンから作っているのに1バイトという制限はありえない。
988 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 23:42:58.65 ID:n+mEYgox0.net] ディクショナリとかコレクションとかが、具体的に何を指してるかにもよるんだが まあ255個とかいう制限のディクショナリやコレクションは思いつかないが EXCELに限れば、上限255とか256とかいう制限のものは今ですらちょこちょこあるんだぜ https://support.microsoft.com/ja-jp/office/excel-%E3%81%AE%E4%BB%95%E6%A7%98%E3%81%A8%E5%88%B6%E9%99%90-1672b34d-7043-467e-8e27-269d656771c3#ID0EBABAAA=%E6%96%B0%E3%81%97%E3%81%84%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3
989 名前:デフォルトの名無しさん [2021/03/18(木) 00:01:49.93 ID:7fQvPjcg0.net] >>985 論点ずらしだな。単純に初期のExcelの時代だとメモリ節約で1バイトにしただけで、足りないと判断されたものは、のちに2バイト、4バイト単位に変更されている。
990 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 00:28:15.06 ID:POZoiR5o0.net] 改善点とか言って挙げてる内容は偏ってて微妙だし知識も無いのに態度だけ上からだし昔の人はすごいなぁ
991 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 02:36:30.62 ID:Z7yNcrmt0.net] >>985 例えば列の幅が255文字なのは別に1バイトで管理してるわけじゃなくて上限を設定してるだけだろ そう言うのはExcelに限った話じゃないよ
992 名前:941 mailto:sage [2021/03/18(木) 13:11:04.06 ID:VjRMlHUp0.net] >>941 11111,A子 11112,B子 Ruby で、こういうCSV ファイルを処理した場合、 辞書は、こうなる。 値のtrue に意味はない {"11111"=>{"A子"=>true}, "11112"=>{"B子"=>true}, "11113"=>{"C子"=>true, "D子"=>true, "E子"=>true}, "11114"=>{"F子"=>true}, "11115"=>{"E子"=>true}} F子は、重複しない
993 名前:941 mailto:sage [2021/03/18(木) 13:17:05.45 ID:VjRMlHUp0.net] ただし、このファイルを、1パスでは処理できない 11113,C子 11113,D子 11113,E子 "11113"=>{"C子"=>true, "D子"=>true, "E子"=>true}, C子 を読み込んだ時点で、その行よりも後ろにある、 D子・E子 の情報を取得できないから だから、>>941 では、データ配列を2回読んでいる
994 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 13:36:31.16 ID:pzBF2kYz0.net] >>964 64bit版の時はlonglongで宣言するようにしないとエラーになる可能性があるよ
995 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 14:11:19.12 ID:Z7yNcrmt0.net] >>991 3,000行ぐらいなのに?
996 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 14:55:42.20 ID:pzBF2kYz0.net] そんな考えならプログラミングやめたほうが良いんじゃない
997 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 15:38:13.36 ID:Z7yNcrmt0.net] 何でもかんでもLongLong使うのが正解だとでも思ってるの?
998 名前:デフォルトの名無しさん [2021/03/18(木) 15:58:28.07 ID:7fQvPjcg0.net] >>993 はデタラメを言っているな。妄想なのかな。
999 名前:デフォルトの名無しさん [2021/03/18(木) 16:01:58.30 ID:7fQvPjcg0.net] 他の言語や環境の仕様とごっちゃになってるんだろうな。 Excel VBAで32ビットと64ビットで、よく使われるデータ型に大きい違いがあるなんて聞いたことがない。
1000 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 17:13:11.58 ID:Z7yNcrmt0.net] LongLong は 64bit 環境でないとサポートされないとか LongPtr のビットサイズやバリアント型の文字列の付加サイズが 32bit と 64bit 環境で違うとかはあるけどまあ些細といえば些細な話だわな そもそも現状最大行数が Long 型で扱えるのに >>991 が何を心配してるのか興味ある
1001 名前:デフォルトの名無しさん [2021/03/18(木) 17:39:14.84 ID:7fQvPjcg0.net] 64ビットというのも何の組み合わせを言っているのかもわからない。 それにしてもここはマイクロソフトのサポートの人がいないか? この中途半端さが日本マイクロソフト風なんだが。
1002 名前:デフォルトの名無しさん [2021/03/18(木) 18:16:57.50 ID:d7pvjDlRM.net] サポートの人が256個なんて言わないだろ
1003 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 19:19:46.38 ID:Z7yNcrmt0.net] 組み合わせ? 単に64bit Excelかどうかだけじゃね?
1004 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 95日 18時間 57分 23秒
1005 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています