1 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 07:07:35.59 ID:tS4zKdphH.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ↑同じ内容を3行貼り付けること ExcelのVBAに関する質問スレ コード書き込みや作成依頼もOK 次スレは>>980 が立てること 無理なら細かく安価指定 ※前スレ Excel VBA 質問スレ Part76 https://mevius.5ch.net/test/read.cgi/tech/1651339421/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
496 名前:490 (ワッチョイ bf66-bBdM) [[ここ壊れてます] .net] 初心者なのでプロシージャ内で処理の順番を変えたくなる時があります。 使う直前に宣言したいのでプロシージャの初めに宣言は出来ればしたくありません。 コピペでソースコードを入れ替えて処理の順番を変えるとforが1回目とfor2回目が入れ替わってしまう事があります。 だから毎度forを使う前は、foreacheもそうですが、宣言が必要かをプロシージャ内を戻って探します。 forが終わるたびに未定義に出来ればいいなと思ったのは使い終わった変数名が後からかぶっても 使い終わった時点で未定義に戻しておけばエラーも不具合も出ないからです。 他の言語だとあるのであるかなと思ったのです。
497 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 10:03:36.29 ID:Z9J6cI+IM.net] はい、わかりました
498 名前:デフォルトの名無しさん [2022/09/06(火) 10:56:34.50 ID:MUc/w1ud0.net] >>496 >他の言語だとある これ本当?
499 名前:デフォルトの名無しさん [2022/09/06(火) 11:47:55.76 ID:DWdJNYk/d.net] 馬鹿ではなく糖質かな
500 名前:デフォルトの名無しさん [2022/09/06(火) 11:53:04.38 ID:o3g0SSKzd.net] 会社のパソコンでvbsからエクセルvbaを起動させメール本文、添付ファイルを作成し添付、outlookでメール送信をしたいのですがOutlookが起動しません。 エクセルから手動でvbaを起動すると正常に動作するのですが、vbsから起動するとタスクバーのエクセルが点滅し停止します。 特にエラーを吐いている様子はありません。 何か思いあたる部分があればご教示ください
501 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 12:06:14.05 ID:QxRWO4Sk0.net] 漏れの推測だけど、 >タスクバーのエクセルが点滅し これは、バックグランドで起動しているのでは? それで、エクセル内のマクロなどが起動しないとか?
502 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 12:18:01.17 ID:iobTnTaB0.net] >>498 定義済みが未定義になるわけじゃないけど ブロックスコープとかいうやつだな 残念ながら旧VBやVBAにはない。VB.NETにはあるけど VBAの一番狭いスコープはプロシジャ なので、プロシジャの先頭に宣言まとめとけって作法がある
503 名前:デフォルトの名無しさん [2022/09/06(火) 13:03:51.66 ID:BhZhCXYFd.net] >501 vba自体は動作しております。 手動でvbaを起動するとエクセルが開き添付ファイルなどを作成し、Outlookで送信するのですが vbsでの起動だと添付ファイルまでは作成するのですが、Outlookが立ち上がらず、タスクバーのエクセルが点滅して動作が止まります。 ネットで調べても事例が出てこず、会社のパソコンなのでシステム管理者に制限をかけられているのか… 何か調べる方法がありましたら教えてください
504 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 13:07:25.60 ID:Z9J6cI+IM.net] printfデバッグでどこまで動いているか確かめましょう!
505 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 13:13:46.25 ID:Td+5EGNEa.net] >>496 始めに宣言を書いている方が探しやすいと思うけど 要らなさそうなものはまとめてコメントして確認すればいいわけだし
506 名前:デフォルトの名無しさん (ワッチョイ 07da-oTx6) mailto:sage [[ここ壊れてます] .net] VBAでメールとか初めて見た
507 名前:デフォルトの名無しさん (ワッチョイ e72f-HH83) mailto:sage [[ここ壊れてます] .net] >>500 手動で実行できるなら、VBSで起動しているときのユーザとその権限があやしい つかエラー吐いてないんじゃなくて、ちゃんとエラー捕まえられてないだけだと思うが あとスクリプト系からのメール送信はいろいろセキュリティ周りでチェックされるかもしれん とくに会社で管理されてるようなPCなら、ちゃんと管理者に許可とってからやれよ
508 名前:デフォルトの名無しさん (ワッチョイ 2749-DXwO) mailto:sage [[ここ壊れてます] .net] メール送信用のc#のexeつくって呼び出させるようにしたことならある あとsendgridAPIよぶの 前者は他にも使い回したな。.NETcoreだった気がするからいつまで使えるやら
509 名前:デフォルトの名無しさん (ワッチョイ 5f01-yqJ9) mailto:sage [[ここ壊れてます] .net] >>498 あるものもある、例えばPowerShellにはそのものズバリのRemove-Variableなんてものがあったりする
510 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 16:28:13.42 ID:QxRWO4Sk0.net] >>503 >タスクバーのエクセルが点滅して動作が止まります バックグランドで起動しているだけじゃ、エクセルのマクロが実行されないのかも printf デバッグで、どこまで動いているか確かめるべき! エクセルのマクロの、Outlook の起動コードの前後で、何かを出力すれば? Outlook の起動前に、端末・ファイルへ出力する Outlook の起動コード Outlook の起動後に、端末・ファイルへ出力する
511 名前:デフォルトの名無しさん [2022/09/06(火) 20:05:52.59 ID:D5ckGmEva.net] 動作が止まるのは終了したからかもよ
512 名前:490 (ワッチョイ bf66-bBdM) [[ここ壊れてます] .net] >>505 なるほど。そういう方もおられるのですね。 EXCEL VBAのプロシージャはあんまり長くしない方がいいよみたいなサイト読んで影響受けてます。 コードの書き方って結構こだわりを持っている方がいるようで、自分はそれに影響を受けやすい方です。 自分もこだわりたい方なんだと思います。 EXCEL VBAを知って、宣言は直前が基本ですよみたいな記事読んで強く影響受けました。 だから使い終わるごとに未定義に出来れば毎度宣言しなおせるからすっきりするのになぁみたいな気持ちでした。 EXCEL VBAとしてはfor やfor eachに使うような変数は先頭宣言にしてやっていこうと思います。
513 名前:デフォルトの名無しさん (ワッチョイ 47ac-DXwO) mailto:sage [[ここ壊れてます] .net] ちゃんとfunction分けてたら直前でいいけど、 大抵クソデカ関数ひとつか、グローバル宣言祭りだろうからなあ
514 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 20:37:51.18 ID:z3X/Y8zI0.net] >>512 > EXCEL VBAとしてはfor やfor eachに使うような変数は先頭宣言にしてやっていこうと思います。 とりあえずそれで動くところまで持って行ってコードが固まったらこだわりのコードスタイルにリファクタリングすればいいかと
515 名前:デフォルトの名無しさん [2022/09/06(火) 21:28:56.11 ID:3UeoLADl0.net] >>512 >他の言語だとあるのであるかなと思ったのです。 他の言語って具体的に何? 答えられない?逃げる?それともまた言い訳?
516 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 21:54:35.94 ID:iobTnTaB0.net] >>512 個人的に、VBAに限定した話で宣言は直前とかいう記事はあんまり信用できないと思ってる 最近の言語ならそれで良いんだけどね
517 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 22:58:52.94 ID:z3X/Y8zI0.net] >>515 >>509 煽るならもうちょい知識をつけてからにした方がいい
518 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 23:05:26.43 ID:NuTb9qxy0.net] あまり複雑化しても辛くなるしな シンプルにシンプルによ
519 名前:デフォルトの名無しさん [2022/09/07(水) 07:28:44.73 ID:TmSq6TyA0.net] >>516 どういうこと? 最近の言語と違って ・ブロックスコープがない ・宣言と同時に代入できない 以上VBAの特徴2点を差し引いたとしても、 先頭宣言が直前宣言より優れている所なんかひとつもないと思うんだが
520 名前:デフォルトの名無しさん [2022/09/07(水) 09:01:28.19 ID:l5y/t4MDM.net] 個人的信条を議論するのは無意味
521 名前:デフォルトの名無しさん (アウアウクー MMbb-2Jzk) mailto:sage [[ここ壊れてます] .net] 変数はImmutableにするのが最近の言語でしょ こうなるもうどこで宣言しようが関係ない
522 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:33:33.73 ID:nObPwJJb0.net] >>519 まあ>>520 に同意しつつ、一番の理由は、 VBAでの一般的なスタイルに反するからなんだが ブロックスコープがないのに直前で変数宣言するのは、 違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが むしろ直前宣言が優れている点ってどこだよ?
523 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:40:46.55 ID:qgePcMk7a.net] >>519 同意する まあ>>516 は理由を書いてない時点であまり信用できないと思ってる
524 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:45:10.64 ID:qgePcMk7a.net] >>522 > 違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが そんなものどこで宣言しても同じだろ > むしろ直前宣言が優れている点ってどこだよ? コードを追う時に見える範囲に宣言あれば型とかも分かるだろ
525 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:47:45.63 ID:URQHgzNh0.net] >>522 ・別functionにしない ・設計が出来ない ・順番がコロコロ変わる こういう場合は直前の宣言がいいんだろうな
526 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:48:48.00 ID:ie60y+bR0.net] インデックスとはいえ変数を使い回すのはNGなのです! VBAだとしても許されません!ロボコン0点
527 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:14:29.57 ID:lr2lUZXda.net] 質問でもなく他人のコードの変数をどこに書こうがどうでもいいのに書き方に熱くなる人はバカなんだろうね まあそういう技術的な部分に関係ないところしか語れない程度が集まるスレなんだろうけどw
528 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:36:38.49 ID:pBpkzzj3a.net] >>527 そんなに熱くなるなよw
529 名前:デフォルトの名無しさん (スッップ Sd7f-VPUc) [[ここ壊れてます] .net] >>517 で、答えられずに逃げたのかよ
530 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:55:49.52 ID:qYDBMpOU0.net] >>529 マジでアホなの? PowerShellって書いてあるだろw
531 名前:デフォルトの名無しさん [2022/09/07(水) 21:25:08.49 ID:dOhAzb3IM.net] >>530 へー、shellコマンドと言語の違いがわからない人か 納得
532 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 21:50:42.41 ID:qYDBMpOU0.net] >>531 PowerShellって結構リッチなプログラム言語ですけど? 頭大丈夫?
533 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 22:25:03.60 ID:GXE70sRqM.net] シェルとシェルスクリプトは間違えてませんですわー
534 名前:デフォルトの名無しさん [2022/09/07(水) 22:55:46.20 ID:N0bzWtYO0.net] >>524 そうね。ブロックスコープは確かに便利。 ただ、匙加減の問題にもなるけど ブロックスコープに慣れるとついつい 単一責任原則の考え方がおざなりになりがちで 密結合なものを作ってしまい易くなる。 なので、あくまで俺はだけど EXCELのVBAに関してはメソッドや関数の 頭に変数定義を行うようにしている。 それでコードが読み辛くなるようであれば その時点でリファクタリングの対象になるという考え。
535 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:29:34.28 ID:N0PmJDO50.net] でも誰も読まないんだよなー
536 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:46:23.08 ID:QgSPv1dJ0.net] ここの回答者は上級者なんだからVBAの事端から端まで知っていると思っていたんですけど?? なんでこんなに荒れているのですか?
537 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:51:19.61 ID:oCHm3LOdM.net] VBAで単一責任て そもそも表計算ソフトで画面やDBモドキ作ってる時点でおかしいと思わないのか
538 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 00:18:03.89 ID:GEpvz+Yp0.net] 知識と人間性には何も関係がないからじゃね
539 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 01:29:45.47 ID:ih3U5PTX0.net] だって回答者に回れるって事は知り尽くしてるって事なんでしょ? ちょっと詳しいだけじゃ回答できるはずないもんね?
540 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 01:40:01.52 ID:eb3KVsRH0.net] >>539 ソースは? 誰の発言?
541 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 04:43:57.30 ID:dSUuwrfW0.net] >>534 なので、の前後の関係がよくわからん > EXCELのVBAに関してはメソッドや関数の頭に変数定義を行うようにしている。 それこそ余計蜜結合になるかと
542 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:11:23.79 ID:vw1M88UR0.net] 誰が上級者と認定したん? ここのカキコに資格試験なんかあるかいな・・・ 回答が使えるかどうか、正しいかどうかが全てじゃ。
543 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:33:16.02 ID:13BgqVgC0.net] どこで宣言するか問題って、画面上部をスクロールせず固定出来るようになれば解決するんだろうな。 エクセルは出来るんだから、VBAの画面も出来るようにして欲しいものだ。
544 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:54:06.36 ID:9KZ4CtoQa.net] >>543 VBEは昔ながらのUIなので垂直スクロールバーの上部を下にドラッグすると同一オブジェクトコードの水平分割表示ができるけれど
545 名前:デフォルトの名無しさん [2022/09/08(木) 08:07:26.88 ID:YfOXyicz0.net] >>541 分かり辛かったかな? 平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。 そもそもひとつの関数やメソッドにはひとつの役割だけ持たせるべきで、そうした場合、変数が何に使ってるか分からないくらい長くなること自体あまりないし、 それで長くなるようであればそもそもの作りがおかしいのでリファクタリングの対象とする、ってことなんだけどね。
546 名前:デフォルトの名無しさん (アウアウウー Sa8b-Ro21) [[ここ壊れてます] .net] VB/VBA/ExcelもAccessもOfficeごと窓からポイッ
547 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 10:06:01.26 ID:dSUuwrfW0.net] >>545 > 平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。 それ変数の宣言位置とは違う話だろ まあ先頭に変数宣言するメリットを説明できないならいいや、バイバイ
548 名前:デフォルトの名無しさん (ワッチョイ 5f4f-ozIc) [[ここ壊れてます] .net] >>547 なんで? どうせ同じ関数内で同じ名称の変数なんて作れないんだから 全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。 使ってる変数名を再宣言しようとして「あ」となることもないし、 同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。
549 名前:デフォルトの名無しさん (ワッチョイ 5f4f-ozIc) [[ここ壊れてます] .net] ま、そもそもそんなこと気にするくらい長いコード書いちゃいけないんだけどね。 そちらのレベルに合わせて話してもそれだけのメリットはあるよ。
550 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 13:19:53.66 ID:E2yDW5TJ0.net] Wordがどうしようもなく使いにくいので、 Excel VBAで代わりのツールを作りたいと思います。 こんな考え方は邪道でしょうか?
551 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 13:50:27.43 ID:N6XG++JQ0.net] WordVBAを何故つかわない? マウロ記録がないOutlookVBAやPowerpointVBAなら一瞬気持ちがわかるが
552 名前:デフォルトの名無しさん [2022/09/08(木) 14:17:07.18 ID:Sm7a3fWy0.net] loopのカウンタを使用後に消さないと 順番入れ替えたらバグるとか気にする初心者にはvba向いてないと思う
553 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 16:06:28.64 ID:e4Jhfn6X0.net] ワードにできることはエクセルでほぼ出来るからワードの使いかた忘れてしもた しかし困ったことはない
554 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 17:02:48.44 ID:dSUuwrfW0.net] >>548 > 全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。 コボル臭が... w まあ使ってる近くにあれば宣言なども簡単に確認できるメリットより命名のメリットを重視する人もいるんだね > 使ってる変数名を再宣言しようとして「あ」となる んだから > 同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。 なんてなるわけないと思うけど?
555 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 19:47:18.35 ID:wUuMBq/Ad.net] Excel → Markdown → Word アウトライン変換のマクロを作れば大分マトモになる予感 Excelの列で見出しを識別する感じで
556 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:50:29.07 ID:yQKHhevv0.net] intersect( activecell.ListObject.HeaderRowRange,activecell.EntireColumn).Address テーブル上にアクティブセルがあり、そのセルの列ラベルのアドレスを調べたく こんなのを書いたのですが、もっと他にイケてる書き方はないでしょうか
557 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 10:48:25.59 ID:+u60WJ7w0.net] activeCell.End(xlUp).Address は? 上に隣接する別のテーブルがないことが条件だけど
558 名前:デフォルトの名無しさん [2022/09/10(土) 15:51:20.36 ID:qRafw5tCp.net] >>557 それだとテーブルが1行目開始でなくて テーブルの項目名の部分にアクティブセルがあった場合は テーブルから離れた位置にカーソルが行ってしまうな
559 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:14:19.08 ID:W9G67fQJ0.net] バイナリデータの書き込みについて質問です。 hello という文字列をいったんバイナリにしてファイル書き込みするような プログラムを書いているのですが、書き込みすると h e l l o というように変なゴミが入ってきます。 vbaではバイナリデータの書き込みは完全にはできないということなのでしょうか。 該当コード https://ideone.com/MDI6yW
560 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:15:18.73 ID:W9G67fQJ0.net] 書き込みすると変なゴミデータが見えなくなってしまいましたが、要するに 正確に半角英数字でhelloという文字が再現できないのです。
561 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:27:32.82 ID:PnV//sAoa.net] >>560 どういう内容なのかダンプして確認しないのかい?
562 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:41:57.90 ID:yPB6Wd0g0.net] >>559 Option Explicit Sub main() Dim bs(4) As Byte bs(0) = Asc("h") bs(1) = Asc("e") bs(2) = Asc("l") bs(3) = Asc("l") bs(4) = Asc("o") Dim fn As Integer: fn = FreeFile Dim fpath As String: fpath = "C:\指定のパス\output.txt" Open fpath For Binary As #fn Len = 1 Dim i As Integer For i = LBound(bs) To UBound(bs) Put #fn, , bs(i) Next i Close #fn End Sub
563 名前:559 mailto:sage [2022/09/11(日) 01:50:58.58 ID:W9G67fQJ0.net] >>562 for each で受ける変数をvariant型にするとうまくいかんということですか? open の変数にLen=1(1バイトごと)っていれられるんですね。
564 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:53:10.28 ID:yv0WXRwp0.net] >>559 説明はちゃんと読もう vbaはかなりゆるゆる言語なので、なるべくvbaにあわせたコードにしたほうがいい https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/put-statement >書き込まれる変数が 数値型の Variant である場合は、Put により、Variant の VarType を識別する 2 バイトが書き込まれた後に、変数が書き込まれます。 こんなもん追いかけてられんよ ステートメントは極力使わず、関数にした方がいいと思う もう少し言うと、実現したい事を直接聞いた方がいい。 vbaでバイナリとかめんどくさすぎて誰もやってないので、 できるかどうかなんてあんまりみんな分かってない >>561 してもあんま意味ないだろ
565 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:05:46.07 ID:yPB6Wd0g0.net] >>563 Len = 1 にしても無駄 あと、EachはVariantしか使えない >>564 ところがバイナリダンプしてみると1文字あたり2バイトしか書き込まれてないんだよな その説明の通りだと3バイトずつ書き込まれるはずなのに
566 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:07:03.03 ID:W5Eoe6lQa.net] >>564 今回はもう結果が出ているけれど、入出力を行ったら確認しないのか? 出力結果から意図するものとどう異なるかによって予測できる場合もあるだろ
567 名前:559 mailto:sage [2022/09/11(日) 02:11:34.10 ID:W9G67fQJ0.net] >>564 正直説明一々読むの大変なのでここで聞いてそのあたりをつけようと思ってます。 >ステートメントは極力使わず、関数にした方がいいと思う ちょっとここがよくわからないんですがどういうことですか。 >もう少し言うと、実現したい事を直接聞いた方がいい。 vbaの練習のためにとりあえずbase64エンコーディングを実装しようとしてました。 エンコーディングはできました。デコードでつまづいて格闘してましたが、デコードもとりあえずできました。 つぎは、bmpファイルを読み込んで1x1pixcelに縦横絞ったセルのシートに画像表示させるとか やろうと思ってます。
568 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:12:49.77 ID:yv0WXRwp0.net] >>565 3バイトずつだぞ https://i.imgur.com/Um3HyuV.png
569 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:19:41.47 ID:yv0WXRwp0.net] >>567 結局やりたいことはライフゲームとか、画像処理だろう vbaは、事務処理特化なんだ。本当にやめたほうがいい。 vbaでクリエイティブな事をやろうとすると、めちゃくちゃ遅い 入出力用のセルがすごく見やすいのはわかるんだけど、別言語でやったほうがいい 具体的に言うとC#かvb.netがいい。 jsならそのままアプリにも移行できる
570 名前:559 mailto:sage [2022/09/11(日) 02:24:11.91 ID:W9G67fQJ0.net] とりあえず入門したいんで、アルゴリズムわかるやつ実装してるだけなんであんま考えてない。 最終的には機械学習実装できりゃいいなと思ってるんで、bitmap表示実装できたら vbaでそこまでやるレベルになるかなと。
571 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:44:48.34 ID:+Dglx5gI0.net] vbaの使い方間違ってますよ
572 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 11:47:30.27 ID:scHPWuyOa.net] 他人が何をやろうと勝手なんだから質問にこたえないなら放置すればいいと思うけど 説教野郎って減らないよね
573 名前:デフォルトの名無しさん [2022/09/11(日) 13:01:03.57 ID:qfkrXmQcd.net] >>567 >正直説明一々読むの大変なのでここで聞いてそのあたりをつけようと思ってます 死ね
574 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 13:48:26.08 ID:4omWB5g70.net] いや、普通に頭くるだろ? ダメダメな使い方してると
575 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 17:18:35.58 ID:9MrulJbSd.net] >>569 ライフゲームってなんなのかグーグルで検索したら 結果ページ上で勝手にライフゲームが始まってたわ さすがグーグル
576 名前:デフォルトの名無しさん [2022/09/11(日) 18:42:32.58 ID:+bJdyqft0.net] >>575 気づいたときにはライフがゲームオーバーになってるよ
577 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 20:43:41.22 ID:yPB6Wd0g0.net] 本当だ ブラウザの背景でライフゲームが動いてるw 無駄な機能多すぎるだろGoogle
578 名前:デフォルトの名無しさん [2022/09/11(日) 22:06:38.09 ID:mrmcBHlY0.net] ttps://excel-ubara.com/excelvba5/EXCELVBA228.html エクセルの神髄さんのところにあるクイックソートの引数について質問です lngMinとlngMaxを必ず指定しないといけないようなのですが、 どんな数字を入れればいいのですか? vBase = argAry(Int((lngMin + lngMax) / 2)) こうなっていて、argAryインデックスの2倍を超える数値は入れられないようです。 インデックスとしての真ん中であるなら関数側でuboundとかlboundとかから計算すればいいように思いました。 バブルソートやインサートソートと違ってイマイチやってる事がわからないので、 lngMinとlngMaxの引数にいれるべき数値がわかる方おられましたら教えてください。
579 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 22:37:51.72 ID:3GTYFVAp0.net] >>578 配列のうちでどこをソートするか指定できるようになってるんじゃないですかね
580 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 22:42:49.09 ID:6zTUjY+M0.net] >>578 ソートしたいレンジの最初と最後のインデックス クイックソートは最初にピボットを決めてそれより小さいものをピボットより前に、大きいものをピボットの後ろに移動して、ピボットの前の区間と後ろの区間をそれぞれクイックソートする方法を繰り返す ピボットの決め方は色々あるけど、その人は配列の真ん中のオブジェクトを選んでるだけ。ランダムに選ぶと平均的には最も良い結果が得られるけど、もうひと手間かかる
581 名前:デフォルトの名無しさん mailto:sage [2022/09/12(月) 01:30:49.61 ID:0s0pxnwOM.net] ユーザーフォーム内のコマンドボタンではfunctionの呼び出しはできない仕様でしょうか? 似たようなコードのボタンがあり、特定ブックを取得するための同じコードを全部のボタンに書いています ごちゃごちゃしてしまっているのできれいにしたかったのですが、functionが呼び出せず変数が空でエラーになってしまいます
582 名前:デフォルトの名無しさん [2022/09/12(月) 07:39:53.33 ID:STPpGgy+0.net] >>581 呼び出し出来るよ。そのエラーになったコードをここに書いてもらえれば原因がわかるかと。
583 名前:デフォルトの名無しさん [2022/09/12(月) 11:53:11.04 ID:fWVKyvtQa.net] sub から呼ぶとか
584 名前:578 mailto:sage [2022/09/13(火) 09:42:49.11 ID:g8hgly2P0.net] >>579 やってみたら確かに!驚きです。 >>580 クイックソートって発明品みたいなものですよね。 人間が手動で並べ替えても慣れる程にクイックソートみたいなやり方が高速になっていくんですかね。 皆さんありがとうございました。
585 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 10:05:15.02 ID:kJFB2T9s0.net] いえいえ
586 名前:デフォルトの名無しさん [2022/09/13(火) 23:06:23.52 ID:m4C/g6mCM.net] >>582 フォームが3階層くらいありますが 1.モジュールからフォームの呼び出し Sub commentForm() rowBtn = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row colBtn = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column 大分類.Show vbModeless End Sub
587 名前:デフォルトの名無しさん [2022/09/13(火) 23:09:43.50 ID:m4C/g6mCM.net] すみません、1つ目フォーム呼び出しのモジュール内に以下のコードがあります Public ShIndex As String 2階層目で3つの大分類の選択 2.分類選択 Private Sub CommandButton1_Click() 'コマンドボタンのタイトル反映 ※エクセルのセルを反映させています。 中分類.CommandButton1.Caption = Worksheets("2-1").Range("C1").Text 中分類.CommandButton2.Caption = Worksheets("2-2").Range("C1").Text 中分類.CommandButton3.Caption = Worksheets("2-3").Range("C1").Text 中分類.CommandButton4.Caption = Worksheets("2-4").Range("C1").Text 中分類.CommandButton5.Caption = Worksheets("2-5").Range("C1").Text 中分類.Show vbModeless End Sub
588 名前:デフォルトの名無しさん [2022/09/13(火) 23:11:31.11 ID:m4C/g6mCM.net] 3.さらに次の分類へ Private Sub CommandButton1_Click() ShIndex = "2-1" 'コマンドボタンのタイトル反映 ※エクセルのセルを反映させています。 中分類1.Caption = Worksheets(ShIndex).Range("C3").Value 中分類1.CommandButton1.Caption = Worksheets(ShIndex).Range("D3").Value 中分類1.CommandButton2.Caption = Worksheets(ShIndex).Range("D7").Value 中分類1.CommandButton3.Caption = Worksheets(ShIndex).Range("D11").Value 中分類1.CommandButton4.Caption = Worksheets(ShIndex).Range("D15").Value 中分類1.Show vbModeless End Sub
589 名前:デフォルトの名無しさん [2022/09/13(火) 23:36:32.69 ID:m4C/g6mCM.net] 4,最終の選択ボタン コメントアウトの範囲内をfunction(wbSerch)として、値を返して変数を使用したいです Private Sub CommandButton1_Click() Dim wbRepName As String '########## ここから ########## Dim i As Long Dim wb As Workbook Dim wbFullPath As String For i = 1 To Workbooks.Count Set wb = Workbooks(i) If wb.FullName Like "*検索ワード*" Then ' * *に挟まれた文字を含むブックを検索する wbFullPath = wb.FullName Exit For End If Next Dim pos As Long pos = InStrRev(wbFullPath, "\") If (pos > 0) Then wbRepName = Right(wbFullPath, Len(wbFullPath) - pos) End If '########## ここまで ########## Dim rowRep As Long rowRep = Worksheets("シート名").Cells(rowButton, "Q").Value Dim num As Long num = 1 If Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 1, "H") = "" Then Workbooks(wbRepName).ActiveSheet.Range(Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 1, "H"), Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 2, "H")) = _ Worksheets(ShIndex).Range(Worksheets(ShIndex).Cells(3 + (num - 1) * 4, "E"), Worksheets(ShIndex).Cells(3 + (num - 1) * 4 + 1, "E")).Value End If Workbooks(wbRepName).ActiveSheet.Range(Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 4, "H"), Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 7, "H")) = _ Worksheets(ShIndex).Range(Worksheets(ShIndex).Cells(3 + (num - 1) * 4, "F"), Worksheets(ShIndex).Cells(3 + (num - 1) * 4 + 3, "F")).Value End Sub
590 名前:デフォルトの名無しさん [2022/09/13(火) 23:37:53.43 ID:m4C/g6mCM.net] コードをアップする際に一部書き換えで変数が微妙に違うのは許してくださいw
591 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 01:24:17.40 ID:jzWlgqKP0.net] >>589 大量のコード張るなら、どっかコード張るサイトあるからそこ使ってくれ >コメントアウトの範囲内をfunction(wbSerch)として、値を返して変数を使用したいです やれば良いとしか 自分でやって動かなかったっていうコード出せよ エラーが出たならエラー内容も Functionが呼び出されないんじゃなくて、呼び出したけど値を返してないか 返された値をちゃんと受け取ってないんじゃないかと予想したがな
592 名前:デフォルトの名無しさん [2022/09/14(水) 05:04:23.30 ID:Pxkwm+eH0.net] >>589 色々気になるところばかりですが、Functionだけについていうと Public Function プロシージャ名() As String '処理 プロシージャ名 = ファンクション内で作成した文字列 End Function という感じで作って、呼び出す側は下記で wbRepName = ファンクション名
593 名前:デフォルトの名無しさん [2022/09/14(水) 08:09:29.31 ID:wHV8fEyKd.net] >>592 ありがとうございます やっぱりそれでいいんですよね とりあえず動かないのは困るので、関数を呼び出すコードは削除してしまったのでまたやり直してみます 適当にネットで検索して継ぎはぎしているのですが、これはやめた方がいいみたいなところがあれば教えていただけると
594 名前:デフォルトの名無しさん [2022/09/14(水) 08:09:41.99 ID:wHV8fEyKd.net] >>592 ありがとうございます やっぱりそれでいいんですよね とりあえず動かないのは困るので、関数を呼び出すコードは削除してしまったのでまたやり直してみます 適当にネットで検索して継ぎはぎしているのですが、これはやめた方がいいみたいなところがあれば教えていただけると
595 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 10:47:45.73 ID:DQiHAQaU0.net] >>594 ネットで継ぎはぎはやめたほうがいい
596 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 14:30:03.63 ID:AS+oyxbj0.net] 継ぎはぎっていちばんやってはダメな事でしょ 不具合でたら修正困難