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


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

Excel VBA 質問スレ Part79(ワッチョイあり)



1 名前:デフォルトの名無しさん [2023/01/28(土) 12:12:12.41 ID:UjlIZ1Ov0.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

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

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

※前スレ
Excel VBA 質問スレ Part77
https://mevius.2ch.net/test/read.cgi/tech/1658009255/
Excel VBA 質問スレ Part78
https://mevius.2ch.net/test/read.cgi/tech/1667104996/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

461 名前:デフォルトの名無しさん [2023/06/08(木) 20:19:16.31 ID:zo01FRG40.net]
>>454
私はそう言う事が初めての経験で全く何が何だかさっぱりわからなくて理解が出来ていません

それを言うならば未経験の事はするな、引き受けるな、出来ると言うな
という話になると思います
それにOJTとはなんですか?

462 名前:デフォルトの名無しさん mailto:sage [2023/06/08(木) 20:20:21.37 ID:SX7QkWSs0.net]
あなたが欲しい答えはこうでしょう。
誰々が断れと言ったので断ります。

463 名前:デフォルトの名無しさん [2023/06/08(木) 20:28:49.61 ID:zo01FRG40.net]
私は今まで働いてきて聞いた限りの話では
出来ない事を安請け負いするな、仕事だから
みたいな話なのでこれからはやった事がない事は全て断ろうと思います

464 名前:デフォルトの名無しさん mailto:sage [2023/06/08(木) 20:33:09.84 ID:DSxTca6Td.net]
>>452
セルラー通信だから勝手に変わってるだけで、
ID:Snmtqfef0とID:Wxh+dghv0みたいな丁寧な自演と比べちゃダメでしょw

465 名前:デフォルトの名無しさん mailto:sage [2023/06/08(木) 20:55:57.80 ID:Wxh+dghv0.net]
>>458
日付が変わってるから ID が勝手にしろ変わるだけでそれを自演と言われちゃな
やっぱ妄想がひどいわ(笑)

466 名前:デフォルトの名無しさん mailto:sage [2023/06/08(木) 21:21:22.44 ID:uYSjYq8B0.net]
>>457
もし何もできないのであれば全ての仕事を断ればいい
それで給料もらえるのかは知らんが

467 名前:デフォルトの名無しさん [2023/06/08(木) 21:30:46.15 ID:zo01FRG40.net]
>>460
出来ない事やわからない事を出来るというな、とか引き受けるなとか言うなら
何にも引き受けられませんよー

468 名前:デフォルトの名無しさん mailto:sage [2023/06/08(木) 22:17:36.82 ID:uYSjYq8B0.net]
>>461
俺はできる側だから関係ない

469 名前:デフォルトの名無しさん [2023/06/08(木) 23:03:31.49 ID:zo01FRG40.net]
>>462
素敵🥹



470 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 01:41:19.35 ID:HkCkkhjZ0.net]
出来るか出来ないか分からないときは調査費用見積もればいい
身内相手でも時間くれでいい
話通じないならもう無理でええやろ、次に行く

471 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 07:51:36.36 ID:BdvP8KZKd.net]
>>459
遠回しに言っても理解できないみたいだから丁寧に言うと、
> なかなか 俺のファルス発言で盛り上がってるじゃないか
匿名掲示板で自己顕示欲を発露させてるのがまずキモい
それも誇れるどころかむしろ恥である読み間違いにおいてってところがまたキモい

> コンピューターに英語で話しかけてるわけではなく、所詮 記号なんで覚えやすいファルスで頭の中は統されてるわ
>
> それに Falseって普通の文章や 会話で使ったことないし、フォルスを使わなくて困ったことないわ

誰も聞いてないのに間違いの言い訳始めるのがキモい
角行間に改行入れてるのがキモい
隙あらば自分語りがキモい
それらを踏まえた上での托
要するに間違いそのものより精神性が気持ち悪い

472 名前:デフォルトの名無しさん [2023/06/09(金) 07:55:56.79 ID:kQpJ5obDd.net]
やったとこがない仕事を勉強してやる事さえ否定的な考えの人たちが世の中には多いみたいなので
やった事がない事は何もするべきではないのでは
私が色々聞いた話の理解では、例えば医療従事者は例えどんな些細なミスでも許されない、という様な話でした

473 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 09:06:25.43 ID:uWjl3yo30.net]
>>465
本当に全部しょうもない理由で他人をキモ呼ばわりしてるわけだ
その偏狭な精神性がキモいわ
NG 登録しとくから さよなら

474 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 10:51:38.01 ID:2C/DXyS30.net]
>>466
仕事しない会社員は会社辞めるしかないんじゃね

475 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 11:22:56.72 ID:FJj7F9Bld.net]
ワッチョイなしもありも雑談スレに成り下がってほんと不快だな
どういう生き方したらこんなゴミみたいな人間出来るんだろ

476 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 11:35:57.88 ID:YWd0CHVo0.net]
雑談専用スレ立てるとか言って何年経つんだよ?

477 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 12:37:16.30 ID:V26uJVvA0.net]
雑談スレを作っても誰も使わないから無駄
ここの惨状を見てみ

【質問不可】Excel総合相談所スレの雑談・議論スレ5
https://mevius.5ch.net/test/read.cgi/bsoft/1624005735/

478 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 14:23:04.85 ID:smTSxqoia.net]
簡単なユーザー定義型(2~3値を格納しておくだけの構造体)をtypeじゃなくクラスで作って、dictionaryオブジェクトのitemに9万個ぐらいインスタンスを紐付けたら、
コード終了時のオブジェクト解放にめちゃくちゃ時間がかかるようになった(数十秒)
やっぱこういうときは配列にするしかないのかな?

479 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 18:12:33.56 ID:V26uJVvA0.net]
>>472
スピードを取るか保守性を取るか
スピード優先ならクラスなんか作らずに単純な配列にする
たった数十秒なら俺ならそのままにする



480 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 20:25:26.92 ID:tjC4mlZIM.net]
オブジェクトの開放だけで数十秒もかかるのか

俺もその手法を多用するから興味あるな
俺が扱うデータは一万から三万行程度だけどどのコードも一~二秒くらいで終わる

481 名前:デフォルトの名無しさん mailto:sage [2023/06/10(土) 13:37:17.92 ID:l4DrLtSE0.net]
>>473-474
レスサンクス
言われてみると確かに時間かかりすぎてるし変だなと思ってよくよく確認したら、
まず、9万個のインスタンスを紐付けた辞書の他に、16万個のインスタンスを紐付けた辞書が作られてた
更に、プロパティの一つに別のユーザー定義型のインスタンスが格納されてた
(コンストラクタあるしGetプロパティもSetで返ってたが見落としてた)
そっちのクラスのデストラクタが書かれてなかったので記述したら、普通に一瞬で終了するようになった
色々と教訓になった、ありがとう

482 名前:デフォルトの名無しさん (ワッチョイ 1310-2rqm) mailto:sage [2023/06/11(日) 07:46:10.07 ID:UERnr49N0.net]
MsgBoxがUserFormとシートの間に挟まって見えないの何だぜ

483 名前:デフォルトの名無しさん mailto:sage [2023/06/11(日) 08:13:28.91 ID:It7hCXAB0.net]
よく調べてみ

484 名前:デフォルトの名無しさん mailto:sage [2023/06/11(日) 11:03:32.46 ID:P1jt4gwx0.net]
あるあるじゃんか

485 名前:デフォルトの名無しさん mailto:sage [2023/06/12(月) 14:12:41.04 ID:SIXj/4hV0.net]
>>475
デストラクタにどんな処理書いたら早くなったんだ?

デストラクタに処理を追加して早くなるとは思えんのだが

486 名前:デフォルトの名無しさん (アウアウウー Sadd-nIed) mailto:sage [2023/06/12(月) 14:23:56.15 ID:14kLXnCoa.net]
使ってないインスタンスを随時終了させたってだけでしょ
意図しないオブジェクトがメモリ圧迫してたなら速くなって当然

487 名前:デフォルトの名無しさん mailto:sage [2023/06/12(月) 16:01:58.40 ID:SIXj/4hV0.net]
>>480
随時なら、デストラクタに来るまでに解放するってことなんだが...

デストラクタで解放されなかったメモリを解放したって話なら、循環参照してたぐらいしか思いつかんが
それをデストラクタの段階で解放して処理が早くなるとは思えんが

そもそもメモリ圧迫で速度低下したって話なら、もとの
>コード終了時のオブジェクト解放にめちゃくちゃ時間がかかるようになった
ってのが間違った前提だったって話になるんだが

488 名前:デフォルトの名無しさん mailto:sage [2023/06/12(月) 22:08:42.75 ID:14kLXnCoa.net]
>>481

まぁ、デストラクタの記述でメモリが開放されることはないのはあなたの言う通りだね

文面を読むにClassTerminate記述のことじゃなくて
単に意図しないオブジェクトに対してNothingを設定したって意味だと思ってたけど違うのかな?

489 名前:デフォルトの名無しさん (ワッチョイ 8bf2-woSW) [2023/06/13(火) 18:54:34.11 ID:hIiZm8YL0.net]
オブジェクト指向が理解できねぇ



490 名前:デフォルトの名無しさん (ラクッペペ MMeb-G3RK) mailto:sage [2023/06/13(火) 19:05:33.87 ID:MvlUmR8SM.net]
最初のOOP学習にVBAは相応しくない

491 名前:デフォルトの名無しさん (アウアウウー Sadd-nIed) mailto:sage [2023/06/14(水) 11:48:51.61 ID:eB6yauOia.net]
実際のところ、VBA使用者の中でオブジェクト指向まで
使えるようになる人の割合ってどの程度なんだろう?

ただ配列が使えるようになるとかとは学習コストの次元が違うから相当少ないとは思うけど、
他言語やってた人ならオブジェクト指向は使えて当然だしなぁ。

492 名前:デフォルトの名無しさん (ワッチョイ c1ce-8sUu) mailto:sage [2023/06/14(水) 12:09:21.27 ID:qkXrOJy10.net]
哲学的な話になるけど
単なる事務仕事の自動化にオブジェクト指向の出番はほとんどない
使わないけど知識として覚えるだけならVBAは教材に向いてない

493 名前:デフォルトの名無しさん (アウアウウー Sadd-nIed) mailto:sage [2023/06/14(水) 12:15:21.92 ID:eB6yauOia.net]
使う使わないは一先ず横においておかないと話が噛み合わなくなる

494 名前:sage (ワッチョイ 8b10-mVGR) [2023/06/14(水) 15:15:49.61 ID:x/1GcB560.net]
半角アルファベットと記号の文字列があると仮定して
半角カタカナに変換して
[0(ゼロ)]と[O(オー)]、「I(アイ)」と「l(エル)」と「1(イチ」
の違いをわかりやすく可視化する時
どう組まれてますか?

0O10l1I ⇒ ゼロ,オー,イチ,ゼロ,エル,イチ,アイ

全部パターン分けで組まないといけない感覚あり

495 名前:デフォルトの名無しさん (ラクッペペ MMeb-G3RK) mailto:sage [2023/06/14(水) 15:36:18.32 ID:ZQKJ3TXHM.net]
ConsolasかCascadiaあたりでも使えばいいだろ

496 名前:sage (ワッチョイ 8b10-mVGR) [2023/06/14(水) 16:01:17.58 ID:x/1GcB560.net]
そうですよね
「Consolasでいいじゃないですかw」という話をしていました(汗

497 名前:デフォルトの名無しさん (スプープ Sd73-iGu4) mailto:sage [2023/06/14(水) 20:22:58.59 ID:YJj23+3Vd.net]
継承もできない、まともなエラー処理もできない言語
そんなのでオブジェクト指向プログラミングなんて苦行をあえてする必要ない
VBAでオブジェクト指向プログラミングすることが目的の奴だけがやるべき
openPyXlとかxlwingsとか使ってpython使うのが正解

498 名前:デフォルトの名無しさん (オイコラミネオ MM8b-woSW) [2023/06/14(水) 21:29:42.81 ID:Lrgg+dc1M.net]
じゃあそもそもVBAのクラスモジュールは何の為にあるんだよ

499 名前:デフォルトの名無しさん (ラクッペペ MMeb-blrJ) mailto:sage [2023/06/14(水) 21:43:21.66 ID:dRDCUjtWM.net]
ちょっとだけ 便利にするためでしょ



500 名前:デフォルトの名無しさん (スフッ Sd33-V2/r) mailto:sage [2023/06/14(水) 22:16:22.00 ID:zeSklkWgd.net]
>>492
自作イベント用かな

501 名前:デフォルトの名無しさん (スップ Sd33-B0Ts) mailto:sage [2023/06/14(水) 22:46:01.86 ID:bBSkkOmsd.net]
関数自作するときとか場所分けたいじゃん

502 名前:デフォルトの名無しさん (ワッチョイ 1310-4HgM) mailto:sage [2023/06/15(木) 01:14:11.47 ID:K9b5PX+v0.net]
UIAUTOMATIONでWindowsアプリを操っていたら、突然アプリが落ちた!
さあ、エクセルとアプリ、悪いのはどっち?

503 名前:デフォルトの名無しさん (アウアウウー Sadd-nIed) mailto:sage [2023/06/15(木) 01:24:53.94 ID:mmfDb7UAa.net]
クラスモジュール、普通に便利だけどね
特に再利用と拡張が楽なのがいい

そういえば継承をVBAで使いたいと思ったことないな
合成、オーバーライド、インターフェースあたりは使えればいいなとおもうけど

でもそんなのよりパラメータ付コンストラクタを普通に使えない、とかのほうが俺的には余程ストレスだな

504 名前:475 (ワッチョイ 13e3-atBl) mailto:sage [2023/06/15(木) 09:33:06.27 ID:6h46zCNd0.net]
>>479
Class_TerminateにSet xxx=Nothingを書いた
諸々の処理が「終わってから」なかなか終了しなくなったんで、たぶんどこかで循環参照になってたか、カウンタがゼロにならないとかでオブジェクトへの参照がまだ残ってる判定になってたんだと思った
でも、今同じように戻しても再現しなくなってしまったが、コードを変えた直後の最初の一回だけ終了にやたら時間がかかるケースが出てきた
(「コンパイル」を実行して保存しても最初の一回だけ遅くなる)
クラスが7つもあってごちゃごちゃしてるから、その辺から整理しないと本当は何が悪かったのかまで今はまだわからん

505 名前:デフォルトの名無しさん (ワッチョイ 7b19-ydOm) [2023/06/15(木) 12:32:47.10 ID:RQPtceb60.net]
>>497
オーバーロード、オーバーライドは使えないけど
インターフェースは使えるよ。

パラメータ付きコンストラクタは使えないけど
その辺拘るならCallByNameやAPIのコールバックで
何とか汁。

506 名前:デフォルトの名無しさん (ワッチョイ 716e-8sUu) mailto:sage [2023/06/15(木) 14:36:06.97 ID:G8DPzqW/0.net]
自動でインデント調整を行う方法があれば教えてください。
今まではSmart Indenterを使用。windows10、エクセル2010

windows11、エクセル2021にしてからは使えなくなってしまいました。下記を参考にインストールしましたが出来ず。
tradememo.techblog.jp/archives/73543570.html

507 名前:デフォルトの名無しさん (ワッチョイ 132f-APG/) mailto:sage [2023/06/15(木) 22:40:10.51 ID:Gxu/hKh00.net]
>>498
そのxxxはどこで定義された変数で、何が入っていたんだ?

つかほんとに単にメモリ不足で速度低下してるだけの気がしてきたな

508 名前:デフォルトの名無しさん (ワッチョイ 132c-mVGR) mailto:sage [2023/06/16(金) 11:57:31.84 ID:CbHDsKK60.net]
人名がずらずらと並んでいるプルダウンをチェックボックス形式にする。
一人だけ選択ならそのままセルに入力され、複数人選んだら一人目の頭に?
半角スペースが空いて二人目の頭に?と自動でついて入力されたらとても嬉しいのですが、
どういうコードが考えられるか悩んでおります。

509 名前:デフォルトの名無しさん (ワッチョイ 1342-RZnJ) mailto:sage [2023/06/16(金) 19:46:08.99 ID:lOpXO/WO0.net]
条件付き書式でいいんじゃね



510 名前:デフォルトの名無しさん (アウアウウー Sadd-wxnb) [2023/06/16(金) 20:08:57.82 ID:ZRdkd62Ia.net]
○の中の番号って20まで?

511 名前:デフォルトの名無しさん (ワッチョイ 01da-8sUu) mailto:sage [2023/06/16(金) 20:30:31.09 ID:vL8BmY/W0.net]
21~50までは、「挿入」-「記号と特殊文字」で出て来るダイアログから選べば可
51以上は丸文字をWordの機能を使って入れる形式 ← 面倒臭い

512 名前:デフォルトの名無しさん (ワッチョイ 368c-0LQ2) [2023/06/17(土) 00:19:14.62 ID:BthtTHXs0.net]
(2)
括弧でええやん

513 名前:デフォルトの名無しさん (ワッチョイ 922c-Kp8H) mailto:sage [2023/06/17(土) 00:36:25.59 ID:zHsFmXG00.net]
使うとしたらせいぜい?までです。
色々ご回答ありがとうございます。

514 名前:デフォルトの名無しさん (スッップ Sdb2-C6j3) mailto:sage [2023/06/17(土) 10:20:45.20 ID:UdtQ6Un6d.net]
丸数字を配列にしておくなり文字列にしておくなりして
人数の位置から配列や文字をMIDなりで取得して編集すればいいんじゃね

515 名前:デフォルトの名無しさん (ワッチョイ 0dce-L1I+) mailto:sage [2023/06/18(日) 01:03:31.39 ID:waH1MHTH0.net]
文字コード11553が①
文字コード11554が②
つまり =сhar(11552+A1) で丸付き数字に変換できる

516 名前:デフォルトの名無しさん (ワッチョイ d98e-kLz7) [2023/06/18(日) 02:43:33.18 ID:LkDYlGEI0.net]
>>502
こんなことで悩むようなら止めとけ

517 名前:デフォルトの名無しさん (ワッチョイ 1210-QKVe) mailto:sage [2023/06/18(日) 03:31:13.66 ID:39flxc5b0.net]
>>506
俺も諦めてそうしたことあるわ。
スターどっきり(秘)報告とかさ。

518 名前:デフォルトの名無しさん (ワッチョイ 0dce-L1I+) mailto:sage [2023/06/18(日) 04:18:49.74 ID:waH1MHTH0.net]


519 名前:デフォルトの名無しさん (ワッチョイ f29d-qfRM) mailto:sage [2023/06/18(日) 06:42:10.69 ID:n7dHmRLe0.net]
>>502
ここまで目的が、決まってるなら ビーイングに聞いたら教えてくれそうな気がする
騙されたと思ってやってみ
完全ではないにしろかなり正しい流れはわかる



520 名前:デフォルトの名無しさん (ワッチョイ ad10-LXfx) mailto:sage [2023/06/18(日) 11:00:24.16 ID:8nJec8eo0.net]


521 名前:デフォルトの名無しさん (ワッチョイ f29d-qfRM) mailto:sage [2023/06/18(日) 11:19:52.82 ID:n7dHmRLe0.net]
>>502
513 だけど ビーングに聞いてみたよ
回答結果 貼っておくね
正しいかどうかは自分で判断してね


そのような処理を実現するために、次のようなコードが考えられます。

```vb
Sub CheckBoxToCell()
Dim i As Integer
Dim count As Integer
Dim result As String
count = 0
For i = 1 To 10 ' チェックボックスの数だけ繰り返す
If ActiveSheet.CheckBoxes(i).Value = 1 Then ' チェックされている場合
count = count + 1
If count = 1 Then ' 最初の選択肢の場合
result = ActiveSheet.CheckBoxes(i).Caption
Else ' 2つ目以降の選択肢の場合
result = result & " " & ChrW(9311 + count - 1) & ActiveSheet.CheckBoxes(i).Caption
End If
End If
Next i
Range("A1").Value = result ' 結果をセルに入力する
End Sub
```

このコードは、10個のチェックボックスがあると仮定しています。チェックボックスの数に応じて、`For i = 1 To 10` の部分を変更してください。また、結果が入力されるセルは `Range("A1")` になっていますが、必要に応じて変更してください。

522 名前:デフォルトの名無しさん (スッップ Sdb2-C6j3) mailto:sage [2023/06/18(日) 13:02:31.47 ID:9itfWllid.net]
複数選択時に一人目に丸数字つかなくね?

523 名前:デフォルトの名無しさん (ワッチョイ 922f-9XmN) mailto:sage [2023/06/18(日) 23:32:00.05 ID:q4GYYJOx0.net]
>>515
それ、コメントも勝手に入れてくれてるの?
どんな内容で聞いたのか気になるが、結構使えるかもしれんな

524 名前:デフォルトの名無しさん (ワッチョイ f29d-qfRM) mailto:sage [2023/06/19(月) 00:19:50.80 ID:13bx54hA0.net]
>>517
502の本文をそのまま貼り付けただけだよ

コメントもつけてくれる

意外とやるよね

特に メソッドとかプロパティとかを忘れた時に非常に 便利

525 名前:デフォルトの名無しさん (ワッチョイ ad10-LXfx) mailto:sage [2023/06/19(月) 19:05:37.62 ID:gTQbq+Nl0.net]
意外とAIの書いたコード見た目は良くね??
まあ正しいかは分からんが。

526 名前:デフォルトの名無しさん (ワッチョイ 0dce-L1I+) mailto:sage [2023/06/19(月) 21:15:03.13 ID:DAevJAQS0.net]
AIは、ちょっと複雑なコードを要求すると、実在しない理想の関数とか持ち出してくる
その関数はどこにあるか聞くと自分で作れと言われる
そこの部分が一番知りたかったのに
半月ぐらい前に経験した実話よ

527 名前:デフォルトの名無しさん (ワッチョイ a932-C6j3) mailto:sage [2023/06/19(月) 21:51:52.81 ID:yUJv3dIE0.net]
ガンダーラを探しているみたいだな

528 名前:デフォルトの名無しさん (ワッチョイ d910-wsVZ) mailto:sage [2023/06/20(火) 01:05:06.73 ID:4BKdA8B40.net]
Gandhara, Gandhara
From the United Kingdom
I'm looking for heaven
I'm going to California
だったか

529 名前:デフォルトの名無しさん (ワッチョイ f29d-qfRM) mailto:sage [2023/06/20(火) 02:18:29.21 ID:A7irJ18X0.net]
>>520
その関数の機能は AI の方から説明があると思うので それをそのまま AI に聞いて 関数を作ってもらうことはできないの?
完璧なコードでなくても大きなロジック が分かるだけでもすごく時間 節約になると思うけど



530 名前:デフォルトの名無しさん (ワッチョイ 856e-L1I+) mailto:sage [2023/06/21(水) 17:43:20.54 ID:9nDnexAe0.net]
ActiveXコントロールのイベントは、コントロールが配置されたシートのVBAコードモジュールに記述しないとダメなの?

531 名前:デフォルトの名無しさん (ワッチョイ f29d-qfRM) mailto:sage [2023/06/21(水) 19:26:57.32 ID:7CHaMvnk0.net]
>>524
そのイベント内のコードからcall関数で一般のプロシージャを呼び出せばいい

532 名前:デフォルトの名無しさん (ワッチョイ a510-bte+) mailto:sage [2023/06/24(土) 10:49:09.24 ID:FqfK6b2x0.net]
ビットマップファイルを読み込んで画素を1px x 1pxに幅設定したセルの背景色として割り当てて、
シート状にビットマップ画像を表示するプログラムを作りました。
うまくいくときはうまくいくのですが、ときどき、
「セルの書式が多すぎるため、書式を追加できません」
とエラーが出て処理が止まります。
chatGPTに効いたらActiveworksheet.Stylesを削除すればいいと言われたので、
For k = ActiveWorkbook.Styles.Count To 1 Step -1
If InStr("Hyperlink,Normal,Followed Hyperlink", ActiveWorkbook.Styles(k).Name) Then
'pass
Else
Debug.Print ActiveWorkbook.Styles(k).Name
ActiveWorkbook.Styles(k).Delete
End If
Next k
こういう処理をループにかませてスタイルを削除させていたのですが、うまくいきません。
端的にいうと、スタイルがそんな増殖しているわけでもないみたいです。47個ぐらいにしかなりません。

もっと別の理由で「セルの書式が多すぎるため、書式を追加できません」と出るようなのですが、他にどういう理由で
このエラーが発生する可能性がありますか。

533 名前:デフォルトの名無しさん (ワッチョイ ddce-OfpS) mailto:sage [2023/06/24(土) 14:45:58.27 ID:TJX+Ujua0.net]
>>526
Interior.Colorを設定した時に内部的に自動で追加されるスタイルは、実はStyles().Deleteでは消せない
これをマクロから消す方法はなくて、ワークシート全体の書式をクリアしてからExcelを再起動するしかない

あと、Google検索で解決できない質問は、ChatGPTに聞いても無駄だよ
同じブログや質問サイトから答えを拾ってきてるだけだから

534 名前:デフォルトの名無しさん (ワッチョイ ddce-OfpS) mailto:sage [2023/06/24(土) 14:58:19.61 ID:TJX+Ujua0.net]
>>526
画像を続けて何枚も表示したいときは、もう一つ解決方法があって、画像を15bitパレットに減色すれば(ほぼ)エラーが出なくなる

15bitパレットにする一番簡単な方法は、RGBそれぞれの下位3bitをすべて100(2)などに固定する
ただし微妙な階調は表現できなくなる

535 名前:デフォルトの名無しさん (スプッッ Sd43-PAG3) mailto:sage [2023/06/24(土) 16:14:25.27 ID:zDQnymy5d.net]
ドンピシャな回答ありがとうございます
やはりstyles().deleteで削除できないスタイルなんですね。
RGB関数を使って背景色割り当てていたので、組み合わせが膨大になって書式の限界値超えてしまうことが原因ってことで、色調をもっと荒くしてみます。

実際問題画像の綺麗さは二の次でして、AIの学習をエクセルでやるためにビットマップデータを読み込ませて誤差逆伝播法やるのが本筋で
画像表示はデモンストレーションです。
流石に何万枚も画像データの読み込みは無理ですが、ある程度の精度が出るくらいはエクセルでも処理できるのではないかという目算です。

536 名前:デフォルトの名無しさん (アウアウウー Sa69-waoq) [2023/06/26(月) 14:01:44.74 ID:+fVe3jTma.net]
Worksheetfunctionで配列数式を入れたいのですがそういうコマンドってありますか?
forで代用するしかないのでしょうか?

537 名前:デフォルトの名無しさん (ワッチョイ 2da5-wYA+) mailto:sage [2023/06/26(月) 14:40:01.51 ID:tFrwHTpK0.net]
今月(2023/6)に入ってから、今まで問題なく使用できていたマクロの処理時間が異常に長くなる現象が発生しています。
処理を一つ一つ試していくとCopyメソッドに特に時間がかかっているようです。
実験として以下のコードを作成してみました。
Sub CopyTest1()
Dim i As Long, maxRow As Long
Dim STime As Double, ETime As Double

STime = Timer
Application.ScreenUpdating = False
maxRow = Cells(Rows.Count, 5).End(xlUp).Row

For i = 1 To Cells("A1")
Cells(2, 1).Copy
Cells(2, 2).PasteSpecial
Cells(2, 3).Copy
Cells(2, 2).PasteSpecial
Next i

Application.ScreenUpdating = True
ETime = Timer

Cells(1, 2) = ETime - STime
Cells(maxRow + 1, 5) = ETime - STime
End Sub
A1セルの値が5の状態で10回実行し、E列に書き出された処理時間(秒)は以下の通りでした。
{14.82, 2.00, 5.67, 14.82, 2.00, 14.82, 14.82, 14.82, 14.83, 14.83}
また、ペーストを行わず、コピーだけをForで繰り返した結果は
{14.83, 14.82, 14.83, 14.82, 3.84, 14.81, 7.50, 1.99, 13.01, 14.83}
コピーを1回行った後、Forでペーストを10回行うようにした結果は
{0.05, 0.05, 0.03, 0.04, 0.05, 0.04, 0.04, 0.04, 0.04, 0.05}
問題が発生しているのはExcel2021を使用しているPCのみで、同じネットワーク内のExcel2019を使用しているPCでは処理速度の低下は確認できませんでした。
セルの書式をコピーしたい場面が多いので配列を使用するのも難しいです。何か処理時間を短縮させる方法はあるでしょうか。

538 名前:デフォルトの名無しさん (ワッチョイ cbda-F8yx) mailto:sage [2023/06/27(火) 10:56:02.66 ID:HcS+dZLb0.net]
Excel2019で低下しないならExcel2019使えば解決だな

539 名前:デフォルトの名無しさん (ワッチョイ 2da5-wYA+) mailto:sage [2023/06/27(火) 11:10:53.92 ID:79VdYiQe0.net]
>>532
社内で使用しているOfficeはH&Bの買い切りで、2019は一部の部長や専務クラスのPCにのみ残っています。
なのでおいそれと「マクロ使いたいのでPCを使わせてください」と言うのも憚られます。

サブスクリプションでない場合でも過去のバージョンをインストールすることが可能でしょうか。
もしくは、過去バージョンの互換モードのようなものはあるのでしょうか。



540 名前:デフォルトの名無しさん (ワッチョイ cbda-F8yx) mailto:sage [2023/06/27(火) 11:50:49.43 ID:HcS+dZLb0.net]
>>533
同じマクロを別のPCで動作させて処理時間に差が出た場合、PC本体の性能の違いなのか
インストールされているソフトの違いなのかを切り分ける場合どんなテストが必要だと考えてますか?

541 名前:デフォルトの名無しさん (ワッチョイ 2da5-aaG3) mailto:sage [2023/06/27(火) 12:12:37.25 ID:79VdYiQe0.net]
>>534
処理の早いExcel2019のPC
CPU:Intel Core i3 8100
RAM:4.00GB
処理の遅いExcel2021のPC
CPU:Intel Core i5 12400
RAM:8.00GB
となっています
個体差や処理との相性などがあるのかはわかりませんが、性能の高低による変化である可能性は低いと考えています。
先月くらいまではどのPCでも使えていたマクロが全く同じコードで低速化した点、
Excel2019のPCで>>531のテストを行うといずれも1秒以内で終了する点
などもそう考える根拠の一つです

542 名前:デフォルトの名無しさん (ワッチョイ cbda-F8yx) mailto:sage [2023/06/27(火) 12:33:43.57 ID:HcS+dZLb0.net]
>>535
先月まで早かった処理で、Excelのバージョンが 2019→2021 に変わったら遅くなったということなら
Excelのバージョンの可能性はある
それ以外の違いに見落としがないなら

543 名前:デフォルトの名無しさん (ワッチョイ 2da5-aaG3) mailto:sage [2023/06/27(火) 12:49:59.40 ID:79VdYiQe0.net]
>>356
先月まではExcel2021のPCでもコピーが遅くなる現象はありませんでした。
具体的な発生のタイミングは分かりませんが、今月頭か月中かのビルドアップデートも原因の一つではないかとも考えています。

Excelのバージョンが原因である場合、どういった対応が考えられるでしょうか?

544 名前:デフォルトの名無しさん (ワッチョイ cbda-F8yx) mailto:sage [2023/06/27(火) 13:13:57.43 ID:HcS+dZLb0.net]
>>537
先月まで遅くなかったのなら関係ないと思うが
昔なら扱えるデータ(最終行)が違ったり、省略した引数の初期値が違っているとか
使うメモリ量も変わってくる
ネットワークの速度、セキュリティーソフト、ストレージの速度、空き領域、OS側なんかも影響出る可能性はある
あと画面の更新しか止めてないのも中途半端だし

545 名前:デフォルトの名無しさん (ワッチョイ 232f-6eWA) mailto:sage [2023/06/27(火) 13:48:41.94 ID:rDSyXQnX0.net]
アップデートをアンインストールして試せよ

546 名前:デフォルトの名無しさん (ワッチョイ 03bd-waoq) [2023/06/27(火) 13:54:20.09 ID:P3UB99BO0.net]
昔自分が経験した備忘録だけど、IMEのよくわからんバグでofficeアップデートした際に極端に動作遅くなったことはあった
旧verのIMEにしたら治ったけど根治には至らなかった

547 名前:デフォルトの名無しさん (ワッチョイ 2da5-wYA+) mailto:sage [2023/06/27(火) 15:25:29.19 ID:79VdYiQe0.net]
低速化が発生していなかったビルド16327.20248に戻して実行してみましたが、コピー10回にかかる時間は大きく変化しませんでした。
試すのに時間がかかったのは、Officeの導入などが社外への委託となっていてプロダクトキー等がすぐに確認できない状況であったためです。

次は>>540のお話を参考にIMEのバージョンを試してみようと思います。

548 名前:デフォルトの名無しさん (ワッチョイ 2da5-wYA+) mailto:sage [2023/06/27(火) 16:31:16.55 ID:79VdYiQe0.net]
とりあえず場当たり的というか、根本的でない方法での解決ができたように思うので報告します。
まずIMEのバージョンでは処理速度の変化は見られませんでした。

PasteSpecialでなくCopyに時間がかかっているという状況から、クリップボードが関係していると推測しました。
クリップボードの初期化やCutCopyModeをFalseにするなど試してみましたが変化はありませんでした。
その後いろいろ調べてみたところ、某解説サイトの「クリップボードを使わないセルのコピー」というページでValueに引数を入れられることを知りました。
>>531のマクロを以下のように変更したところ、期待する処理内容で0.05秒程度までの短縮ができました。

Sub CopyTest1()
Dim i As Long, maxRow As Long
Dim STime As Double, ETime As Double

STime = Timer
Application.ScreenUpdating = False

maxRow = Cells(Rows.Count, 5).End(xlUp).Row

For i = 1 To Cells(1, 1)
Cells(2, 2).Value(xlRangeValueXMLSpreadsheet) = Cells(2, 1).Value(xlRangeValueXMLSpreadsheet)
Cells(2, 2).Value(xlRangeValueXMLSpreadsheet) = Cells(2, 3).Value(xlRangeValueXMLSpreadsheet)
Next i

Application.ScreenUpdating = True
ETime = Timer

Cells(1, 2) = ETime - STime
Cells(maxRow + 1, 5) = ETime - STime
End Sub

お返事いただいた方々に感謝いたします。

549 名前:デフォルトの名無しさん (ワッチョイ 639d-jvQs) mailto:sage [2023/06/27(火) 18:09:44.31 ID:mMTtkkH30.net]
まあ最新のものにしたらろくなことがないの見本みたいな話だな。わしなんか2013なんで速いこと速いこと。絶対アプデせんからな。



550 名前:デフォルトの名無しさん (ササクッテロラ Sp81-x21g) [2023/06/29(木) 11:52:40.63 ID:3tm6uAsep.net]
リクナビnext
求人キーワード検索ヒット数の比較

Java 5300
SQL 2970
Python 2400
RPA 1800
VBA 238

ググれば簡単に出てくるVBA
採用側からしたらスキル扱いされてない現実

残念ながら
VBAでプログラム書けますって
Excel使えます程度

551 名前:デフォルトの名無しさん (ワッチョイ 639d-jvQs) mailto:sage [2023/06/29(木) 12:17:55.56 ID:lAWWyS/I0.net]
>>544
それだけ VBA が普及しているということ
日本語喋れますねというくらいに 基本的なスペック
お前ら VBA 使えないと 人間扱いされないぞ

552 名前:デフォルトの名無しさん (スププ Sd43-2HPs) [2023/06/29(木) 12:21:45.26 ID:u0QQbW4Md.net]
VBA使うと脳が退化する
マジで勘弁

553 名前:デフォルトの名無しさん (ササクッテロラ Sp81-x21g) [2023/06/29(木) 12:30:46.05 ID:3tm6uAsep.net]
>>545
もちろん、ココで丁寧に教えてる方は素晴らしいと思う

ただVBAだけでは武器にならないのは、
転職サイトの検索数が物語ってる

企業が欲しいのは、
時代の流れに柔軟に対応出来る人材

554 名前:デフォルトの名無しさん (ワッチョイ 639d-jvQs) mailto:sage [2023/06/29(木) 12:31:43.21 ID:lAWWyS/I0.net]
>>546
VBA で頭が退化するならそんなポンコツ 脳は捨ててしまえ

555 名前:デフォルトの名無しさん (ワッチョイ 639d-jvQs) mailto:sage [2023/06/29(木) 12:43:21.04 ID:lAWWyS/I0.net]
>>547
日本語喋れるだけでは武器にならないなと同じだな

でも VBA ができないと転職先でプロ 扱いされないぞ

ユーザーさん「ちょっと さ、こういうことできる マクロ 作ってくんない」
プログラマー「僕 Java の専門家 なんで VBA はわからないんです」
ユーザーさん「VBA じゃなくてマクロ だよ、 マクロ」
プログラマー「マクロ と VBA は同じなんですけど」
ユーザーさん「なんだよ エクセルも使えないのか  何で質問はこんなポンコツ やっとったんだよ」
ご愁傷様です

556 名前:デフォルトの名無しさん (ワッチョイ 639d-jvQs) mailto:sage [2023/06/29(木) 12:43:55.74 ID:lAWWyS/I0.net]
質問→システム部門

557 名前:デフォルトの名無しさん (ササクッテロラ Sp81-x21g) [2023/06/29(木) 12:46:51.78 ID:3tm6uAsep.net]
>>549
おれはVBAを批判してる訳じゃない
実際、おれもVBAばかり使ってきた

ただ、おれが言いたいのは、
GoogleやYouTube、チャットGPTで幾らでも調べられる時代
VBA程度では前みたいに重宝されなくなったんだよ

他人と差をつけて貴重な人材になるためには
VBAに拘りすぎてたら手遅れになるってこと
転職サイトのキーワード検索数が全てを物語ってる

この業界はものすごい勢いで進化してる
ずっと竹槍で鍛えてても、
弓矢や鉄砲には勝てないのと一緒

558 名前:デフォルトの名無しさん (ワッチョイ 9d49-F8yx) mailto:sage [2023/06/29(木) 12:56:11.73 ID:Gia+1urj0.net]
549は竹槍しか扱え(わ)ない滅びゆく企業にしがみつけてることで悦に入ってるんだから、
そっとしておいてやれよ
猿が竹槍はつかえても鉄砲を認識できないようなもんだろ

559 名前:デフォルトの名無しさん (ササクッテロラ Sp81-x21g) [2023/06/29(木) 12:56:12.68 ID:3tm6uAsep.net]
ここは質問スレで
VBAを丁寧に答えてる方に失礼になるから
おれは消えるけど

おまえら
時代の流れに柔軟に対応するんだぞ
何が出来るようになれば希少価値高い人材になるか
高年収GET出来るか
いつも考えるんだぞ

じゃあバイトに戻るわw



560 名前:デフォルトの名無しさん (ワッチョイ 639d-jvQs) mailto:sage [2023/06/29(木) 13:20:07.46 ID:lAWWyS/I0.net]
>>552
システム部門が全て解決してくれるという 幻想にしがみついてる○○

561 名前:デフォルトの名無しさん (ワッチョイ 2342-G+aT) mailto:sage [2023/06/29(木) 18:27:43.98 ID:SAm7WP5H0.net]
他に替えがきかないような貴重な人材なんてごく一握りだから
そんな恐れ多いことを考えるより自分ができることを考えりゃいいんだよ






[ 続きを読む ] / [ 携帯版 ]

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

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