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


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

Excel VBA 質問スレ Part76



1 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 02:23:41.78 ID:2t63WK/jM.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること

ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part75
https://mevius.5ch.net/test/read.cgi/tech/1644384272/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

540 名前:デフォルトの名無しさん (スッップ Sd1f-UWq1) mailto:sage [2022/06/15(水) 21:04:50 ID:m3jNjkHdd.net]
コントロールフォームの動的配置 & クラスモジュールでイベント起こすに一票
どうせどこかでイベント共通化の処理が入るだろうからスケーラビリティ確保のためにも

541 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:45:31.66 ID:y5599rfC0.net]
>>534
うぬ、それが一番だと思うけど何故にエクセルなのかと思ってしまう

542 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 01:45:48.79 ID:s8B3FZ9N0.net]
1000個のラベルと見せかけて、
実は1個だけラボルが混ざってるんじゃないだろうか。

543 名前:デフォルトの名無しさん [2022/06/16(木) 07:24:34.47 ID:FKA1V1750.net]
テキストファイルを開いて1行ずつ中身を読んでます。
Open ファイル名 For Input As fNo
Line Input fNo, buff
途中まで読んだあと、先頭から読み直したいです。
ファイルを閉じてまた開くのは嫌です!
下のURLを参考にして、
FileSystemObjectを使ってすべてを1変数に読み込み
改行コードで区切って配列化して
先頭から読み直したいときは配列の先頭から読みなおし
という方法を思いつきましたがコード修正が大変なので
もっと楽な方法をご教示いただけたら幸いです。
tps://bokulog.org/vba-read-file/

544 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 07:25:26.98 ID:FKA1V1750.net]
sageそこねスミマセン

545 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 08:10:36.64 ID:fGEidPk00.net]
>>529
1桁足りないじゃんって思ったら
Optionbaseデフォルト値でやるのが普通なのか?
俺はどうにも馴染めないので1でやってるが

546 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 08:12:48.83 ID:H6wZRQj3M.net]
>>537
vbaにseekってなかったっけ?

547 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 08:52:14.47 ID:ijJBEomdd.net]
どんなコード書いててそこからどんな手直しするかわからないのに回答のしようがないよね

548 名前:デフォルトの名無しさん [2022/06/16(木) 10:17:53.34 ID:G3W4msQ6a.net]
>>537
ファイルを閉じて開き直すのが祖谷な理由が書かれてませんので
嫌でもやればいいんじゃね



549 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 10:35:38.36 ID:OXzWqs7e0.net]
IE終了したけど、今日の時点ではVBAからIE操作できた。いつまで保つか明示されてる?

550 名前:デフォルトの名無しさん [2022/06/16(木) 13:56:39.50 ID:j/xQYS4f0.net]
サポートしないだけで
PC内にIEがある限り
永久に使えるんじゃないか?

551 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:04:02.85 ID:9IfQq+aNM.net]
そのうち深刻な脆弱性が見つかったらセキュリティソフトでウィルス扱いされるようになって、
IEコンポをロードした瞬間にウィルス警告が出るようになるだろうな

552 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:55:49.33 ID:TulzdQgt0.net]
WannaCryのときMSはサポート外にパッチ出しちゃった前科あるからなあ
なんだかんだ面倒みそうでなあ

553 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 19:55:32.69 ID:g5Jzetu50.net]
>>543
7年くらい大丈夫と見たような気がする

554 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 21:22:11.67 ID:wccj32jkd.net]
>>547
何の根拠もないな
危険な脆弱性が明日見つかったらそれで終わりだよ

555 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 23:09:10.84 ID:BfseDl080.net]
https://www.ka-net.org/blog/?p=13587
素直にedgeに対応したコンポーネント出してほしいなぁ

webapiからjsonを読み込むときにIEだけはいちいちダウンロード確認のポップアップが出て止まる挙動で苦しんだ記憶があるから嫌い

556 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 02:08:51.88 ID:qX3KJPna0.net]
>>540
Seek命令あるけど、あれランダムかバイナリモード用だと思う
が、試したがシーケンシャルファイルでもバイト位置で指定できるな

557 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 07:31:22.44 ID:tno+JwDPr.net]
>>547
エッジで互換モードする期間じゃない?

558 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 08:55:59.12 ID:LpDNne3Kd.net]
IEで終了したのは「アプリ」の「サポート」だけだぞ
IEオブジェクトはしばらく残すと明言してるから、マクロから使うのはまだ問題ない

けど、猶予期間の今のうちに社内ルールの変更など根回しはちゃんとやっとけよ



559 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 13:19:56.68 ID:6WxlvkUPd.net]
IEが非対応のサイトも増えてくるから対策出来るならした方が良いのはわかってる
が現状Selenium Webdriverが最適解のようでいちいちバージョン合わせるためにダウンロードしたり記述が変わったりすげー面倒

MSがどうにかしてくれると淡い期待をしたいが

560 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 02:47:00.46 ID:x1pEIMNT0.net]
Edgeに限らず、新しくなって使いづらくなるのホント意味不明。
PC起動するとWindows11にしませんか?って言われるけど、もうお前なんか信用しとらんわ!

561 名前:デフォルトの名無しさん [2022/06/18(土) 06:12:14.25 ID:tcSE7QQr0.net]
まぁしょうがない
良かれ悪かれ何でも時代の変化で変わって行く
VBAは関係ないけどちょっと前にとあるシステムで
IE → EDGE の移行作業行ったよ
開発ツールは確かにIEの方がEDGEより
使いやすかったと思う。慣れだろうけどね。

562 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 06:56:56.06 ID:8iz4uO0y0.net]
世の中がセキュリティに舵を取るようになったからね
楽観論じゃなりゆかない時代なんだから仕方がない

563 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 08:20:33.50 ID:7fgrQLBR0.net]
セキュリティを理由に広告ゴリ押し
こうはなりたくないね

564 名前:デフォルトの名無しさん (ワントンキン MM8a-ctFn) mailto:sage [2022/06/18(土) 10:08:00 ID:SSs68PlgM.net]
もうマイクロソフトの為に仕事するのやめませんか?

565 名前:デフォルトの名無しさん (アウアウウー Sa47-iAjv) [2022/06/18(土) 10:08:32 ID:Os2AgP5Ia.net]
ieで取れなかった個人情報を集めてるからな

566 名前:デフォルトの名無しさん [2022/06/18(土) 10:59:15.44 ID:0BdDrqNN0.net]
ExcelもIEも何年も使ってないわ
kneetじゃねーよ

567 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 11:55:08.82 ID:+2kbSQo1M.net]
VBAもそろそろかな

568 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:40:01.62 ID:T0WefD6fd.net]
そう言われ続けて20年たった



569 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 16:09:32.02 ID:JcC1S0zs0.net]
VBA無くなればこのスレも下火になるかもな。
パワークエリスレが活気出る

570 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 16:29:16.53 ID:Es40ajdn0.net]
PowerQueryは万能じゃない
VBAと比較するもんじゃない

571 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 18:07:43.74 ID:lnn1Xxq/M.net]
PowerShellは万能だぞ
ExcelのワークシートもWEBブラウザも操作できる

572 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 18:14:09.38 ID:59smDk8ed.net]
デフォのPS 5.1はクソだけどな
BOM付きUTF-8を要求したり権限厳しかったり

573 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 01:44:47.25 ID:7uc9nhCj0.net]
万能かもしれんがVBSみたいな手軽さが無いのがな…

574 名前:デフォルトの名無しさん [2022/06/19(日) 10:44:47.27 ID:uZGRAEGZp.net]
Power shellは
.Net Freamworkが入ってなければただのShellだもんな
なら素直にVSの類いれとけばいい

575 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 21:06:19.28 ID:+DYD1D5ZM.net]
Powershell 7は.NETと関係ない汎用のコマンドラインシェル
macOSやLinux向けの製品すら存在する

576 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 21:33:18.64 ID:nfQGh1M+d.net]
追加でWebからインストールしなきゃいけないPowerShell(6以降)に存在価値はない
それが許されるんならあえてPowerShellなんて使わずとももっと優れた選択肢がいくらでもある

577 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 22:00:01.16 ID:c6U60qvsM.net]
Win11でもオプションなの?
うちいまだにWin10だからわからん

578 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 09:16:41.32 ID:ZiXH0O+ed.net]
win11でも入ってるのは5だけ
6以降はサポート期限がLTSでもリリースから2年しかないから、
仮にWindowsにプリインストールすると2年ごとにWindowsの更新で強制的にメジャーバージョンが上がって既存資産がぶっ壊れるリスクが生じる
だからどうしてもユーザーの自己責任で塩漬けにできる選択肢が必要で、Windowsの一部として扱うことが不可能なんだよ



579 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 14:59:24.30 ID:nrTPRY1Pr.net]
質問です

580 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 15:16:20.71 ID:nrTPRY1Pr.net]
質問です
ある動画で「連想配列とユーザー定義型を組み合わせると便利」ということで色々勉強していたのですが、ユーザー定義型ってpublic宣言しても別モジュールで呼び出せないですよね?
てことは別モジュールにプロシージャがあって、それを引数設定して呼び出してもエラーになりました
そこでクラスモジュールを使っても同じような事ができると聞き、クラスモジュール内に3つ型を宣言した変数を作ったのですが、それを配列に入れようとすると「配列に入れることができません」というエラーがでます
具体的には以下のとおりです
Dim c() as class1
Set c = New class1 ←ここでエラーがおきます
この記述を
Dim c() as New class1
とすればエラーは起きないのですが、別モジュールの引数に
sub test(c as New class1)と記述はできないので困っています
なにかいい方法はないでしょうか?

581 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 16:23:50.93 ID:NaTv3t2Wr.net]
すみません
私の勘違いでした
普通にユーザー定義型でできました

582 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 00:02:57.35 ID:fcQ3wVRo0.net]
ネタ投下
「貴様は一体何を仰ってるんだ」Excelマクロの納品時、担当者に言われたひと言にTwitterざわつく - 「良さを完全に殺しに来てる」の声も
https://news.mynavi.jp/article/20220620-wadai6/

583 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 01:16:32.40 ID:/230SSBOd.net]
>>576
くだらなすぎる
読むのは時間の無駄

584 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 02:03:36.70 ID:/pBOMLc50.net]
うさんくせー
セミナー屋ほど胡散臭いのはないわ、
やっぱ5ちゃんねるが一番!

585 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 07:25:36.31 ID:dKKatMvdD.net]
嘘松藁人形
手作業大好きおじさんが一人いましたって面白くもない話

586 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 07:29:12.94 ID:bFCzOkRx0.net]
話の内容はともかく客に説教とかアホすぎる

587 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 09:39:47.61 ID:fcQ3wVRo0.net]
「ミスが起こるような仕組み」でなくて、
まるっきりブラックボックスでもなく、
人が過程を辿れるようなの、作りたいな・・・
とは思う。

588 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 11:11:38.88 ID:SHGr4jOjd.net]
完全にネタ、作り話だろこれ

そもそもVBAごときでミスが起きないシステムなんて作るの不可能だし
マクロはたくさんある工程の一つに過ぎないんだから、業務全体で見ればミスが起きる余地なんてほかにいくらでもあるだろうに



589 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 11:58:03.94 ID:qNhhYbIzd.net]
話題にするだけばからしいでしょ
こんなの言ったもん勝ちだしね

590 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 12:09:22.34 ID:PZ27NODvM.net]
ブラックボックスでミスが見つけられない
を独自解釈しただけだろ

591 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 13:02:01.70 ID:acQQyPov0.net]
>>581
どうせDebug.Printするんだろうからデバッグモード付きで納品すればいいんじゃね

592 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 13:45:53.56 ID:5jQGKRYma.net]
マクロの作成頼まれたけど要求内容があまりにも怪しかったので、
マクロと一緒に「入力に対する出力が合っているか」と「そもそもの入力が誤っていないか」を簡易的に(電卓などで)求められる計算方法を渡した
そしたら約3ヶ月に一回ぐらいの割合でそもそもの入力すべきデータを誤っていたことが判明した
ってことはあったな
後で調べたら、こういうのは「封筒裏の計算」っていう手法らしいけど

593 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 13:46:18.61 ID:qNhhYbIzd.net]
>>581
保存期間なり世代管理してログ出力すればいいでしょ

594 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 15:52:29.00 ID:acQQyPov0.net]
>>586
祝儀袋の封筒に書かれた金額と入っている金が違うやんってことか
なるほど日本人はうまい例えを作るもんだと思ったら全然違ってた

595 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 17:31:38.14 ID:/pBOMLc50.net]
わろた

596 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:32:15.50 ID:XefayqmG0.net]
Excel2013のVBAで
Debug.Print (1 = 1) * 1
てやると-1になるけど、
セルで
=(1=1)*1
て入れると1になる。
これって不具合?

597 名前:デフォルトの名無しさん [2022/06/22(水) 19:47:11.74 ID:5Bb+Exnq0.net]
ワークシート上の(1=1)、つまりTRUE値は「1」だけど
VBAでのTrue値は「-1」だから合ってる

598 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 21:45:57.03 ID:Io6qCa48M.net]
>>576
毎日新聞の戯言

お前暇やろ



599 名前:デフォルトの名無しさん [2022/06/23(木) 00:03:21.37 ID:RpD62pBf0.net]
VBAは好き
どんな職場で働けばいいの?
正社員じゃなくていいです。

600 名前:デフォルトの名無しさん [2022/06/23(木) 06:39:08.02 ID:d1WC2qsrM.net]
>>593
事務派遣。
ゆるい職場ならvba使用が禁止されて無いから与えられた業務で使って見ればいい。

601 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 06:45:25.15 ID:ms1G02BaH.net]
ワイまさに派遣事務でたまにVBAやってこちらのみなさんにお世話になってる(*´ε`*)

602 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 07:34:26.56 ID:OFyvXiPXd.net]
>>593

日本で働くのはやめておけ
将来性無いぞ

603 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 07:40:40.65 ID:SBEKkY350.net]
>>593
派遣おすすめ
vba縛りの事務なら、めちゃくちゃ楽で定時に帰れる
そういう人を見たことある

一生生きていけるだけの金もってたら、
そういう人生送りたかったってぐらいやりたい生き方だわ []
[ここ壊れてます]

605 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 09:00:02.54 ID:KOp9wOBp0.net]
生涯困らない金があって、VBAの事務作業か  もっと他に・・ いや、どうぞご自由にだけどさ

606 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 09:06:50.94 ID:SBEKkY350.net]
>>598
一時金持っててさ、毎日酒のんでゲームしてパッパラパーな人生送ってたのよ
当然、あっという間に体壊して病院行き

適度な仕事は、自分の健康につな

607 名前:がるよ []
[ここ壊れてます]

608 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 09:13:48.26 ID:RH4NXyqT0.net]
貧困な想像力って悲しいよね



609 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 10:45:06.10 ID:omFSpe9sd.net]
VBAしかできないやりたくないような人だとしたらそのような人を使ってくれるところは少ないのでは・・・
なのでここで聞いてもいい回答はもらえないでしょ

610 名前:デフォルトの名無しさん [2022/06/23(木) 10:56:16.87 ID:M4XLJX6ga.net]
いまさらVBAには関わりたくないな
そもそもVBA自体よりもVBAを使ってる連中と関わりたくない

611 名前:デフォルトの名無しさん [2022/06/23(木) 12:20:08.77 ID:QS7NhMN+a.net]
安定のNHK

612 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 12:41:27.99 ID:8671gq8M0.net]
なんでココにいるのか?
ってツッコミ入れたら負けなんかなw

613 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 13:16:25.44 ID:Qj8PYDZt0.net]
ちがうでしょ、所謂かまってちゃんでしょ。
慰めてやるべき

614 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 13:34:30.38 ID:iXtKw0QdM.net]
プログラマからしたらVBAしか出来ないって使えないやつでしかないからなぁ

615 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:08:36.94 ID:SBEKkY350.net]
>>606
無知なのにテキトーに言い過ぎ

vbaは特殊で、保守がメインの現場ばかり。vba使えればそれでいい
立ち位置的にはCOBOLに近い

616 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:41:25.25 ID:RH4NXyqT0.net]
>>607
世の中を知らなすぎ
どんどんVBAは消えていってる
MSすらVBAではなくPython導入しようとしてたが、
openpyxlやxlwingsの出来が良かったのでそれらを薦めてるんだよ
突然IEのサポートが終わるとか言ってる奴くらいだぞ知らないの

617 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:45:19.51 ID:SBEKkY350.net]
>>608

だから保守メインって言ってるじゃん
新規開発なんて無く基本的に別言語とは関わりがない

618 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:51:02.16 ID:9dA5CJ8Sd.net]
そのツールでできるならどんなの選んでもいいだろ
>>608みたいなのはそんなこともわからず俺こんなの知ってるぜスゲーだろって言いたいだけのかまってちゃんだろ
VBAはそもそも基本的にWindowsPCなら入っているであろうExcelさえあれば
他に何も入れなくても使う事ができるという1点で他にはない優位性があるわけだし
職場によっては変なものを入れるのはNGみたいなところもあるんだから
そういう事も踏まえないでただ批判だけするのはおかしい話



619 名前:デフォルトの名無しさん [2022/06/23(木) 15:10:52.41 ID:Ukh7Grgra.net]
ほらな
やっぱりVBAだろ

620 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 15:22:59.47 ID:RH4NXyqT0.net]
>>609
VBAからPythonへのリファクタリングが進んでるって話だよ
リファクタリングって新規開発ではなく保守なんだけど理解できないようだしなw
今後もVBA使っていくつもりなら、
VBAがやがてどうなるとか調べるのはかまってちゃん以外でも当然の行為だろ
ましてや仕事なら尚のこと

621 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 15:38:55.20 ID:SBEKkY350.net]
>>612
へぇ、それは知らなかったわ、物知りだな~
具体的にはどんな案件がvbaからpythonになってるの?

622 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 15:45:42.70 ID:SBEKkY350.net]
エクセル・accessの簡易的・汎用的な入力方法を全部捨てて、
pythonで作り直す案件とはどういうものなのだろうか?
概算するまでもなくものすごく高くなるんだけど、一体どういう案件だとコストダウンになるのだろう?
早く回答してほしいなぁ。まだかなぁ

623 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 16:48:28.59 ID:RH4NXyqT0.net]
>>614
openpyxlやxlwingsって具体的な名前出してるのに調べたり理解できない奴が煽ってるのか
無知な上に調査も思考もできない役立たずがVBAだけで食っていくとか何の冗談だよ

624 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 17:06:30.04 ID:Qj8PYDZt0.net]
VBAだけじゃなくて、Excelの一通りの知識も必要では?
事務員なら

625 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 17:13:43.84 ID:SBEKkY350.net]
>>615
おう見落としてたわサンキューな
勉強してくるわ

626 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:20:48.18 ID:xtvi5Qi8a.net]
案件って言ってるのに
> openpyxlやxlwings
とか、アホ丸出しやんw

627 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:24:07.75 ID:SBEKkY350.net]
>>618
その単語だけで内容は伝わるよ

628 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:41:27.49 ID:T964c/cqM.net]
派遣でvbaてアホすぎるだろ



629 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:50:50.76 ID:YBqf9Go9H.net]
>>620
なんで?>>595だけどVBAやらされることもあるんだけど、、
まあ大したものじゃないけどね(^_^;)ちなみに女です。

630 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 20:41:26.32 ID:8GFyplgN0.net]
>>619
内容説明してみ
まあ必死ではぐらかすんだろうけどw

631 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 20:48:49.23 ID:SBEKkY350.net]
>>622
これがあればvbaをpythonに置き換えるコストがクッソ下がる。案件は基本的に何にでも対応できる
なかったらめちゃくちゃなコストになるから非現実的だと思ってた

632 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:09:00.04 ID:8GFyplgN0.net]
>>623
> openpyxlやxlwings
の説明なんて要らんよ
> 具体的にはどんな案件がvbaからpythonになってるの?
の回答よろしく

633 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:25:01.78 ID:SBEKkY350.net]
>>624
知らんよ。俺は見たことない

どんな案件にでも対応できるからユーザー側がpythonを指定して発注することは少ないだろう
開発側の好みでpythonを選んでいるだけだろうな
webサーバーで処理するという点ではエクセル→スプレッドシートの移行にかなり近い。

634 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:39:08.37 ID:8GFyplgN0.net]
知らんのならいちいち絡んでくるなよ...
そもそもどんな内容が伝わると思ってたんだよw

635 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:55:24.01 ID:SBEKkY350.net]
何でも低コストで作れる以上、具体的な案件なんてもう必要ないだろう

636 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 22:56:14.90 ID:Qj8PYDZt0.net]
会社の人事部の仲良い人に聞いたけど、派遣君でVBAできるヤツは希少な人材と言っていたぞ
ましてやExcel自体まともに操作できない派遣が多い中で。

637 名前:デフォルトの名無しさん [2022/06/24(金) 03:54:27.16 ID:ctS3zPLY0.net]
まぁ手広くやるかVBA極めるかだろうけどある程度は手広くやらないとね
「VBAは死ぬ」と言われてもう随分経つけど一向に死ぬ気配はないのは確かだけど
VBAしか出来ないとOfficeに乗っかったアプリしか開発出来ない井の中の蛙状態になるのも確か。

それに他言語やってるとその言語の考え方も取り入れてVBA作るようになるから何かひとつやるにしても取れる手段が増えるんだよね。

まぁ個人的にはPythonは下手に手をつけると算数しか出来ないバカな俺には数学出来ないといけないお仕事が降ってきそうでちょっと敬遠するけど。

後JAVAは個人的に肌に合わなかったのでやって良かったってなるのか分からないけど、
JavaScriptはWeb系やるならまず必須になるし、とりま後はC#辺りやっとけばいいんじゃないかと思う。

638 名前:デフォルトの名無しさん [2022/06/24(金) 04:14:34.15 ID:ctS3zPLY0.net]
後、このスレには俺みたいなジジイが結構いるみたいだから話しておくと、
遠い昔まだPCがマイコンとか呼ばれていた頃、すがやみつるって「ゲームセンターあらし」とかいう漫画描いてた人が「こんにちはマイコン」ってBASICでブロックの無いブロック崩しみたいなののプログラムを作る工程を漫画で説明しながら描いてたんだけど、
ちょっと前に「こんにちはPython 」って同じ感じの内容をPython でやってるのを出してたから話のネタに買ってもいいかも知れないよ。
ただ、新品買うほどの価値があるかは微妙だから中古でもいいと思うけど。

まぁスレ違いだからこの辺にしとくわ。



639 名前:デフォルトの名無しさん [2022/06/24(金) 04:39:40.48 ID:61TcLrsp0.net]
activecellを使って掛け算をしたい時どうすればいいのか分かりません
教えていただけたら嬉しいです。
inputboxで数値を入力してその数値を使って計算したいです。計算する時にactivecellを使いたいです

640 名前:デフォルトの名無しさん (ワッチョイ 1768-GvQ2) mailto:sage [2022/06/24(金) 07:42:23 ID:24qb8CGk0.net]
>>631
Sub foo()
Debug.Print ActiveCell.Value * InputBox("")
End Sub

641 名前:デフォルトの名無しさん (アウアウウー Sa47-vQ73) [2022/06/24(金) 09:49:37 ID:K2we1Lara.net]
こういうのが尼崎事件を起こすんだろうな

642 名前:デフォルトの名無しさん [2022/06/24(金) 12:20:36.40 ID:SlsiDUV+a.net]
需要と供給

643 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 15:06:54.11 ID:kZFfj4TG0.net]
難しい話ね。
これから他の言語も必要なら習得の必要あるしね。

644 名前:デフォルトの名無しさん [2022/06/24(金) 15:26:03.25 ID:bvc+MoD20.net]
VBA覚えるの大変ですね
理解してコピペできるくらいにはなりたい

645 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 15:31:46.16 ID:RLAl6U0RH.net]
一度VBAエキスパートとか取るくらい勉強すれば
毎回Offsetの横は行が先か列が先かどっちだったかな?って(Resizeでも同じことやってる)やってるワイでも
大体コピペで作れるくらいには成長するよw

646 名前:デフォルトの名無しさん [2022/06/24(金) 19:49:28.19 ID:bvc+MoD20.net]
>>637
ありがとう
やってみるか
参考書検討しようかな

647 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 20:26:28.92 ID:oJCwQA/d0.net]
コピペしたVBAってみんな捨てて去ってるのかな、貰ったことないかも。

648 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:29:08.60 ID:kZFfj4TG0.net]
コピペはダメと教わったがな最初の会社で。
あちぃなしかし今日は



649 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:34:54.88 ID:p6zHePCT0.net]
熱がこもって32度あるわ

650 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:35:55.33 ID:p6zHePCT0.net]
コピペしてそのまま使うことはほぼなくなる
コンパクトにまとめないと、後で見て何書いてるかわからなくなる

651 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:00:17.91 ID:oJCwQA/d0.net]
ネットにうpしてあった100行のやつをコピペして100000行にしてる、コンパクトという発想がなかったわ。そもそも意味わかんない行もあるけど消すと動かないし。
後任に渡そうと思ったけど恥ずかしいからやめとくか...。
おまえら上級者なんだね。

652 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:49:49.39 ID:ueFhN9Vh0.net]
VBAはコピペして動くからいいよな。
Pythonはだいたい動かない。
しかも、Pythonのページ作るやつて
断片的にソースを乗っけるから、なおさら動かない。

653 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:54:16.48 ID:WnxbT+0Sr.net]
コピペして動かすのって怖くないか?
少ない量ならまだしも100行だと何が起きてもおかしくない

654 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 01:09:59.54 ID:XeF3ZBAK0.net]
それを修正できるスキルがあれば別かもだけど、なかなかいないのでは

655 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 08:29:17.86 ID:hk0FSiYld.net]
ネットソースだとwsの指定とか省略されててコピペじゃ怖くて使えたもんじゃない

656 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 09:09:54.09 ID:HMw3/wS6H.net]
自分で一から書ける能力があればわざわざコピーなんざしないのさ。。。(-_-)

切り貼りつぎはぎだらけで変数の宣言がぐちゃぐちゃになってる
分かってくれる人いないかな(笑)

657 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 09:43:24.30 ID:XeF3ZBAK0.net]
独創でコード書けないと保守で詰むでしょ。

658 名前:デフォルトの名無しさん [2022/06/25(土) 10:00:09.34 ID:kapo/xgia.net]
コピペが悪いのではなく、コピペで作ったコードを自分が提供した責任があるのだよ



659 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 10:15:11.28 ID:HMw3/wS6H.net]
>>649
自分だけで時間短縮のために使ってるマクロだからそんなに困らないよ

みんなに配布するレベルはこれからもしないと思う^^

660 名前:デフォルトの名無しさん [2022/06/25(土) 10:49:20.62 ID:Wc9Qs34b0.net]
>>648
分かるけど理解はしない
それを許したらそこでおしまい

661 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 10:54:34.90 ID:PITDVbGU0.net]
まあ自分で使うだけならいいんじゃね

662 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 12:26:01.77 ID:W4jZJdCLd.net]
書ける能力あっても今までに作ったコードをコピペするだろ?
場合によっては共通関数の入ったモジュール程度を持ってくるにしても
お前らもしかして同じこと1から書いてるの?

663 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 12:41:36.76 ID:7YC4We+Er.net]
別部署に行って、「規則が変わるからこのマクロも修正してくれ」って言われ、中を見てみたらセレクトメゾットやコピーメゾットが使われてた時の絶望感
「クリップボードの履歴を有効にしていると正常に作動しない事があるから必ず無効にしてくれ」ってそれ書き方おかしくないか?
そして変数の宣言が強制されていなくて更に絶望する

664 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 12:56:07.50 ID:Fu1pMYi/M.net]
>>655のレベルもたぶん似たようなもんだよ

665 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 14:57:17.56 ID:XeF3ZBAK0.net]
>>654
と言うより、作って使用したらマクロは消しているのです。
再び必要になったら1から書いてますはい。
職場のローカルルールとして。

666 名前:デフォルトの名無しさん (ワッチョイ 3f7c-PGuA) mailto:sage [2022/06/25(土) 17:13:39 ID:ehcxDoIm0.net]
>>657
ないわー
関数自体が使いまわし前提の考え方だし

667 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:43:12.02 ID:hk0FSiYld.net]
>>654
理解しないでコピペするか理解して書いたコードを使い回すかの差は途轍もなく大きい

668 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 18:56:11.02 ID:XeF3ZBAK0.net]
それどころか回りの奴らはVBAにしろExcelの学習すらやろうとしない。
仕事終わったら飲みに行く事しか考えていない。休日も何も努力しない現実。
興味ないヤツには進めてもダメなのかな



669 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:21:59.19 ID:WbawSRHfM.net]
VBA使いに向上心を求めるのは酷でしょ
それがないからこそVBA止まりなのに

670 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:29:35.48 ID:Ujo38STt0.net]
>>660
自分が使うのは勝手にしろだけど、それで優越感に浸って「周りの奴らは~」とかキモすぎだろ
たかが仕事で使うの1つのツールごとき にここまでイキれるのはヤバいわ

671 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:31:08.83 ID:tv1Cabyi0.net]
他はすべて負けてるから何か一つでも勝てるものがほしいんや

672 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:32:27.25 ID:xn3lQ0RO0.net]
レスバで勝てば世界ランクあがるしな

673 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:44:09.88 ID:VazVwqbS0.net]
>>647
それってコピペしただけじゃ動かないってことよね?
動くように自分で指定すると思うんだけど、こわいってのはどういう事なんだぜ?

674 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:53:20.34 ID:Of9vbGQH0.net]
>>663
負けの数ではお前が一番だ

675 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 22:26:51.85 ID:XeF3ZBAK0.net]
勝利するかために複雑な知識や技術を身につけているのだが??
間違ってる?

676 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 22:29:13.51 ID:hk0FSiYld.net]
>>665
wsを指定しないとActiveSheetで動こうとするから誤作動の原になる

677 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 00:40:58.82 ID:NOZ7SEa20.net]
Webbrowserで証明書を自動選択する方法は無いものでしょうか?

678 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 00:44:34.36 ID:NC1QoP++r.net]
>>667
誰に勝利するの?
何に勝利するの?



679 名前:デフォルトの名無しさん [2022/06/26(日) 07:38:11.30 ID:5vPg/0Rp0.net]
他言語やったからって
excelやVBAでやったことが無駄になることはないよ
他の言語で作ったもののUTのエビデンスをとるのに
excelがもし無ければと思うとゾッとするし
テストデータ作成にもVBA使うととっても便利な場合が多いし

680 名前:デフォルトの名無しさん (ワッチョイ 8f63-BYhf) mailto:sage [2022/06/26(日) 09:43:13 ID:/e5N//9v0.net]
エクセルのある列に数字が入ってます。
そのエクセルと同じ階層にあるフォルダの下に
上記の数字から始まる名前のフォルダがあります。
(数字のあとに日本語が付いてます)
このフォルダの探し方を教えていただきたく

681 名前:デフォルトの名無しさん (ワッチョイ 0f63-BYhf) mailto:sage [2022/06/26(日) 09:45:37 ID:Xa6L6yDT0.net]
会社のパソコンでVBAを使って
pdfをテキストへ変換しています。
(com.adobe.acrobat.plain-text)
変換処理は不安定でエラーが出ることが多いが
成功することが多いです。
しかし有料ライセンスは一切買ってもらっていません。
これはライセンス違反ですよね??
違反ならもうやめます。

682 名前:デフォルトの名無しさん (ブーイモ MM5f-c/Mv) [2022/06/26(日) 09:56:38 ID:IFq6Yt8DM.net]
>>672
num=cells(行,列).value
dirname=dir(thisworkbook.path&"\"&num&"*",vbDirectory)

683 名前:デフォルトの名無しさん (ブーイモ MM5f-c/Mv) [2022/06/26(日) 09:59:07 ID:IFq6Yt8DM.net]
dirname=dir(thisworkbook.path & "\" & num & "*", vbDirectory)

684 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 10:18:26.90 ID:6drPPg2U0.net]
>>673
PowerQueryでもAdobeのAcrobatなしで
pdfをある程度変換出来るけど?

685 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 10:25:43.07 ID:yfX3wl/l0.net]
>>673
adobeに聞けとしか

686 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:39:03.04 ID:XMcnD9d40.net]
EULA読んでダメって書かれてなきゃいいだろ

687 名前:デフォルトの名無しさん [2022/06/26(日) 12:11:58.60 ID:hFDBYOe90.net]
クラスが入ってるCollectionの要素を置き換えるにはどうすればよいでしょうか?

Set col(2)=New MyClass()

とやってもできないんです。

688 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 12:23:08.37 ID:tixRR40Y0.net]
置き換えはダメだからRemoveしてAdd



689 名前:デフォルトの名無しさん [2022/06/26(日) 13:30:17.16 ID:hFDBYOe90.net]
>>680
そうですか
ありがとうございます

でもなぜ置き換えできないのでしょう?
そのしくみを理解したいのですが
スキルがあがるステップだと思うので

690 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 13:35:51.31 ID:VKkh0pnir.net]
IEの入力欄に値いれるマクロ使ってたんだけど、エッジに移行して動かなくなったんよ
エッジの入力欄いじる方法ってご存知ないですか?
調べてもよくわからなくて

691 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 13:39:54.64 ID:PhXCrOZEd.net]
VBAを投げ捨ててEdgeの拡張機能を作ろう

692 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 14:11:21.83 ID:1bCfGQVkd.net]
Sendkeys

693 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 15:05:50.62 ID:WjaufMigd.net]
まだInternetExplorer.Application は有効でしょ
サポートは切れたが動かなくなる訳ない

694 名前:デフォルトの名無しさん [2022/06/26(日) 15:26:20.76 ID:hFDBYOe90.net]
なぜMsedge.Applicationにしないの?

695 名前:デフォルトの名無しさん [2022/06/26(日) 15:32:17.63 ID:hFDBYOe90.net]
クラス(例:MyClass)が入ってるCollectionの要素(つまりMyClass)をある条件でsortしたいのですが
簡単な方法はないのですよね?
これは標準モジュールにそのソート用のsubかfunctionを書くのが一般的ですか?
「ある条件」というのが複数あるので、複数個それを作るのが面倒。
あといま思い付いたけど、そのCollectionをメンバとして含む親クラスをつくり、その親クラスにその複数のsortに相当するfunctionを作るのがカッコイイです?

696 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 18:21:23.39 ID:WjaufMigd.net]
たぶん用途的にArrayListが良いと思う
>>687

697 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 21:43:05.30 ID:h799Melv0.net]
VBAのマクロ名てなにか制限ある?
Sub n98()
MsgBox "a"
End Sub
というマクロを作ったんだが、実行できない。実行ボタンがグレーアウトする。
しかも、マクロボタンを押すとセルカーソルが彼方に飛ばされるんだが

698 名前:B
https://i.imgur.com/7iCfenT.mp4
[]
[ここ壊れてます]



699 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 22:29:47.48 ID:UUS+pyK9H.net]
>>689
ワイはそのコードコピペしたらちゃんと動いたよ
モジュールのコード上でF5キー押してみたら?

700 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 22:31:36.52 ID:UUS+pyK9H.net]
マクロ名の制限ももちろんあるよ
ググればすぐ出てくるはず

だけどこのコードのマクロ名は問題無い

701 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 22:39:05.59 ID:h799Melv0.net]
>>690
VBEでF5なら動くが、
エクセル本体で開発タブのマクロボタン押すとああなる。
ちなみにバージョンは2013。
マクロ名が英字2字+数字だと、マクロボタン押すとそのアドレスのセルに飛ばされるな。
もちろんマクロは実行できない。
そんな制限あったけ?
セルのアドレスて「予約語」になるのか?

702 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 23:12:48.18 ID:47IFcp1V0.net]
>>689
excel2010だけど全く同じ現象が起こるわ
F5からじゃくてAlt+F8な

703 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 23:30:30.80 ID:CNfWwh200.net]
この画面開いたらn98セルに行って勝手に選択(コピー?)してくれる
https://i.imgur.com/8G6jMt0.png

逆に、alt+f8でマクロを開いた状態でセル選択するとテキストボックスに反映されるので、
ここは参照かなにかで連動してるっぽい
https://i.imgur.com/cIRhTsz.png

704 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:11:11.91 ID:KEClHONvr.net]
>>694
予約語とかセル番地名、数字始まりは駄目

705 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:18:40.52 ID:pJh/2YwLH.net]
>>695
セル番地もダメだったのか、ウソついてごめんなさい

706 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:20:43.06 ID:kD2T1aicd.net]
セル番地名ってダメだったのか

707 名前:デフォルトの名無しさん [2022/06/27(月) 07:28:39.14 ID:JHJu1s6G0.net]
For each i in collection
 if a=1 then
  if b=1 then
   if c=1 then
    Debug.print "うんこ"
   end if
  end if
 end if
next i

こんな階層はしないほうがいいですか?もしそうならどうすべきですか?
ちなみに実際の条件文はa=1などのように単純ではなくてもっと複雑怪奇で長い文字列です。

708 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:42:09.30 ID:/YUVVdlZD.net]
インデント揃えてれば良いんじゃない?
それかある程度深くなったら別ルーチンや関数に飛ばすとか



709 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:44:02.36 ID:cx09ANOo0.net]
if a=1 and b=1 and c=1
にすればすっきり

710 名前:デフォルトの名無しさん (スプッッ Sdbf-tCSL) mailto:sage [2022/06/27(月) 08:00:18 ID:qwmHCu1Hd.net]
>>700
VBAはショートサーキットじゃないから遅くなる

711 名前:デフォルトの名無しさん (ワッチョイ 3f01-DrrO) mailto:sage [2022/06/27(月) 08:05:04 ID:3L19Fpz+0.net]
>>695
それどこかに書いてある?
まあ予約語や数字始まりがダメなのはわかるけどセルアドレスは盲点だわ

712 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:20:29.88 ID:WYWqaC3Yd.net]
>>698
何がしたくてそのIF文を書いてるかわからないけどELSEに対しての記述がなければ>>700みたいな書き方にしてもいいけど
自分はその程度のネストは許容範囲だけどね
それとなんでしないほうがいいと思ったかも書くと他の回答もらえるかもね

713 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:26:36.50 ID:iDqL/u9w0.net]
年取ると4階層なんかもう見たくない

714 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:27:26.36 ID:HPVEPi/ad.net]
Excel2021でも再現したわ
セル番地はモジュール名にできないのか、知らんかった

捨て変数とか作業ファイル名なんか普通にaaa1とか使ってるから、いつひっかかってもおかしくなかったのに
思い返してみると、なぜか捨てSubはtest1とかmacro1にしてた

715 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:31:15.07 ID:iDqL/u9w0.net]
今わかってる範囲では、モジュール名にできるけど挙動が少しおかしくなる
避けられるなら避けたほうが無難だろうね

716 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:34:13.54 ID:Kt0Hv+oPd.net]
>>692
英字1文字でも3文字でも飛ばされる
なんかの裏技に使えそうな気がする
遠くのセル範囲をちょっと確認したいとか

717 名前:デフォルトの名無しさん [2022/06/27(月) 09:36:09.63 ID:kVADuAyl0.net]
>>698
いわゆる早期リターンとかガード節ってやつ

For Each i In Collection
If a <> 1 Then GoTo continue
If b <> 1 Then GoTo continue
If c = 1 Then
Debug.Print "OK"
End If
continue:
Next

718 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:50:33.84 ID:WYWqaC3Yd.net]
>>708
自分としてはもともとの判定を変更するような回答はどうかと思ったりするんだよね
複雑怪奇とかいてるのでわかりやすい回答なら「if not (a = 1) then」にしたほうがいいのではないかと
それとそこまで書いたらcの判定もcontinueで飛ばしたほうがすっきりするかと



719 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:53:16.46 ID:H4LNDdnJ0.net]
>>707
マクロじゃなくてジャンプでいいってなるんじゃ

720 名前:デフォルトの名無しさん [2022/06/27(月) 10:00:09.47 ID:Do3p35pda.net]
>>698
内容がわかるようにコメントつければいいんじゃね

721 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 10:15:26.20 ID:3L19Fpz+0.net]
>>705-706
モジュール名にはできないけど>>694のは手続き名だからモジュール名で修飾(※)すれば呼び出せるよ
※ マクロ名の欄に直接 Module1.n98 のように入力する

722 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 10:19:02.79 ID:iDqL/u9w0.net]
>>712
スマン、勘違いしてた

723 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 10:24:13.47 ID:3L19Fpz+0.net]
>>698
一般論としてネストは浅い方が理解しやすいからそのコードであれば>>700>>708みたいにした方が読み易い
ただ>>701が言うようにVBAにはショートサーキット(短絡評価)がないので遅くなるのはいいとしても
If N <= UBound(A) And A(N) = 1 Then ...
みたいなのは
If N <= UBound(A) Then
If A(N) = 1 Then ...
のようにする必要がある

724 名前:デフォルトの名無しさん [2022/06/27(月) 10:29:53.48 ID:kVADuAyl0.net]
まあ、複雑な判定するならメソッドに切り出すのが間違いないわな
VBEだとIDEのサポートないから若干めんどくさいけど

725 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:00:14.42 ID:tRNW+/P90.net]
>>698
賛否あると思うが
For Each i In Collection: Do
 If a <> 1 Then Exit Do
 If b <> 1 Then Exit Do
 If c <> 1 Then Exit Do
 Debug.Print "OK"
Loop: Next
みたいな書き方もある

726 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:01:13.33 ID:tRNW+/P90.net]
最後の行間違えた
Loop Until 1: Next

727 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:05:37.12 ID:zkyvRAcfa.net]
あんまりにもネストするなら、判定文(if複数)だけ別プロシージャ(Function)として外出しして、TrueかFalseを返させるようにするかな
IsGoukaku みたいなプロシージャ名にすると何したいかがわかってメンテ楽だし

728 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:29:16.42 ID:gUdOjGv30.net]
セル番地がダメならダメでいいけど、あんな挙動をするのはバグだよ。
本来はメッセージだして弾くべきじゃね?
office365でも同じならだれかMSにチクってみてくれ。
以前、MSの掲示板にWinの不具合を書いたら、
速攻で消されたが、
こっちでも確認できたから開発にレポしといたていうメールが来て感動したわ。



729 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:31:14.56 ID:iDqL/u9w0.net]
>>719
365でも同じだよ

730 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:34:53.87 ID:gUdOjGv30.net]
>>700
if a=1 and b=1 and c=1
にすると内部では判断を3回することになる。

if a=1 then
if b=1 then
if c=1 then
にすると判断は少なくなるのだから、ネストするほうが正解じゃね?
もちろん、ifを書く順番は判定が少なくするようにする必要はあるが。

731 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:48:23.44 ID:Fr547gX6r.net]
>>719
ゆうてVBAとかアプデすんの?

732 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:52:04.31 ID:iDqL/u9w0.net]
してるよ

733 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:52:52.11 ID:nfvw1vkN0.net]
セキュリティ以外で?

734 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:57:18.86 ID:iDqL/u9w0.net]
うん

735 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:59:27.42 ID:iDqL/u9w0.net]
頻度はwindoewsやエクセルに比べたらかなり低いけど、やってるよ
確かちょっとずつ便利になってる。本当にちょっとだけ。関数が増えたりはしていないはず。
ソース探したけど見つからねぇ

736 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 12:02:08.29 ID:nfvw1vkN0.net]
ふーん。。
まあ元号はあったね。。
古臭いよね。。

737 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 12:04:52.44 ID:nfvw1vkN0.net]
言語仕様っぽいページはあった
https://docs.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb-9c7a-fd9502722c74

結局代替がないからなあ

738 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 13:50:25.11 ID:FDoLWwM/d.net]
>>718
俺も大体これでやってる



739 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 19:05:07.99 ID:IOT9Z53O0.net]
>>698
そもそもi使ってねーじゃん

740 名前:デフォルトの名無しさん [2022/06/27(月) 19:57:12.47 ID:UdQiWAN30.net]
どなたか教えてください。

売掛金消し込みのマクロを作成しています。VBAでソルバーを自動化したいと思っています。

目的セル、制約条件の参照セルの開始行が40行ごとに下がっていき、指定値は数値ではなく、セルを指定したいです。

とりあえず、全部の変数をvariant型にしてますが、なかなか上手くいきません。

741 名前:デフォルトの名無しさん [2022/06/27(月) 20:18:45.52 ID:UdQiWAN30.net]
731です。

sub ソルバー()

dim 振込1 as variant
振込1=worksheets("ソルバー").range("n2:n8")

solverok setcell:= worksheets("ソルバー").range("i3"),
maxminval:=3,
valueof:=振込1,
bychange:=worksheets("ソルバー").range("e2:e40"),
enginedesc:="grg nonliner"


solveradd celreff:=worksheets("ソルバー").range("e2:e40"),relation:=4

solversolve userfinish=true

742 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:22:23.17 ID:jYXkLZ/o0.net]
で、何がうまくいかないの?

743 名前:デフォルトの名無しさん [2022/06/27(月) 20:26:50.30 ID:UdQiWAN30.net]
>>733

ソルバーを実行しても、目的セルが0のままで指定値にと一致する金額の組み合わせが見つかりません。

どの請求分の入金なのか、突合したいです。

744 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:35:36.69 ID:9IVJ+eiIa.net]
>>734
ソルバーわからんから確認させてください
振込1って変数は配列に入れた値を指定したいものですか?それともセル自体を指定したいものですか?
前者であればそれでいいですが、後者なら変数はRange型にする上で代入時に
Set 振込1 =〇〇
としないといけませんが…

745 名前:デフォルトの名無しさん [2022/06/27(月) 20:37:19.75 ID:UdQiWAN30.net]
連投すみません。

変数宣言して、for〜next構文でe列を("e"&i+40)や、n列も("n"&i+40)みたいにしたいんです。

d列には請求金額、e列は空白、目的セルにはsumproduct関数が入ってます。

指定値セルはn2:n8で、それぞれ違う金額が入力されてます。入金額とn2:n8内の金額が一致する組み合わせの請求金額をVBAを使って、求めたいです。

746 名前:デフォルトの名無しさん [2022/06/27(月) 20:39:44.13 ID:UdQiWAN30.net]
>>735

ありがとうございます。
ヘルプを確認したら、指定値はバリアント型で書けとあったので、なんとなくvariantにしていました。

747 名前:デフォルトの名無しさん [2022/06/27(月) 20:45:55.27 ID:qw9z/asOd.net]
>>737
マルチ死ね

748 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:58:49.57 ID:jYXkLZ/o0.net]
とりあえず、rangeで回すんじゃなくてcellsで回したら?
n列はcells(i,14)
e列はcells(i,5)で



749 名前:デフォルトの名無しさん [2022/06/27(月) 21:09:33.28 ID:UdQiWAN30.net]
>>739
sub または functionが定義されませんエラーが出ます…

750 名前:デフォルトの名無しさん [2022/06/27(月) 21:10:43.06 ID:UdQiWAN30.net]
>>739

cellsも以前試したんですが、上手いこといきませんでした

751 名前:デフォルトの名無しさん [2022/06/27(月) 23:45:06.09 ID:8dHt2RWvM.net]
こんな奴が作るプログラムで金勘定とか笑えるわ
己を知らないって馬鹿の特徴なんだよな

752 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 00:04:39.14 ID:41/DPGawd.net]
ソルバーってカタカナで書くの余計分からないよ
素直にSolverで良いだろうに

上の困ってるのは一旦マクロの記録で動作確認お薦め

753 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 00:07:49.75 ID:bUNh/khy0.net]
>>742
2行目はよく解る www

754 名前:デフォルトの名無しさん [2022/06/28(火) 05:51:37.94 ID:kKObdKOQ0.net]
オレオレ詐欺の手伝い?

755 名前:デフォルトの名無しさん [2022/06/28(火) 07:36:23.45 ID:XbsSoqMza.net]
>>736
なんで会計ソフト使わないの?

756 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 07:54:25.17 ID:2SIMEAUf0.net]
Excelは万能ではないから会計ソフトでやるべき事柄

757 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 08:48:25.11 ID:8yuWSL180.net]
この世で最高のコードを見かけた

With Range("F27:F56")
.Value = .Value
End With

758 名前:デフォルトの名無しさん [2022/06/28(火) 09:10:04.94 ID:3ZxXgE6I0.net]
>>748
それの意味解る?
ちょっと前に同じ様なコード載せてた人いたけど
複数範囲は一度に設定できないって嘆いていたよ



759 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 09:10:36.27 ID:a//tJk240.net]
>>732
solverを使うときのパラメーターの設定の方法が間違ってんじゃない。多分値渡しではなくsetを使うと思うよ。
まずマクロの記録もう使ってなんでもいいからsolverで問題を解いてみて、solverを使うときの正しいVBA の書き方を確認しなさい。

760 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 09:52:29.46 ID:qOxYqvDuM.net]
>>698
Ifなんたらかんたらを使わないで
B2になんか文字が入っていたらC2を
B3になんか文字が入っていたらC3を…

をスマートに書くならどう書きます?

https://i.imgur.com/5VtTNti.jpg

761 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 11:02:29.10 ID:1UWi0IGcd.net]
>>751
こんな質問してマウントとりたいんだろうか・・・
こんな質問するならそのスマートな回答も書いておけばいいのに

762 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 11:15:10.25 ID:cqDrGvOU0.net]
VBA使わなくてもセルに関数書いときゃいいんじゃね

763 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 12:14:32.96 ID:S7aFTH1NM.net]
>>751
お前Access VBAスレにExcelの質問書き込みするんじゃねーよ
迷惑だ

764 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:20:05.57 ID:mlWlUbMB0.net]
すみません、神様達、教えてください

エクセルVBAでは
関数内関数はどうやって作れますか?
また複数の関数を目的別に整理する方法として
パッケージやモジュール単位にまとめたり
マップに収納したりはできるのでしょうか?

765 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:52:33.73 ID:fjXXNeRNM.net]
>>755
できる

vbeエディタウインドウを凝視しているとやり方が判るはず

766 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:59:52.62 ID:8yuWSL180.net]
>>756
具体的にやり方を教えてあげなよ

767 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 18:51:45.14 ID:gpLDnVSMr.net]
>>755
関数内関数ってこれのこと?
https://www.sejuku.net/blog/28904

768 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:15:28.84 ID:+0CREnk7H.net]
>>756
ちょっと凝視してみます

>>758
疑似コードですけど例えば、
Function out()
 Function in1()
 End Function
Dim a=Function in2()
End Function
out=Array(in1,a)
End Function

みたいな感じで
関数outの中に関数in1を宣言したり
変数に関数を代入して、returnしたりしたいのです



769 名前:デフォルトの名無しさん [2022/06/28(火) 19:22:25.73 ID:EFCYXnQm0.net]
ローカル関数もサポートされてないし
関数をオブジェクトとして扱えないので変数への代入も無理です

770 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:22:27.90 ID:+0CREnk7H.net]
>>756
標準モジュール単位で関数をまとめればいいってことでしょうか?

771 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:29:24.91 ID:+0CREnk7H.net]
>>760
ありがとうございます
なるほどです
すっきりしました、神様ありがとう

モジュールを使いながら関数を整理するか
関数用にファイルを作って管理するかします

772 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:14:33.61 ID:a//tJk240.net]
>>761
正解です

773 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:14:53.99 ID:a//tJk240.net]
それからモジュールには適当に名前を付けることができますので

774 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:17:06.37 ID:8yuWSL180.net]
関数内関数ってのは、関数の中で定義する関数のこと
phpだと

sub foo1
if a = b then

 sub foo2
  foo2=1
 end sub

else if

 sub foo2
  foo2=2
 end sub

end sub

みたいなことができる
あんまやらんけど

775 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:22:34.06 ID:a//tJk240.net]
>>759
関数内関数をそこで書いているようなやり方ではできないけれど、どうしてもやりたければ vbe オブジェクトを定義してそこにコードを書き込むという疑似なやり方はできる。あるいはコードを作成するプロシージャを作成してそのプロシージャを呼び出して引数を渡してコード作った後、そのコードを呼び出すみたいなことはできるのかもしれない。
コードを実行中に別のコードを作成するという経験がないんでエラーが出るかどうかは分からない。

ただ面倒だし見通しも悪くなるんで外側で関数を定義した方が簡単だと思うんだけれどなぜ関数の中で関数を定義したいのでしょうか。

776 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:32:39.05 ID:+0CREnk7H.net]
>>766
ありがとうございます
vbaがエクセル前提の言語と考えると
私が考えているような関数は使うべきでもないのだなって思いました

神様たちのアドバイスに感謝です
ありがとうございました

777 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:42:12.06 ID:+0CREnk7H.net]
>>765
ありがとうございます

778 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:50:26.07 ID:+0CREnk7H.net]
>>766
なぜ関数の中で関数を定義したいのか

すべての関数を同列に記載すると見通しが悪い気がして
例えば数式に関するものなら、calcurationでまとめ
出力に関するものなら、printでまとめ
保存に関するものなら、saveでまとめ
っていうように、目的別、機能別、階層別に関数をまとめると
後で見直したときに分かりやすいかなって

さらにfacadeみたいに間口を作れば
拡張も修正もしやすいかなって思いまして



779 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:56:44.33 ID:8yuWSL180.net]
>>755
>関数内関数はどうやって作れますか?
関数内関数はない
classは貧弱だけど、ある
ただvbaそもそもの概念として、エクセルのスクリプトであるという点がある
あんまり大きなclass作りたいなら、別言語の方が良いと思う
エクセルvbaはゲームとかもキツイ(メインloopが超貧弱でvbaを起動しっぱなしだとよく落ちる)

>また複数の関数を目的別に整理する方法として
>パッケージやモジュール単位にまとめたり
>マップに収納したりはできるのでしょうか?
標準モジュール単位でまとめられるけど・・・
エクセルvbaの標準モジュールは「どのシートにも共通する処理」のような意味合いで用いられる

よくも悪くも、vbaはエクセルのためにあるので
あまり壮大な事をするのには向いていない

780 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:59:53.87 ID:+0CREnk7H.net]
>>770
class調べてみます!
モジュールとclassが使えれば
見やすいコードかけるかも!

そんな壮大なプログラムを作るつもりなないのですけど
一処理、一関数にしたいとなると
ある程度の単位で処理をまとめていきたいなって

ご丁寧なご解説に感謝です
ありがとう、神様!

781 名前:デフォルトの名無しさん (ワッチョイ ff02-tQxS) [2022/06/28(火) 21:13:22 ID:i28fB/zi0.net]
>>750
アドバイスありがとうございます!

入金消し込みの自動化をせよと上司からの指示で、初心者なりになんとかやってるんですが、会計ソフトの会社でもお手上げな仕組みの売掛金管理のようです。

setとcellsでなんとか、試行錯誤してやってみようと思います!

またわからなくなったら、質問させて頂きます。

782 名前:デフォルトの名無しさん (アウアウウー Sad3-/ybv) mailto:sage [2022/06/28(火) 21:26:40 ID:WQvDBuzoa.net]
十年近くぶりに触るし上級者だったとかじゃないけど
VBAで
今開いてるPhotoshopの選択しているレイヤーを基準にExcelの指定セル範囲(例:A1からA20)を1セルごとにレイヤーを1枚作りセルの中身を文字ツール(テキスト)でレイヤーを作成。
例:ExcelのA1に「あいう」、A2に「えお」、A3に「123」が入力されていたとし、指定範囲選択(A1〜A3)を、開いてるPhotoshopにレイヤー追加しながらテキストレイヤー「あいう」、「えお」、「123」を作る(計3枚)。その際、Excelに近い見た目の形で…この場合、横に少し間隔を空けて「あいう」「えお」「123」が並ぶように作成する。(文字の大きさや色は直前に使ったpxサイズ、色とする)
って出来ますか?

783 名前:デフォルトの名無しさん (ワッチョイ 3f4f-60CD) [2022/06/28(火) 21:45:50 ID:3ZxXgE6I0.net]
いや、関数内関数?
まぁ似たようなものはあるよ。
GOSUBってのが。

ただ、これも負の遺産のひとつだから
あまり使うことはお勧め出来ないけど。

784 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 21:52:47.26 ID:/U22FX/80.net]
gosubは全然違うでしょ

785 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 22:11:43.10 ID:GB8Zx7jKM.net]
関数内関数いわゆる高階関数について、VBA関数には高階関数のための機能は無いけどワークシート関数のLAMBDAが該当する

786 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 22:18:47.50 ID:8yuWSL180.net]
確かに!その発想は正解だが・・・だが・・・

787 名前:デフォルトの名無しさん [2022/06/28(火) 23:36:42.40 ID:EFCYXnQm0.net]
>>773
COM経由で操作できるっぽい。こんなのが引っかかった
https://minatoya.work/419/

788 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 07:26:36.96 ID:f9LCV9hba.net]
>>776
お前名前に騙されやすいタイプだろw
LAMBDA は単なる関数定義で VBA スレ的にはユーザー定義関数と変わらんぞ
ユーザー定義関数はマクロブックにしか入れられないから LAMBDA が作られた



789 名前:デフォルトの名無しさん (ワッチョイ 7fda-eqyh) mailto:sage [2022/06/29(水) 08:15:54 ID:SMNkprrA0.net]
他のプログラミングと同じだと思われているのかな LAMBDA 関数は

790 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:48:09.67 ID:sZpGYWcf0.net]
ユーザー定義関数では(コーディング時に)関数を自作することはできるが、(実行中に)関数内で関数を定義したり
(実行中の)関数の引数に関数そのものを与えるたりすることはできない
そもそもユーザー定義関数とLAMBDA関数はまったく別のもの

Excelの新関数「LAMBDA」(ラムダ)が一般提供開始 ~Excel数式が本格的なプログラミング言語に
https://forest.watch.impress.co.jp/docs/news/1387035.html

791 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:51:20.38 ID:GuRBEGnka.net]
>>778
ありがとう
そこのページ起点に頑張ってみる

792 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:55:02.95 ID:8rr9zLPCM.net]
関数型パラダイムをサポートしている言語か、最低でもC言語などで関数ポインタを使ったことがある人でないと高階関数の概念は理解が難しい

793 名前:デフォルトの名無しさん [2022/06/29(水) 10:34:47.30 ID:7c8LgVFIa.net]
privateで良くないか

794 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 12:27:16.10 ID:f9LCV9hba.net]
>>781
高階関数の話ならそこに書いてあるMAPとかSCANがLAMBDAを受けられる様になったことを言うべき
あと関数内関数と高階関数は全く別物だし実行中に定義できるか

795 名前:かどうかも関係がない []
[ここ壊れてます]

796 名前:デフォルトの名無しさん [2022/06/29(水) 13:48:20.01 ID:Es0nfTu8a.net]
記者がアホなんやで

797 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:05:01.02 ID:SMNkprrA0.net]
ネットの記事って怪しかったり間違っているのが多々あるよね

798 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:22:16.06 ID:3IrndTU40.net]
ネットの記事だけがそうだと思ってる?



799 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:30:17.44 ID:par7A0IW0.net]
はい次の方

800 名前:デフォルトの名無しさん [2022/06/29(水) 14:59:30.13 ID:0RCF24VI0.net]
.Netでもひとつの壁と言われているラムダ式が
VBAどころかEXCELで使えるようになるのか。
胸熱だが脱落者も増えるだろうな。

801 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 15:07:56.16 ID:Ajq9RLSRM.net]
一般的な意味での高階関数は数学的な抽象概念としての話ではあるけど、プログラム言語としては第一級関数の実装のことを言う場合が多い
(C言語の関数ポインタのように擬似的に実現する方法もある)

高階関数
https://ja.wikipedia.org/wiki/%E9%AB%98%E9%9A%8E%E9%96%A2%E6%95%B0

第一級関数
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E9%96%A2%E6%95%B0

802 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 15:09:05.56 ID:JurptZkT0.net]
脱落者なんて増えないさ
世の中にエクセルの全機能使いこなしてる奴なんていないからな
理解できない機能は使われないだけだよ

803 名前:デフォルトの名無しさん [2022/06/29(水) 17:35:51.56 ID:0RCF24VI0.net]
>>791
読んでてよく分からんかったけど
要はアセンブラでいうところのアドレスの間接参照とか
間接修飾とか言われているやつで
.NetではDelegate、VBAではCallByNameによるコールバックって理解でいい?

804 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 17:43:32.68 ID:8wQcCZ0gd.net]
VBAでできない事をダラダラと話さず別スレいけばいいのに

805 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 17:56:17.53 ID:vfJ3sAv3M.net]
Excelで例えるなら関数を特定のオブジェクトのメソッドとしてではなく、それ自体を実体のあるオブジェクト(あるいはコレクション)と見做すようなもの
利用側の関数内で関数オブジェクト(のようなもの)を参照する手段として関数そのものをラムダとして扱う

806 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 18:54:09.74 ID:zPLPBKg6H.net]
エクセルもVBAも詳しくないんですけど
VBAは非同期処理でコールバック関数を使わないんですか?

807 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:06:05.99 ID:tW8kR1cqM.net]
イベント駆動型ですから

808 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:13:20.08 ID:i0xj9Opya.net]
>>794
高階関数っていうのを最近覚えたんだろうな
関数内関数に1mmも関係ないのにしつこく語ってる
他の言語スレだと瞬殺されるレベルだからこんなスレで管巻くしか無いんだろうw



809 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:15:29.13 ID:uu2mw40gD.net]
>>796
使おうと思えば使える

810 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 21:47:59.24 ID:zPLPBKg6H.net]
>>799
コールバック関数を使えるのなら
引数に関数参照できるということです?
なら変数に関数を代入できそう

811 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 21:55:21.60 ID:zPLPBKg6H.net]
>>797
非同期処理はイベント処理に依存してるってことでしょうか?
コメントありがとうございました
VBA初心者なのでいろいろ勉強していきます

812 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:13:03.71 ID:sZpGYWcf0.net]
>>800
特定のオブジェクトやクラスに所属する関数やAPIなどシステムで定義された関数(メソッド)であればコールバック関数で参照することはできる
グローバルのユーザー定義の関数はラムダ式で記述するなどの手段を使わない限りは無理

813 名前:デフォルトの名無しさん (ワッチョイ 4f2f-BYhf) mailto:sage [2022/06/29(水) 22:45:43 ID:JurptZkT0.net]
コールバック「関数」とはなにを指してるんだろうかねぇ

コールバックを実現する手段はイベント以外に
CallByNameとかApplication.Runとかでまあ実現できなくはない

814 名前:デフォルトの名無しさん (JP 0Ha3-tCSL) mailto:sage [2022/06/29(水) 22:55:30 ID:zPLPBKg6H.net]
コールバック関数は何を指しているのか
なぜラムダ式が存在するのか
即時関数とラムダはどこから分岐していったのか
関数プログラミングは本当に有益なのか
本当に変数は悪者で動的型付けは悪なのか
それらはもはや哲学なのかもしれません

815 名前:デフォルトの名無しさん (ワッチョイ ff68-TsA2) mailto:sage [2022/06/29(水) 23:01:15 ID:L0Xzxy470.net]
慣れれば別にどっちでも・・・って感じになるけどな

816 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 23:50:10.86 ID:HQQahVZ60.net]
>>783

自作の階乗作らせりゃ一発だろ。Cの関数へのポインタとか、可読性0に近い。組んでて楽しいけど、1ヶ月後の自分はこれを理解できるだろうかという疑問が湧くw

817 名前:デフォルトの名無しさん [2022/06/30(木) 05:47:49.15 ID:P7B/AZjs0.net]
まぁでもあんまりVBAでコールバック使う機会ないかな
呼び出しや生成元のモジュール側の関数を
呼び出された側や生成された側から呼び出すときに
密結合になるのを避けるためくらいにしか使ってない

818 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:16:43.81 ID:1TbRNwlJH.net]
>>807
エクセルVBAでDBのデータやファイルデータを読み込むとき
非同期にならないように処理するってことなんでしょうか?
例えばフラグを立ててdo-while、breakで処理待ちしてから次の処理に進むとか?
webのように処理と表示のタイムラグを気にするようなことがないのかもしれませんね



819 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:32:44.20 ID:wDIpT9iQ0.net]
それすんごい資源食わないか?

820 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:37:53.64 ID:1TbRNwlJH.net]
>>809
vbaはコールバックを使わないということらしいのですが
コールバックを使わずに非同期処理する方法があるのでしょうか?

821 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:47:00.24 ID:NKnrqd7g0.net]
ない(もしくはめちゃ面倒だ)から諦めろ
非同期やりたいなら他の言語使え

822 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:59:35.80 ID:wyi1xEzY0.net]
VBA走らせている間に漫画でも読んどけよ

823 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 08:04:39.54 ID:1TbRNwlJH.net]
え、昨夜のレスでは非同期使えるって言われたので
多言語と同じようにpromise的な処理があるのかと思いました
非同期めちゃくちゃ面倒ってことは
エクセル処理で非同期を使うという発想が間違っているのですね

なんかいろいろ勘違いしていたみたいでした
神様、先輩方、すみませんでした

824 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 08:14:56.75 ID:CdZVH0NpM.net]
vbsとか使って外部プロセスに追い出すのが簡単だな

で、何を並列処理したいのかな?

825 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 09:30:19.73 ID:TLf+rFOod.net]
JavaScriptの経験があるなら今更VBAなんかに手を出さなくてもOfficeスクリプト使えばいいでしょ
デスクトップでもサポートされたからもうVBAいらないよ

826 名前:デフォルトの名無しさん [2022/06/30(木) 10:09:22.67 ID:P7B/AZjs0.net]
>>815
え、マジ?
もう企業や教育者向けのじゃなくても開発出来るの?

827 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 10:36:29.60 ID:3IHNP7gZd.net]
ブック1開いてマクロ実行
待ってる間にブック2開いて手作業
ブック2保存して閉じたら、そのタイミングでブック1のマクロが停止
これって仕様?

828 名前:デフォルトの名無しさん (アウアウウー Sad3-sbT5) [2022/06/30(木) 11:24:18 ID:l3rHcZB/a.net]
排他処理なにそれおいしいの?

ファイル保存したらマクロが止まるのは仕様



829 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 15:49:46.55 ID:RZ5lqdEjd.net]
VBAいじっている間にいつの間にかボタン表面が白くなって
userformの背景色や、userformで使われているボタン表面のも同じ白色に変色
まったく新しくファイルを作っても同じ現象が起きる
オフィスをインストールし直しても同じ

例外的にいつもの正常なボタンの表面色で表示されるケースがある
https://i.imgur.com/t5RFNKa.png
この現象が起きる前に作ったファイルのコピーを作る。このコピーを開く。
このとき、セキュリティ警告が出てる間はなぜか正常なボタン表面色
コンテンツ~のボタンを押した瞬間にボタンが白くなる
Workbook_Openとかはそもそもない

今のおかしな状態が黒線の左側で、右側がセキュリティ警告が出ている状態

VBEでUserForm自体・ボタン・テキストボックス、これらの背景色BackColorの値は
&H8000000F&
これって正常な値ですよね?
つまり内部的には正常な値なのに表示はいずれも真っ白

windowsやモニタの設定の影響であればセキュリティ警告が出てようが無関係に白色化しているはず


何か原因わかる方いますか?
そもそもVBAが関係しているかどうかも分からないのですが。
ちなみに他のエクセルとは無関係のソフトウェアの色は特に変化はないように思います

830 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 15:56:36.78 ID:RZ5lqdEjd.net]
>>819ですが、文章ちょっとおかしなところがありました
ユーザーフォーム上のボタンも、ワークシートに直接おくボタンも同じように白色になっているということです
そもそもボタンだけじゃなくて&H8000000F&で色が表示されている部分は
どれもおかしくなっているような状態です

831 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 16:27:38.04 ID:CdZVH0NpM.net]
たいして白くない件

832 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 16:32:48.48 ID:RZ5lqdEjd.net]
>>821
真っ白です

→は例外的に正常に表示されるケース
←が現状
https://i.imgur.com/3Hy4Ot8.png

833 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 17:41:14.60 ID:1+oYjPxt0.net]
>>810
非同期と並列処理の区別をつけろよ
非同期=コールバックでもないしな

834 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 17:47:02.54 ID:1+oYjPxt0.net]
>>819
テーマが適用されてるだけな気がする

835 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 18:26:58.93 ID:m1ZMAziu0.net]
システムカラーの値
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/system-color-constants

836 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 21:06:49.66 ID:1TbRNwlJH.net]
>>823
そうですね
コールバックがマルチスレッドって言ってるわけでも
プロセスを分けるって言ってるわけでもないです
全ての非同期処理は並列処理でもないですし
コールバックは処理なので、非同期でもないですし
VBAは初めてなのでいろいろ勉強していきます
なんか変なこと言っていたらごめんなさい

837 名前:デフォルトの名無しさん (スッップ Sd5f-gXkX) mailto:sage [2022/06/30(木) 22:28:19 ID:SUgmTyTCd.net]
自分はやりたい事の手段の一つにExcelVBAがあるだけでExcelVBAでどこまでできるかってのは気にしてない
別の言語を選択すれば可能ならExcelVBAにこだわることもないしね
勉強するあたりのレベルならExcelVBAだけでなくほかの言語も勉強したほうがいいかもね

838 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 23:19:39.52 ID:1TbRNwlJH.net]
エクセルの参加人数はすごいと思います
参加人数の多いエクセルをプラットフォームとしてデータ処理できるVBAは
他の言語には見られない参加者人数の価値があります(これを英語で何と言ったか忘れましたが)
ハードもプラットフォームも、潜在的な参加者の数で価値を測るという考え方が正しければ
エクセルVBAは他の言語をはるかに凌ぐ学習価値があると思うのです

他の言語を学習しつつもVBAも使えるというのは
とても素晴らしいことなのだと、VBA初学者としても感じています
先生方、これからもご指導いただける機会がありましたらよろしくです



839 名前:デフォルトの名無しさん [2022/07/01(金) 00:44:30.82 ID:iVoRsqHDd.net]
>>828
お前は二度と来なくていいよ

840 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 00:49:35.03 ID:T8FFb7IX0.net]
>>828
ちょっと何いってるか分からない

841 名前:デフォルトの名無しさん [2022/07/01(金) 01:26:43.65 ID:miA2ycF9M.net]
魔界に転生するとしたら、リザレクの次くらいに持っていたいスキルですもんね。
転生するまでに習得したいと思います。

842 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 01:41:24.35 ID:wxGP1WcO0.net]
シート上に実行ボタンがあり、いろいろなBookから値を取得してメインのブックに張り付けるマクロがあるのですが、
Windows7+Excel2010とWindows10+Excel2016では、2016方が数倍動作が遅いです(数秒程度が10秒程度になる)。
ただし、時々2010と同程度で終わることがあり、原因がよくわかりません。
なんか、実行ボタンの押し方によって(クリックしてマウスポインタをすぐExcelのウィンドウ外に移動)、
速度が速くなるような気がしているのですが、そのようなことはあるのでしょうか?
あるとすれば、なにか対策や原因はあるのでしょうか?

843 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 02:14:42.23 ID:u7q4KnhWd.net]
>>832
2013あたりからExcelの内部構造が大幅に変わったらしい
Windowsも新しいほど重くなってる

マウスポインタの位置によって速度が変わるのは多いにあり得る
昔はボタンを押したままにするとアプリの動作が止まってたのが、いつのまにかずっと動き続けるようになったし

844 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 06:59:23.11 ID:JTFoUJU2H.net]
>>829
DBシステムとしては
操作のバリエーション、検索、演算エンジンともに
最高峰の素晴らしい言語システムなのに
初心者に冷たいコミュニティなのですね

>>830
ネットワーク経済性と似た発想の価値測定方法で
ソフトやハードの経済価値を推定する思考方法です

845 名前:デフォルトの名無しさん [2022/07/01(金) 07:51:36.56 ID:m7rasyZv0.net]
>>834
いやいや、DBシステムとして使うとすると
シートにSQL投げようとしたとき
インデックス貼れない時点で欠陥品だよ。

EXCELの本分はあくまで表計算。

846 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 08:45:57.76 ID:Dqsnfi220.net]
>>834
まずDBシステムじゃないし
COMから学んではどうか

847 名前:デフォルトの名無しさん (ブーイモ MM4f-2lfq) mailto:sage [2022/07/01(金) 09:01:55 ID:2BH0SskNM.net]
今どき簡易DBアプリはPowerAppsみたいなローコードツールを使えばよい
オンライン共有のAccessみたいなアプリがクソ簡単に作れてExcelやスプレッドシートとの連携も容易

848 名前:デフォルトの名無しさん [2022/07/01(金) 11:26:48.78 ID:MWfPFNZsa.net]
>>832
気のせいだからほっとけ



849 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 11:27:33.06 ID:B1H2Mtvqd.net]
自分としては質問があればそれにこたえるだけでいいと思うが
技術者が他の事にも手を広げるならクソ簡単かもしれないが
一般ユーザーが背伸びしてVBAを理解しようとしてるなら保守なんかも含めてハードル高いと思うんだよね
まあ言いたい人は好き勝手に言うだけだから止められないが

850 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 11:46:09.70 ID:Kpd5ohp2M.net]
自分としては質問があれば質問するだけでいいと思うが
一般ユーザーが背伸びして回答なんかハードル高いと思うんだよね
まあ言いたい人は好き勝手に言うだけだから止められないが

851 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:15:30.41 ID:Bx5b0a9x0.net]
大事な事だから二度と言うな

852 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:46:06.01 ID:Ry4wIvAM0.net]
どっちだよw

853 名前:デフォルトの名無しさん [2022/07/01(金) 15:50:37.55 ID:E3WEdYada.net]
背伸び?逆やろ
背伸びしようとするタイプはVBAなんて使わない
伸びない香具師がVBAに固執してる

854 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:51:42.30 ID:S5EpTQdXM.net]

「いいですか?1回しか言いませんからよく聞いてくださいね」
って言われたけど、なんで大事なことなのに1回しか言わないんだろう
そんなに大事なら確実に伝わるまで何回でも言うか書いて渡すかすべきだろ

855 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:56:44.16 ID:wWku/Klda.net]
俺、一回しか教えねーぞ!
やるから見て覚えろ盗んで覚えろな!
これ、昭和の意地悪い上司。
それが当たり前だった時代

856 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:57:57.34 ID:Ry4wIvAM0.net]
>>844
そうそう
アホちゃうの

857 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:59:37.00 ID:wWku/Klda.net]
>>843
めっちゃ分かる
何がなんでもマクロでやっているヤツって何なんだろうね

858 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 17:12:32.89 ID:B9UYAOsl0.net]
>>844 みたいな考えの奴はたいていちゃんと聞いてないしメモ渡しても無くしたりするしw



859 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 17:35:59.70 ID:Ry4wIvAM0.net]
>>848
メモ渡すってアホなん

860 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 17:57:54.04 ID:Dqsnfi220.net]
>>848
そういう奴でも同じ事何回か教えりゃ覚えるから、
分かんなかったらいくらでもまた聞けって言ってる
目的は教育コストの削減とかそいつの成長とかじゃなく仕事の完了な訳だから

861 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 18:43:10.74 ID:miA2ycF9M.net]
いやこれ、あわしろっていう新手の荒らしですよ。

862 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:33:27.88 ID:rTaPWcb90.net]
昭和からEXCEL使ってた人いる?

863 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:34:18.95 ID:B9UYAOsl0.net]
>>850
その場限りの相手ならそれが正解だけど>>849 みたいなポンコツは成長しないから今後とも仕事させるならとっとと切り捨てないと結局仕事の完了が遅れるだけ

864 名前:デフォルトの名無しさん [2022/07/01(金) 19:41:46.04 ID:m7rasyZv0.net]
>>852
そもそも昭和の時代にEXCELあったっけ?
あの頃ってロータス123とか
マルチプランの時代じゃないの?

865 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:42:01.43 ID:Gg+5fIBkM.net]
>>853
そういうことを言い出したら極論VBA使いもクビにして優秀なエンジニア雇えという結論にしかならん
雇用維持も企業の責任

866 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:52:08.13 ID:lB7C8CJv0.net]
>>833
複数のブックを別ウインドウで開くようになったからな
個人的にはユーザーフォームが最前面に来ないのがめんどい

867 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:52:42.66 ID:lB7C8CJv0.net]
あと最小化するとユーザーフォームも消えるのが嫌だな

868 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 20:32:48.53 ID:B9UYAOsl0.net]
>>854
最初の日本語版は1989年(平成元年)リリースだから日本語版を使ってた人は居ないはず
最初のExcelはMac用に1985年(昭和60年)にリリースされてるみたいだからもしかしたら触った人がいるかもしれない



869 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 20:38:52.77 ID:B9UYAOsl0.net]
>>855
別に辞めさせなくてもポンコツはポンコツで務まるような職場に移せば良いだけだろ

870 名前:デフォルトの名無しさん [2022/07/01(金) 21:05:26.47 ID:0+5KhUlf0.net]
vbエディターを開いたときに開いているブックのモジュールやらUFやらがバーっと開くのを止めさせたいんですが、どなたかご存じないですか?毎回重ねて並べて閉じるのがめんどい。

871 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 21:10:05.40 ID:CjhzObSj0.net]
ラジオボタンがクリック1回で反応しなくて2回マウスでカチカチって指定しないといけないんだけど、直し方わかる人いますか?(´・ω・`)PCの問題なんかな?

872 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 21:42:37.97 ID:kFE+Jjo70.net]
マルチプランならあるな。
と言っても平成のはじめだけど。
あの時代はPC買うとおまけで違法コピーモノがもらえる時代だからな、
マルチプランも123も両方あったわ。
当時は123のほうが強かったんだよね。
Excelとマルチプランて名前が変わっただけじゃないの?

873 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 00:17:07.82 ID:7TC/SMOx0.net]
Excel3.0から使っていたら人ならいたよ。
とっくに定年退職されてます。
最近のExcelはごちゃごちゃしていて苦手と言っていたかな。

874 名前:デフォルトの名無しさん [2022/07/02(土) 00:35:50.92 ID:eLIQ72LUM.net]
Collectionについての質問なのですが
Collectionの要素をソートする場合
それ用のSubを作って、その中でソート後のCollection変数を作ってその中に順番に要素を1つ1つ入れていって最後に
set 元のcollection=新collection
とやる方法を考えつきました。

この方法で問題ないですか?それとももっとスマートな方法がありますか?

875 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 00:50:08.19 ID:vnn63W/20.net]
懐かしいの。
当時 IBM 5550とかいうパソコン使ってた記憶がうっすらある
そこでマルチプラン動かしてた
ところが海外拠点ではロータス123 の方が評判でどこかでそれに切り替えた記憶がある。同時に IBM 55505何かに変更したような記憶があるな

マック使ってたやつが Excel を自慢して確かに羨ましかったな
DOS V パソコンで Windows 3.1が動いてその上で Excel が動いた時は感激したな

876 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 01:12:48.41 ID:yZ67dQaR0.net]
昭和ならロータス123とアシストカルク使ってたな
あれはDOSだったかな?

877 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 01:21:18.54 ID:yZ67dQaR0.net]
DOSの頃はファイラーはFD、ネットはエアクラフト、お絵描きはkid98、音楽はMIMPIがデファクトスタンダードだった

878 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 01:36:45.55 ID:7TC/SMOx0.net]
昔は企業で使うPCソフトといえば表計算と文書ソフトぐらいだったもんね。



879 名前:デフォルトの名無しさん [2022/07/02(土) 06:04:41.51 ID:kG8DYDgz0.net]
>>864
良いんじゃない?それで。
用途にもよるけどコレクションにキーくっつけといて
別にキー一覧みたいのをソートして作っといて
そのキーからソートした順番に引っ張るっていう方法もあるけど。

880 名前:デフォルトの名無しさん [2022/07/02(土) 06:14:46.63 ID:v1xY47GsM.net]
>>869
あれれそうですか。
キーの方法も良さそうですね。

でもこんなひとはよく使用しそうなのに話が盛り上がらないのは
みんなのVBAのスキルが低レベルだからでしょうか?

881 名前:デフォルトの名無しさん [2022/07/02(土) 06:15:13.26 ID:v1xY47GsM.net]
x こんなひと
o こんなこと

882 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 06:29:09.78 ID:BdV6t7uW0.net]
すげーな、普通の人が寝る夜中に盛り上がらないからって他人を低レベル呼ばわり

883 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 06:35:31.84 ID:yZ67dQaR0.net]
>>870
かまってもらえないからみんなまとめて低レベル扱いですかそうですか
くさっ

884 名前:デフォルトの名無しさん [2022/07/02(土) 06:52:10.92 ID:kG8DYDgz0.net]
>>870
なるほど、ただの煽りかも知れないけど
あまり人前でそう言うことは言わない方がいい。

人を嫌な気分にさせるし
自惚れ屋と思われて周りからも疎まれることになる。
自分の為にも思ったことは口にしたり書き込んだりする前に一度考えてから実行する方が良いよ。

885 名前:デフォルトの名無しさん [2022/07/02(土) 07:31:29.49 ID:LyZZMtStD.net]
>>870
当たり前の処理のどこに盛り上がる要素があると思うのか
そもそもソートが必要なものにcollection(リスト)使おうって時点で
データ構造の選択を間違ってる可能性が大きい

886 名前:デフォルトの名無しさん [2022/07/02(土) 07:35:58.08 ID:+UfCFyJWM.net]
わかった
じゃあいい

887 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 07:38:04.43 ID:Vi0lNJ4o0.net]
釣られすぎ

888 名前:デフォルトの名無しさん [2022/07/02(土) 07:40:07.80 ID:+UfCFyJWM.net]
For-Next文の中だけで使う局所ローカル変数を定義する場合は
そのFor-Nextブロック内で
Dim a as String
でいいんですっけ?
それともモジュールの先頭で?

たしかVBAでは局所ローカル変数の概念がなくて
Sub/Function内すべての場所で使える気がするのだけど。



889 名前:デフォルトの名無しさん [2022/07/02(土) 07:49:38.67 ID:kG8DYDgz0.net]
>>878
局所ローカルという呼び方をするのかは兎も角
関数やメソッド以下のスコープ変数は基本的には設定出来ない。

変数宣言をする場所についてはVBAに限らず
そのスコープが始まる頭のところに書くのが一般的だよね。
ただ、言ってる通り別に先頭に書かなくても問題なく実装は出来る。

890 名前:デフォルトの名無しさん [2022/07/02(土) 07:49:48.13 ID:vz70zrJPM.net]
>>870
盛り上がったじゃないか
良かったな

891 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 07:49:50.15 ID:LyZZMtStD.net]
>>878
言うとおり局所ローカル変数は存在しないのでFunctionやSubの中ならどこでもいいよ
モジュール先頭(Function、Subの外側)だとグローバル変数かパブリック変数になるからその目的ならダメ

892 名前:デフォルトの名無しさん [2022/07/02(土) 07:58:43.11 ID:+UfCFyJWM.net]
>>879
>>881
なるほどありがとうございます。
やっぱりできないのですね。

でもSub/Function先頭に書くと可読性が著しく下がる(この意味が分からない人はスキル低すぎ)のでやめときます。
われわれのように複雑なプログラミングをしてる人にとってはVBAの言語はいろいろ不便に感じますね。

893 名前:デフォルトの名無しさん [2022/07/02(土) 08:01:20.13 ID:kG8DYDgz0.net]
>>882
だからそう言った言い方はやめた方がよいかと。
モロに自分が「単一責任原則も知らずにスパゲッティコード組みます」と言ってるようなものだから。

894 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 08:27:22.57 ID:bQuvSXdqD.net]
>>882
COBOL書いたら死んでしまいそうな人

895 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:00:40.59 ID:At3W7bIA0.net]
>>878
まあ好みだけど俺は変数宣言は可能な限り使う直前って決めてるからそのケースならループ内で宣言する

896 名前:デフォルトの名無しさん (ワッチョイ 0a63-63P4) mailto:sage [2022/07/02(土) 09:30:40 ID:6d3aqhyk0.net]
チゲ鍋みたいだな局所ローカル

897 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:41:11.94 ID:qJpeB53K0.net]
DSのプチコンでローカル変数のありがたさを思い出したな

898 名前:デフォルトの名無しさん [2022/07/02(土) 09:55:37.37 ID:COZLaCzbF.net]
局部もろ観え



899 名前:デフォルトの名無しさん (ワッチョイ 87da-3xOz) mailto:sage [2022/07/02(土) 12:13:59 ID:vnn63W/20.net]
>>885
何回も変数宣言を実行することになるのかな。そうなら理論的にはメモリの無駄と速度の低下が発生するんじゃないの

900 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 13:17:36.46 ID:Y5ZkAX2p0.net]
ReDimの存在

901 名前:デフォルトの名無しさん (ワッチョイ 8a01-BQ8I) mailto:sage [2022/07/02(土) 13:53:14 ID:At3W7bIA0.net]
>>889
宣言文と実行文の違いを学ぼうか

>>890
ReDim は実行文だよ

902 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 14:54:16.39 ID:7TC/SMOx0.net]
久々に熱いスレになったね

903 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 16:46:05.89 ID:vnn63W/20.net]
>>891
普通の文と同じように実行されるわけはないと思ったんで疑問形で書いたんだけど

でもどういう法則があるのかよくわからんから質問したの

宣言文と実行文で検索しても参考になる記事はなかった

教えてくれませんか?

904 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 17:08:32.73 ID:At3W7bIA0.net]
>>893
VBA 宣言 ループ とかでググればいいかと
https://thom.hateblo.jp/entry/2018/06/02/185716
一部の例外はあるけど基本的に宣言文は最初にまとめて処理される
なのでサブルーチンに入った時点で変数は作成されるからメモリーの無駄とか速度低下はないよ

905 名前:デフォルトの名無しさん (ワッチョイ 87da-3xOz) mailto:sage [2022/07/02(土) 18:56:13 ID:vnn63W/20.net]
>>894
おおー、なるほど。
よくわかった、ありがとさん。

906 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 12:22:53.01 ID:Jv7ZJhwXr.net]
>>882
なんでわざわざ煽る言い方するわけ?
マシで理解できないわ

907 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 12:39:04.19 ID:v1f+WlYn0.net]
スレ立ち上げ当初みたいに、こうやって真面目な議論してれば良スレなんだよな。

あんたらハメ外せばすぐ毛の話。。。

908 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 13:05:07.71 ID:Fpu/jUUc0.net]
質問者の質も落ちた



909 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 16:27:46.74 ID:v1f+WlYn0.net]
初期の頃、Excel板かここかは忘れたけど、質問も即答してくださる凄い回答者が何人かいた覚えがある。

今はいなくなったよね。
質問側も意味不明な質問ばかり。

910 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 17:15:16.28 ID:ur8aI9T40.net]
そういえば昔って質問にもテンプレなかったっけ

911 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 18:58:18.36 ID:95K4DRnu0.net]
てか議論するスレでもないけどな

912 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 21:36:18.00 ID:v1f+WlYn0.net]
思い出した。昔はいくつかのVBAスレがあった

913 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 21:53:26.02 ID:+uLGaU5J0.net]
【VBA エキスパート】 Excel / Access https://kizuna.5ch.net/test/read.cgi/lic/1640108986/
素人にVBA仕込んだ https://medaka.5ch.net/t

914 名前:est/read.cgi/prog/1642131517/
VBAのフリーランスエンジニアは需要ありますか? https://medaka.5ch.net/test/read.cgi/prog/1598637098/
Excel VBA 質問スレ Part76 https://mevius.5ch.net/test/read.cgi/tech/1651339421/
VBAなんでも質問スレ Part3 https://mevius.5ch.net/test/read.cgi/tech/1631184381/
Access VBA 質問スレ Part2 https://mevius.5ch.net/test/read.cgi/tech/1544620479/
★今VBAを勉強してるんだが★ https://medaka.5ch.net/test/read.cgi/php/1214626617/
[]
[ここ壊れてます]

915 名前:デフォルトの名無しさん (オッペケ Sr23-BXQt) mailto:sage [2022/07/04(月) 12:09:05 ID:0Cy5iXrvr.net]
回答者はすぐマウントとってくるしな
>>882みたいな質問者なのにマウント取ってくる意味わからんやつもいるし
能力低すぎとか、われわれのような複雑な~って頭おかしすぎるだろ

916 名前:デフォルトの名無しさん [2022/07/04(月) 13:01:53.71 ID:OO2ZWbG3d.net]
>>904
それ、しつこくForがどうのと聞いていた例のあいつだから

917 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 16:21:37.95 ID:vF9E34H30.net]
>われわれのように

うん。われわれって誰?
脳内でしょ恐らく

ふつーよ、自分から複雑な事やっていますアピールとかするかぁ??
もしかして釣られているのか俺ら

918 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 16:28:28.96 ID:g5E8ZW1ad.net]
決まった様式のExcelファイルがあって、それを見やすく加工するマクロを組んで自信で使ってた際に、それを部内に展開したいってなった場合どう配布するのが正解なんだろう。
使う人はマクロの知識は全くないものとして。

1.xlamにして配布
アドインの設定をしてあげる必要がある。
使用頻度の低い人にアドインを入れるメリットが薄い。

2.マクロだけ入れたxlsmを配布
加工したいxlsxファイルと同時に開いてもらってマクロを実行してもらう。
手間が増える。

3.VBSに書き換えて配布
書き換えが面倒。

4.VBSとxlsmを配布してVBS実行でxlsm起動とマクロ実行
処理に時間がかかりそう。

使用頻度の高くないマクロをアドインとして登録するのは起動時間のロスになりそうだから避けたいんだけど、他の人に特定のマクロを手軽に実行させるのはどういう方法がいいだろうか?



919 名前:デフォルトの名無しさん [2022/07/04(月) 17:17:05.04 ID:CvyJwule0.net]
>>907
> 2.マクロだけ入れたxlsmを配布
> 加工したいxlsxファイルと同時に開いてもらってマクロを実行してもらう。
> 手間が増える。

これでいい。手間って配布の手間のこと?
共有サーバーのどっか特定の場所に読み取り専用にしたxlsmファイル置いといて
ここのマクロファイル使って作業してくれって告知だけすればいい
不具合が見つかって修正した場合も同名ファイルで上書きするだけだから楽だと思うよ

920 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 17:57:33.89 ID:oo1ug/2UD.net]
俺は上書き保存が怖いので.xltmを渡してる

921 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 18:50:46.28 ID:tF6z07pca.net]
>>909
リードオンリーで開くにしとけばいいだけじゃね?

922 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 19:05:52.33 ID:g5E8ZW1ad.net]
>>908
Excelファイル2つ開いてマクロ実行して閉じるっていうのが操作的に手間かなと思ったけど、共有フォルダに置いといてそれを開いて使ってもらうのは無難に使いやすそう。ありがとう。

後出しで申し訳ないんだけど、うちの会社のPCがウイルス対策だとかで毎日起動時にマクロ有効化設定を強制オフ(有効化メッセージ出ずにオフになるやつ)にされるせいで、トラストセンターから毎日有効化設定してね、っていう雑な仕組みになってるんだ。
自身は設定オンにするVBSなりbatで対応してるけど、他の人だとExcel開いてトラストセンターで設定変更の事前動作も必要に。

アドインやVBSなら有効化しなくても動作するんだけど、そうなるとドラッグドロップで動作するVBSだと使う側の手間は省けるだろうか。

923 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 19:58:33.04 ID:Ujf5qvvVd.net]
1. xlsmを共有フォルダに保存
2. 読み取り専用で開く
3. xlsm上の別シートに出力結果をVBAで作成
4. 出力結果シートを新規ブックにVBAで移動 (ws.move)
5. 新規ブックをダイアログボックスで保存させる


毎回これでやってる

924 名前:デフォルトの名無しさん [2022/07/04(月) 22:40:20.14 ID:CvyJwule0.net]
>>911
この環境下でも
(セキュリティを無効化して対象のxlsmを開く)VBSなりbatファイルの実体を共有に置いて
そのショートカットだけを配布がベストだと思う

> ドラッグドロップで動作するVBSだと使う側の手間は省けるだろうか
組織内のユーザーのリテラシーにもよるけど、
xlsmでもWorkbook_Openで即ファイルピックアップダイアログ開かせれば大差ないし、
なにより保守がしんどいでしょ

もし複雑な加工内容への変更依頼がきたら?
あるいは今後別のマクロの作成依頼が来て、それもすべてVBSで配布しろと言われるかもしれない

VBEもIDEとしてはアレだけど、
ブレークポイント置けないDebug系メソッドないモジュール分割気軽にできないVBSで開発し続けるの何倍も大変だと思うよ

925 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 01:05:42.67 ID:jbzqjuV/a.net]
>>912
> 3. xlsm上の別シートに出力結果をVBAで作成
> 4. 出力結果シートを新規ブックにVBAで移動 (ws.move)
新規ブック作ってそこのシートに直接結果を出力した方が楽じゃね?

926 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 07:41:15.60 ID:HXH2KDmV0.net]
>>907
VBSを配布して、そこに処理対象ファイルをドラッグドロップしてもらうのが、ユーザ側としては1操作で完結して使いやすいと思う
ユーザに慣れない操作を押し付けて手間を増やしたら本末転倒だしね

ところで「加工」て何するの?
大部分が編集不可の共有ひな型ブックならともかく、人間が好き勝手にいじったブック中から「加工」対象を特定するのは大変だろ

927 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 08:39:26.47 ID:ZlAE1xYZd.net]
別にVBSにこだわる必要は無い
Powershell でも良いでしょ

928 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 09:04:16.75 ID:MtIzSAoXd.net]
>>915
加工についても恥ずかしながら前スレで相談させてもらって一応解決することができました。
・web上からDL出来る名簿がpdf
・pdfをacrobatでexcel変換するとセル位置や結合が不揃い
・目的は名簿データをそれぞれ横一列のデータにしたい

vbaにて処理は出来るようになったけど、他の人が使いたいという意見があり、今回配布手段についてご相談させてもらった次第です。
https://i.imgur.com/XgHnIpg.png
https://i.imgur.com/cXouZTg.png



929 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 09:33:47.87 ID:gxzY68gk0.net]
・WebからDLするドキュメントをCSVにでもしてもらえるよう社内調整する
が一番ラクで確か

930 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 11:30:39.29 ID:X6XwWL+o0.net]
最近、Alt+F11でVBEを開くと、アドインのコードが表示されるようになったんだけど、
仕様が変わったのか、表示されるような設定にしてしまったのか。。
皆さんは表示されますか?

931 名前:デフォルトの名無しさん [2022/07/05(火) 11:43:19.49 ID:QxOevurCa.net]
上の人間の指示通りにするので悩まない

932 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 11:57:42.97 ID:Fkl5GJtU0.net]
>>919
されますよ。

933 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 12:00:27.76 ID:X6XwWL+o0.net]
>>921
毎回アドインのコードが表示されているウィンドウを閉じていますか?
それとも、どこかの設定を変更すると表示されなくなりますか?

934 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 12:47:27.21 ID:HXH2KDmV0.net]
>>917
成程。流れ見てないけど、ここにマトモに助けてくれる人がいるというのは意外(失礼w)
acrobatによるpdfのexcel変換過程で色んな気まぐれ要素によりフォーマットが乱れそうな予感がするが、それを吸収するコーディング努力の継続こそスキル上達の早道
頑張って下さい

935 名前:デフォルトの名無しさん (ワッチョイ 73da-XUZM) mailto:sage [2022/07/05(火) 19:57:34 ID:Fkl5GJtU0.net]
>>922
スマン、何かの設定いじったら直った記憶
覚えてなくてすまん

936 名前:デフォルトの名無しさん (ワッチョイ deda-auNL) mailto:sage [2022/07/06(水) 18:47:05 ID:8WsZe39w0.net]
ちんぽじ

937 名前:デフォルトの名無しさん (ワッチョイ 73da-XUZM) mailto:sage [2022/07/06(水) 19:59:54 ID:D5LMB4PC0.net]
2023でるかもね

938 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 21:31:49.12 ID:RzEtlOC+0.net]
VBAxSeleniumでchromeはオプション設定が出来るけどedgeは出来ないと思ってたんだが、出来るんだな。
ネットでもうまくいかないていう情報が多い。

Chromeの場合
Driver.AddArgument ("user-data-dir=" & fso.BuildPath(CurrentDirectory, "chrome_vba"))

Edgeの場合
driver.SetCapability "ms:edgeOptions", "{""args"": [""user-data-dir=" & Replace(fso.BuildPath(CurrentDirectory, "edge_vba"), "\", "\\") & """" & _
"] }"

まあjsonで渡してるんだが、VBAてjsonてこんな風にデータベタ打ちしか方法がない?



939 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 15:51:01.23 ID:vIJsrl8u0.net]
ダウンロードしたVBAマクロ入りファイル、デフォルト無効化が取り消し。MicrosoftがOfficeの仕様を再度変更
https://pc.watch.impress.co.jp/docs/news/1423419.html

940 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 15:06:01.33 ID:TbXhrDsy0.net]
えぇ((( ;゚Д゚)))恐い

941 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 16:22:28.20 ID:Rxyi1Cuq0.net]
ダウンロードして使うことがないからどっちてもええよ

942 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 01:16:29.22 ID:TTL+d6j7a.net]
コロコロ変わるのは昔から
また変更あるぞ

943 名前:デフォルトの名無しさん [2022/07/11(月) 01:40:13.99 ID:vt1vW9IA0.net]
インターネット経由がどうたらというのは、古いマイクロソフトと新しいマイクロソフトの内部抗争にすぎない。

944 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 04:21:24.13 ID:/TJLjZUe0.net]
ああゆう最先端の企業でも老害が威張り散らしているのかな

945 名前:デフォルトの名無しさん [2022/07/11(月) 04:31:29.20 ID:vt1vW9IA0.net]
ビルゲイツ派はAzue妨害派だろうな

946 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 09:41:27.04 ID:67sTwPgvM.net]
大口の客がゴネたんだろう
VBAがいつまでも使えるのもそういう方々のお陰なのだからVBAer達は感謝しないと

947 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 18:14:40.24 ID:/TJLjZUe0.net]
分かったよ

948 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 15:11:11.33 ID:cdOR/i1g0.net]
客先から毎日送られてくるpdfに対し、特定の部分だけを抜いてexcelに出すというものを作りたいです

流れとしてはwordで開いてコピペ→そこから必要な部分だけ整形
という流れで考えており概ねできたのですが、pdfをwordに落とした時に文章がそのまま文章でコピーされる時と1行ずつテキストボックスやら画像やらでコピーされる時がありうまく実用化出来ません

上記か、あるいはその他の方法でも良いので安定的にコピーする方法は無いでしょうか?

ちなみにpdfは定型フォーマットに記載された日報のような形式で、手動なら文字はそのままコピペできます、フォーマットはいつも同じですが中の文章は行数が日により異なります



949 名前:デフォルトの名無しさん [2022/07/13(水) 17:04:46.28 ID:+TgcJMJe0.net]
>>937
客先にテキストでもくれと依頼すればいいだろ

950 名前:デフォルトの名無しさん [2022/07/13(水) 17:32:17.47 ID:H0DndFW/a.net]
pdfを書き換えたい訳じゃなくて中身を読みたいだけなら
pdfreaderを使うのが一番楽

951 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 18:07:17.76 ID:jvbf7mTW0.net]
PDFは人間のため、印刷のために開発された仕組み
データの順番がどんだけ変わっても人間の目には同じに見えるようになってるから、中身をプログラムで自動的に取り出すのには向いてない

厳密には不可能じゃないとしても、ものすごく大変
できるだけ別の方法を考えた方がいい

952 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 18:39:04.67 ID:tqig4XWpd.net]
そのPDFが紙からスキャンしたものじゃなく文字データとして残ってるなら、ワード経由しなくてもacrobatreaderで開いてコピペするのが早いとは思う。

PDFをExcelに変換する手段があるなら、変換してマクロで必要な所を抽出できそうだけど元ファイル次第では難しいか?

953 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 19:16:11.37 ID:RAwbutPOM.net]
GOOGLEドライブに入れてドキュメントで開けばOCR使えるからそれを試してみては

954 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 19:23:52.41 ID:F58RRgFgM.net]
pdfってhtmlのようなテキストだったりする、意外と知られていない?

955 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 19:30:34.74 ID:XpRrYrAX0.net]
>>937
パワークエリ

956 名前:デフォルトの名無しさん (ワッチョイ fdce-TkQT) mailto:sage [2022/07/13(水) 19:51:06 ID:jvbf7mTW0.net]
>>943
中身はテキストなんだけど、データの順番が入れ替わっても同じ見た目の文書が再現できる
だから人間から見て正しい順序で取り出すのが大変
いっぺん出力してOCRした方が早いぐらい

957 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:29:31.07 ID:RAwbutPOM.net]
>>943
ここの連中にはよく知られている
pdfの解析はめちゃくちゃキツイ

958 名前:デフォルトの名無しさん [2022/07/13(水) 20:29:35.01 ID:+TgcJMJe0.net]
>>943
馬鹿なら黙っていればいいのに
htmlじゃねーよ



959 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:34:43.23 ID:RAwbutPOM.net]
>>947
「のような」って書いてる
マークアップされてるって事ぐらい分かるでしょ

960 名前:デフォルトの名無しさん [2022/07/13(水) 20:40:59.71 ID:+TgcJMJe0.net]
>>948
マークアップじゃないし
馬鹿は黙っていればいいのに

961 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:55:32.87 ID:RAwbutPOM.net]
馬鹿じゃねーよ
テキトーに言ってるだけだ

962 名前:デフォルトの名無しさん [2022/07/13(水) 21:36:26.72 ID:bpgpUpce0.net]
バイナリファイルをマークアップされてるって表現する人はじめてみた

963 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:51:54.33 ID:bvCBiwjA0.net]
とはいっても取引先からのデータは大半がpdfだからなぁ

964 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 23:54:44.21 ID:vJ6Ng0OKd.net]
そんなもん会社によるだろ
言えばExcelやCSVで送ってくれるとこも普通にある

965 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 00:12:44.49 ID:X42JNt2t0.net]
マーキングするために会社の上司が部下の女に触りまくってるじゃん

966 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 07:26:28.96 ID:5ehEa+FTd.net]
技術力だけで生きていくか、コミュ力も高めて生きていくかの「差」が今回の質問で明らかになったね

今回の場合、コミュ力あるやつならとっくに客先はpdfとは別にcsvとかテキストファイルを送る方向で動いてるよ

俺はコミュ力を高めていく
お前らは今後も無理難題をひたすら解決する技術力を高めていけw

967 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:00:06.43 ID:E22ufzJOM.net]
今回のデータをcsvで頂戴したく存じます

コミュも何も一行メール送るだけでいいだろう
むしろこれ出来ないなら何もできんだろ

968 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:06:18.41 ID:KsBnasMha.net]
社内規定で社外に送信するデータはPDFとなっておりますので、ご期待に沿えず申し訳ありません。



969 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:12:38.64 ID:1tikFi/NH.net]
そういうコミュニケーションとれない奴は、
仕様を決めるときにもコミュニケーションとれないから思い込みで作るまである

970 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:14:11.08 ID:YsqOWTP3d.net]
根本解決を目指すアドバイスはいいけど、どんなデータかも質問者と客先の状況も分からないのに、データ貰えば解決(ドャァは乱暴じゃない?

少なくともwordで開いても文字認識がまばらだったりするって時点で、綺麗な様式から出力したデータじゃないのは確かだし、質問者がそういう回答を求めてないとは思わない?

971 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:21:48.07 ID:E22ufzJOM.net]
>>959
OCRか元データもらう以外の解決策があるなら、かなり聴きたい

972 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:24:09.60 ID:lnbsEUJQM.net]
OCRのがマシって回答出てるだろ
現実から目をそらすな

973 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:49:50.07 ID:vNge93QI0.net]
最初に「CSVなどで依頼しても無理でした」とか書いてくれれば無駄な争いは避けたのかもな

974 名前:デフォルトの名無しさん [2022/07/14(木) 10:19:52.64 ID:dxotV0yqa.net]
>>947
++
>>949
++
>>951
ほんそれ

975 名前:デフォルトの名無しさん [2022/07/14(木) 21:34:12.70 ID:L5ignm6zd.net]
A列のセルに列挙された複数単語の商品名から重複した単語のみを除くことは可能でしょうか?

A
1 RED BLUE APPLE
2 RED BLUE BANANA
3 RED BLUE GREEN ORANGE
4 RED BLUE YELLOW WHITE GRAPE
5 RED BLUE WHITE CHERRY

↑これらのデータを↓のように整形したいです。

B
1 APPLE
2 BANANA
3 GREEN ORANGE
4 YELLOW GRAPE
5 CHERRY

「RED BLUE APPLE」は同一セル内にスペースで区切られて入力されています。
データ量は1回あたり100行程度になります。セル内の単語、単語の数は毎回異なります。

ご教示いただけますと幸いです。よろしくお願いいたします。

976 名前:デフォルトの名無しさん [2022/07/14(木) 21:34:41.90 ID:TfuP8Uyl0.net]
6進数?を通常の時刻表記に直す方法教えてください。
例)1.3→1:30
  2.45→2:45

977 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:37:17.58 ID:TLlcUFbPa.net]
>>965
A1に時間が入っているとして
=TIME(INT(A1),A1-INT(A1),0)

978 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:41:07.21 ID:0fmyum11H.net]
>>955
コミュ力の定義はなんですか?典型的なインデックスは何ですか?



979 名前:デフォルトの名無しさん [2022/07/14(木) 21:44:41.57 ID:zzetjp0td.net]
>>964
可能です。
はい、次。

980 名前:964 mailto:sage [2022/07/14(木) 22:56:36.99 ID:X42JNt2t0.net]
>>968
ご回答いただきまして誠にありがとうございます。

981 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:23:30.65 ID:BkEIWbQgd.net]
>>964
自分ならだけどこんな感じかと Mainのループは最大行数を取得してくれ _をスペースに置き換えてくれ
Sub_Main()
____Dim_i_As_Long
____For_i_=_1

982 名前:_To_5
________Dim_a_As_String
________a_=_Cells(i,_1).Value
________Dim_j_As_Long
________For_j_=_1_To_5
____________If_i_<>_j_Then
________________a_=_CutWord(a,_Cells(j,_1).Value)
____________End_If
________Next
________Cells(i,_2).Value_=_a
____Next
End_Sub
[]
[ここ壊れてます]

983 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:23:50.53 ID:BkEIWbQgd.net]
Function_CutWord(a_As_String,_b_As_String)_As_String
____Dim_aa()_As_String
____aa_=_Split(a,_"_")
____Dim_bb()_As_String
____bb_=_Split(b,_"_")
____Dim_c_As_String
____c_=_""
____Dim_i_As_Long
____For_i_=_LBound(aa)_To_UBound(aa)
________Dim_j_As_Long
________For_j_=_LBound(bb)_To_UBound(bb)
____________If_aa(i)_=_bb(j)_Then
________________Exit_For
____________End_If
________Next
________If_j_>_UBound(bb)_Then
____________If_c_<>_""_Then
________________c_=_c_&_"_"
____________End_If
____________c_=_c_&_aa(i)
________End_If
____Next
____CutWord_=_c
End_Function

984 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:43:51.22 ID:qWN4wD1T0.net]
https://mevius.5ch.net/test/read.cgi/bsoft/1654860173/7
に似てる

985 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:52:28.92 ID:fadaSACN0.net]
気持ちわりぃなそのコード

986 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 00:00:11.50 ID:9RgIX2Zba.net]
>>973
どの辺りが?
それとも気持ち悪いって言いたかっただけ?

987 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 00:30:48.57 ID:1ECLhEg6a.net]
なんでスペースがアンダーバーなんだとは思うな
俺も見た目が受け付けなかったわ

988 名前:デフォルトの名無しさん [2022/07/15(金) 00:48:33.55 ID:kd+ZBNkRd.net]
いや、そもそも自作自演だろ



989 名前:デフォルトの名無しさん (ワッチョイ fdce-TkQT) mailto:sage [2022/07/15(金) 01:18:26 ID:mFCZ39Ni0.net]
Sub Main()
  Dim a As String
  Dim i As Long
  Dim j As Long
  For i = 1 To 5
    a = Cells(i, 1)
    For j = 1 To 5
      If i <> j Then a = CutWord(a, Cells(j, 1))
    Next
    Cells(i, 2) = a
  Next
End Sub

Function CutWord(a As String, b As String) As String
  Dim aa() As String
  Dim bb() As String
  Dim c As String
  Dim i As Long
  aa = Split(a, " ")
  bb = Split(b, " ")
  For i = LBound(aa) To UBound(aa)
    Dim j As Long
    For j = LBound(bb) To UBound(bb)
      If aa(i) = bb(j) Then Exit For
    Next
    If j > UBound(bb) Then
      If c <> "" Then c = c & " "
      c = c & aa(i)
    End If
  Next
  CutWord = c
End Function

990 名前:964 [2022/07/15(金) 02:31:06.28 ID:bSLom3XEd.net]
早速ご回答いただいた皆様、ありがとうございました!
ほぼ思い通りの結果を得ることができました。

ちなみにですが、
例えばA6に「DOG CAT RABBIT COW BEAR」というデータがある場合、
各単語がどれとも重複していないため「DOG CAT RABBIT COW BEAR」そのまま5単語が残ります。

各データのユニークな単語を最小数で残すことは可能でしょうか?
下記のような形です。

A
1 RED BLUE APPLE
2 RED BLUE BANANA
3 RED BLUE GREEN ORANGE
4 RED BLUE YELLOW WHITE GRAPE
5 RED BLUE WHITE CHERRY
6 DOG CAT RABBIT COW BEAR



B
1 APPLE
2 BANANA
3 GREEN ORANGE
4 YELLOW GRAPE
5 CHERRY
6 DOG

度々申し訳ございませんが、よろしくお願いいたします。

991 名前:デフォルトの名無しさん [2022/07/15(金) 02:36:26.14 ID:WFW52ORLM.net]
いつものあいつだぞ

992 名前:デフォルトの名無しさん (ワッチョイ fdce-TkQT) mailto:sage [2022/07/15(金) 06:01:47 ID:mFCZ39Ni0.net]
最小限の定義が不明

993 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 07:03:30.04 ID:ymO8mssad.net]
Sub Main()
  Dim a As String
  Dim i As Long, j As Long
  Dim last As Long
  last = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 1 To last
    a = Cells(i, 1)
    For j = 1 To last
      If i <> j Then a = CutWord(a, Cells(j, 1))
    Next j
    Cells(i, 2) = a
  Next i
End Sub

Function CutWord(a As String, b As String) As String
  Dim aa() As String
  Dim bb() As String
  Dim c As String
  Dim i As Long, j As Long
  aa = Split(a, " ")
  bb = Split(b, " ")
  For i = LBound(aa) To UBound(aa)
    For j = LBound(bb) To UBound(bb)
      If aa(i) = bb(j) Then Exit For
    Next j
    If j > UBound(bb) Then c = c & aa(i) & " "
  Next i
  CutWord = Trim(c)
End Function

994 名前:デフォルトの名無しさん (スッププ Sd43-jVDF) mailto:sage [2022/07/15(金) 07:30:27 ID:KClfAjojd.net]
俺のコードをいじってくれてうれしいが
Valueとったり改行いじったりしてるだけで行数減らしてるだけなんて結局マイルールのこだわりを主張してるだけなんだよな
こんな方法あるぜってのが見たいわ

>>978
6が「DOG」になる最小数という意味が不明
先頭の単語を返すだけならCutWordの最後でaとcが同じ値になったらaa(LBound(aa))を返すようにすればいいのでは

995 名前:デフォルトの名無しさん (アウアウウー Sa09-/dRU) mailto:sage [2022/07/15(金) 07:47:41 ID:9RgIX2Zba.net]
value取るのは

996 名前:改悪で草 []
[ここ壊れてます]

997 名前:デフォルトの名無しさん (アウアウウー Sa09-DHlW) mailto:sage [2022/07/15(金) 08:08:12 ID:DqNyEc18a.net]
>>964
複数回現れる単語を削除すればいいのか?
Sub X964()
Dim Sheet As Worksheet: Set Sheet = ...
Dim Dictionary As Object: Set Dictionary = CreateObject("Scripting.Dictionary")
Dim LastRow As Long: LastRow = SheetSheet.Cells(Rows.Count, "A").End(xlUp).Row
Dim Row As Long
For Row = 1 To LastRow
Dim Word As Variant
For Each Word In Split(Sheet.Cells(Row, "A").Value, " ")
If Dictionary.Exists(Word) Then
Dictionary(Word) = Dictionary(Word) + 1
Else
Dictionary.Add Word, 1
End If
Next
Next
For Row = 1 To LastRow
Dim Uniques As String: Uniques = ""
For Each Word In Split(Sheet.Cells(Row, "A").Value, " ")
If 1 < Dictionary(Word) Then
If Uniques = "" Then
Uniques = Word
Else
Uniques = Uniques & " " & Word
End If
End If
Next
Sheet.Cells(Row, "B").Value = Uniques
Next
End Sub

998 名前:デフォルトの名無しさん (アウアウウー Sa09-DHlW) mailto:sage [2022/07/15(金) 08:10:06 ID:DqNyEc18a.net]
>>973
気持ち悪いとは思わないけどちょっと非効率かなとは思う



999 名前:デフォルトの名無しさん (ワッチョイ cbda-VQN5) mailto:sage [2022/07/15(金) 08:49:49 ID:pxeFAKZo0.net]
そのコードカッケェ!

1000 名前:デフォルトの名無しさん (スフッ Sd43-TkQT) mailto:sage [2022/07/15(金) 09:42:45 ID:D6klNH8hd.net]
Sub sample3()
  Dim r As Long
  Dim z As Long '最終行
  Dim s As String '全データ
  Dim a() As String '単語リスト
  Dim i As Long
  z = Cells(Rows.Count, 1).End(xlUp).Row
  For r = 1 To z
    Cells(r, 2) = Cells(r, 1)
    s = s & Cells(r, 1) & " "
  Next r
  a = Split(s, " ")
  For i = LBound(a) To UBound(a)
    If Len(s) - Len(a(i)) > Len(Replace(s, a(i), "")) Then '2回以上出てくるか
      For r = 1 To z
        Cells(r, 2) = Trim(Replace(Cells(r, 2), a(i), "")) '各セルから削除
      Next r
    End If
  Next i
End Sub

1001 名前:デフォルトの名無しさん (アウアウウー Sa09-jVDF) mailto:sage [2022/07/15(金) 09:47:20 ID:kfkt8EAfa.net]
効率どうこう言う前に重複した単語がでるような関数はどうかと思うのw

1002 名前:デフォルトの名無しさん [2022/07/15(金) 13:22:47.81 ID:kd+ZBNkRd.net]
ここでRuby馬鹿がRubyではこうなるとか書くのは見えている

1003 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 19:00:37.71 ID:f/pTHFXb0.net]
オレンジ色のオレンジはどうなの?

1004 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 19:14:37.65 ID:pxeFAKZo0.net]
どんなに良コード書いても難癖付けられるのがこのスレ

1005 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 02:37:29.28 ID:hVvvoOFI0.net]
userformをshowした直後にunloadするとexcelが落ちるのは何とかならんかのぉ
hideじゃだめなんじゃunloadじゃないと

1006 名前:デフォルトの名無しさん [2022/07/16(土) 07:52:34.81 ID:1SMMBEmo0.net]
UserForm1.Show vbModeless
Unload UserForm1

って意味なら、別に落ちなかったけど

1007 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 08:52:29.38 ID:eHBMNsDF0.net]
逆になんでhideじゃダメなの

1008 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 13:26:34.40 ID:NLVpHfZz0.net]
とりあえずEXCELが落ちるっていうコードと環境出せ
話はそれからだ



1009 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 18:00:44.38 ID:2WLM14wy0.net]
>>978
Ruby で作った

require "csv"

input_str = <<"EOT"
RED,BLUE,APPLE
RED,BLUE,BANANA
RED,BLUE,GREEN,ORANGE
RED,BLUE,YELLOW,WHITE,GRAPE
RED,BLUE,WHITE,CHERRY
DOG,CAT,RABBIT,COW,BEAR
EOT

csv = CSV.new( input_str )
input_ary = csv.read # 2次元配列

# 各単語の出現回数を数える。Hash の初期値は、0
hash = input_ary.each_with_object( Hash.new( 0 ) ) { |row, hash|
row.each { |word| hash[ word ] += 1 }
}

# 出現回数が2以上の単語を削除する
input_ary.map! { |row|
row.delete_if { |word| hash[ word ] >= 2 }
row
}

# 2次元配列を、CSV 文字列に変換する
csv_str = input_ary.map( &:to_csv ).join
puts csv_str

1010 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 19:45:04.74 ID:vYu+PcKIa.net]
>>996
廃止決定した言語じゃん

1011 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 00:22:00.69 ID:lEW2LcQY0.net]
あんたら色んな言語を習得していてエリートなんだな?
5ちゃんねるなんかにいてもったいねーわ

1012 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 02:44:22.32 ID:rPHWMq+g0.net]
>>995
993と同じ、2行だけ
エクセルは2013

>>994
閉じたWebbrowserを再表示する方法がわからないので仕方なく

1013 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 04:50:23.78 ID:fLi6s9i70.net]
こいつの書くコード、rubyとしてもクソコードなのがほんとひどい

1014 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 2時間 26分 42秒

1015 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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