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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ aaa4-I2zm)
垢版 |
2023/01/28(土) 12:12:12.41ID:UjlIZ1Ov0
!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
2023/06/08(木) 19:41:52.90ID:Wxh+dghv0
>>443
苦しいな
2023/06/08(木) 19:42:49.87ID:DSxTca6Td
>>444
スレ違い
漢字について語るスレ 2
https://lavender.5ch.net/test/read.cgi/gengo/1534748118/
2023/06/08(木) 19:46:13.14ID:uYSjYq8B0
>>447
やったことないということは伝えるべきだが、断るべきかどうかは違う
2023/06/08(木) 19:53:15.66ID:DSxTca6Td
>>448 托過ぎて草
2023/06/08(木) 19:57:37.22ID:Wxh+dghv0
>>451
ID 変えても ワッチョイで身元バレバレの托托ちゃん(笑)
453デフォルトの名無しさん (ワッチョイ 823e-XtQ1)
垢版 |
2023/06/08(木) 20:00:05.44ID:zo01FRG40
>>450
職場の私よりお偉いさんたちは
出来もしない事はするな
とか
できるのか出来ないのかわからない事はできると言うな
とか
出来ると言って出来なかったら嘘つきとか詐欺師とか
そんな事を言ってきます
なのでやった事のない事、実績のない事は やるな
という事なのだと理解しました

どうして未経験者に経験や実績が最初からあるのでしょうね

会社は学校じゃないらしいです
2023/06/08(木) 20:11:07.38ID:uYSjYq8B0
>>453
仕事頼まれて内容を確認しないでこんなの簡単とかすぐできるとか言う奴もいるからな
そのつもりで頼んだのに後になってうまく動かないとかなったら上司の責任問題になる
455デフォルトの名無しさん (ワッチョイ 823e-XtQ1)
垢版 |
2023/06/08(木) 20:19:16.31ID:zo01FRG40
>>454
私はそう言う事が初めての経験で全く何が何だかさっぱりわからなくて理解が出来ていません

それを言うならば未経験の事はするな、引き受けるな、出来ると言うな
という話になると思います
それにOJTとはなんですか?
2023/06/08(木) 20:20:21.37ID:SX7QkWSs0
あなたが欲しい答えはこうでしょう。
誰々が断れと言ったので断ります。
457デフォルトの名無しさん (ワッチョイ 823e-XtQ1)
垢版 |
2023/06/08(木) 20:28:49.61ID:zo01FRG40
私は今まで働いてきて聞いた限りの話では
出来ない事を安請け負いするな、仕事だから
みたいな話なのでこれからはやった事がない事は全て断ろうと思います
2023/06/08(木) 20:33:09.84ID:DSxTca6Td
>>452
セルラー通信だから勝手に変わってるだけで、
ID:Snmtqfef0とID:Wxh+dghv0みたいな丁寧な自演と比べちゃダメでしょw
2023/06/08(木) 20:55:57.80ID:Wxh+dghv0
>>458
日付が変わってるから ID が勝手にしろ変わるだけでそれを自演と言われちゃな
やっぱ妄想がひどいわ(笑)
2023/06/08(木) 21:21:22.44ID:uYSjYq8B0
>>457
もし何もできないのであれば全ての仕事を断ればいい
それで給料もらえるのかは知らんが
461デフォルトの名無しさん (ワッチョイ 823e-XtQ1)
垢版 |
2023/06/08(木) 21:30:46.15ID:zo01FRG40
>>460
出来ない事やわからない事を出来るというな、とか引き受けるなとか言うなら
何にも引き受けられませんよー
2023/06/08(木) 22:17:36.82ID:uYSjYq8B0
>>461
俺はできる側だから関係ない
463デフォルトの名無しさん (ワッチョイ 823e-XtQ1)
垢版 |
2023/06/08(木) 23:03:31.49ID:zo01FRG40
>>462
素敵🥹
2023/06/09(金) 01:41:19.35ID:HkCkkhjZ0
出来るか出来ないか分からないときは調査費用見積もればいい
身内相手でも時間くれでいい
話通じないならもう無理でええやろ、次に行く
2023/06/09(金) 07:51:36.36ID:BdvP8KZKd
>>459
遠回しに言っても理解できないみたいだから丁寧に言うと、
> なかなか 俺のファルス発言で盛り上がってるじゃないか
匿名掲示板で自己顕示欲を発露させてるのがまずキモい
それも誇れるどころかむしろ恥である読み間違いにおいてってところがまたキモい

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

誰も聞いてないのに間違いの言い訳始めるのがキモい
角行間に改行入れてるのがキモい
隙あらば自分語りがキモい
それらを踏まえた上での托
要するに間違いそのものより精神性が気持ち悪い
466デフォルトの名無しさん (スププ Sda2-XtQ1)
垢版 |
2023/06/09(金) 07:55:56.79ID:kQpJ5obDd
やったとこがない仕事を勉強してやる事さえ否定的な考えの人たちが世の中には多いみたいなので
やった事がない事は何もするべきではないのでは
私が色々聞いた話の理解では、例えば医療従事者は例えどんな些細なミスでも許されない、という様な話でした
2023/06/09(金) 09:06:25.43ID:uWjl3yo30
>>465
本当に全部しょうもない理由で他人をキモ呼ばわりしてるわけだ
その偏狭な精神性がキモいわ
NG 登録しとくから さよなら
2023/06/09(金) 10:51:38.01ID:2C/DXyS30
>>466
仕事しない会社員は会社辞めるしかないんじゃね
2023/06/09(金) 11:22:56.72ID:FJj7F9Bld
ワッチョイなしもありも雑談スレに成り下がってほんと不快だな
どういう生き方したらこんなゴミみたいな人間出来るんだろ
2023/06/09(金) 11:35:57.88ID:YWd0CHVo0
雑談専用スレ立てるとか言って何年経つんだよ?
2023/06/09(金) 12:37:16.30ID:V26uJVvA0
雑談スレを作っても誰も使わないから無駄
ここの惨状を見てみ

【質問不可】Excel総合相談所スレの雑談・議論スレ5
https://mevius.5ch.net/test/read.cgi/bsoft/1624005735/
2023/06/09(金) 14:23:04.85ID:smTSxqoia
簡単なユーザー定義型(2~3値を格納しておくだけの構造体)をtypeじゃなくクラスで作って、dictionaryオブジェクトのitemに9万個ぐらいインスタンスを紐付けたら、
コード終了時のオブジェクト解放にめちゃくちゃ時間がかかるようになった(数十秒)
やっぱこういうときは配列にするしかないのかな?
2023/06/09(金) 18:12:33.56ID:V26uJVvA0
>>472
スピードを取るか保守性を取るか
スピード優先ならクラスなんか作らずに単純な配列にする
たった数十秒なら俺ならそのままにする
2023/06/09(金) 20:25:26.92ID:tjC4mlZIM
オブジェクトの開放だけで数十秒もかかるのか

俺もその手法を多用するから興味あるな
俺が扱うデータは一万から三万行程度だけどどのコードも一~二秒くらいで終わる
2023/06/10(土) 13:37:17.92ID:l4DrLtSE0
>>473-474
レスサンクス
言われてみると確かに時間かかりすぎてるし変だなと思ってよくよく確認したら、
まず、9万個のインスタンスを紐付けた辞書の他に、16万個のインスタンスを紐付けた辞書が作られてた
更に、プロパティの一つに別のユーザー定義型のインスタンスが格納されてた
(コンストラクタあるしGetプロパティもSetで返ってたが見落としてた)
そっちのクラスのデストラクタが書かれてなかったので記述したら、普通に一瞬で終了するようになった
色々と教訓になった、ありがとう
2023/06/11(日) 07:46:10.07ID:UERnr49N0
MsgBoxがUserFormとシートの間に挟まって見えないの何だぜ
2023/06/11(日) 08:13:28.91ID:It7hCXAB0
よく調べてみ
2023/06/11(日) 11:03:32.46ID:P1jt4gwx0
あるあるじゃんか
2023/06/12(月) 14:12:41.04ID:SIXj/4hV0
>>475
デストラクタにどんな処理書いたら早くなったんだ?

デストラクタに処理を追加して早くなるとは思えんのだが
2023/06/12(月) 14:23:56.15ID:14kLXnCoa
使ってないインスタンスを随時終了させたってだけでしょ
意図しないオブジェクトがメモリ圧迫してたなら速くなって当然
2023/06/12(月) 16:01:58.40ID:SIXj/4hV0
>>480
随時なら、デストラクタに来るまでに解放するってことなんだが...

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

そもそもメモリ圧迫で速度低下したって話なら、もとの
>コード終了時のオブジェクト解放にめちゃくちゃ時間がかかるようになった
ってのが間違った前提だったって話になるんだが
2023/06/12(月) 22:08:42.75ID:14kLXnCoa
>>481

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

文面を読むにClassTerminate記述のことじゃなくて
単に意図しないオブジェクトに対してNothingを設定したって意味だと思ってたけど違うのかな?
483デフォルトの名無しさん (ワッチョイ 8bf2-woSW)
垢版 |
2023/06/13(火) 18:54:34.11ID:hIiZm8YL0
オブジェクト指向が理解できねぇ
2023/06/13(火) 19:05:33.87ID:MvlUmR8SM
最初のOOP学習にVBAは相応しくない
2023/06/14(水) 11:48:51.61ID:eB6yauOia
実際のところ、VBA使用者の中でオブジェクト指向まで
使えるようになる人の割合ってどの程度なんだろう?

ただ配列が使えるようになるとかとは学習コストの次元が違うから相当少ないとは思うけど、
他言語やってた人ならオブジェクト指向は使えて当然だしなぁ。
2023/06/14(水) 12:09:21.27ID:qkXrOJy10
哲学的な話になるけど
単なる事務仕事の自動化にオブジェクト指向の出番はほとんどない
使わないけど知識として覚えるだけならVBAは教材に向いてない
2023/06/14(水) 12:15:21.92ID:eB6yauOia
使う使わないは一先ず横においておかないと話が噛み合わなくなる
488sage (ワッチョイ 8b10-mVGR)
垢版 |
2023/06/14(水) 15:15:49.61ID:x/1GcB560
半角アルファベットと記号の文字列があると仮定して
半角カタカナに変換して
[0(ゼロ)]と[O(オー)]、「I(アイ)」と「l(エル)」と「1(イチ」
の違いをわかりやすく可視化する時
どう組まれてますか?

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

全部パターン分けで組まないといけない感覚あり
2023/06/14(水) 15:36:18.32ID:ZQKJ3TXHM
ConsolasかCascadiaあたりでも使えばいいだろ
490sage (ワッチョイ 8b10-mVGR)
垢版 |
2023/06/14(水) 16:01:17.58ID:x/1GcB560
そうですよね
「Consolasでいいじゃないですかw」という話をしていました(汗
2023/06/14(水) 20:22:58.59ID:YJj23+3Vd
継承もできない、まともなエラー処理もできない言語
そんなのでオブジェクト指向プログラミングなんて苦行をあえてする必要ない
VBAでオブジェクト指向プログラミングすることが目的の奴だけがやるべき
openPyXlとかxlwingsとか使ってpython使うのが正解
492デフォルトの名無しさん (オイコラミネオ MM8b-woSW)
垢版 |
2023/06/14(水) 21:29:42.81ID:Lrgg+dc1M
じゃあそもそもVBAのクラスモジュールは何の為にあるんだよ
2023/06/14(水) 21:43:21.66ID:dRDCUjtWM
ちょっとだけ 便利にするためでしょ
2023/06/14(水) 22:16:22.00ID:zeSklkWgd
>>492
自作イベント用かな
2023/06/14(水) 22:46:01.86ID:bBSkkOmsd
関数自作するときとか場所分けたいじゃん
2023/06/15(木) 01:14:11.47ID:K9b5PX+v0
UIAUTOMATIONでWindowsアプリを操っていたら、突然アプリが落ちた!
さあ、エクセルとアプリ、悪いのはどっち?
2023/06/15(木) 01:24:53.94ID:mmfDb7UAa
クラスモジュール、普通に便利だけどね
特に再利用と拡張が楽なのがいい

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

でもそんなのよりパラメータ付コンストラクタを普通に使えない、とかのほうが俺的には余程ストレスだな
2023/06/15(木) 09:33:06.27ID:6h46zCNd0
>>479
Class_TerminateにSet xxx=Nothingを書いた
諸々の処理が「終わってから」なかなか終了しなくなったんで、たぶんどこかで循環参照になってたか、カウンタがゼロにならないとかでオブジェクトへの参照がまだ残ってる判定になってたんだと思った
でも、今同じように戻しても再現しなくなってしまったが、コードを変えた直後の最初の一回だけ終了にやたら時間がかかるケースが出てきた
(「コンパイル」を実行して保存しても最初の一回だけ遅くなる)
クラスが7つもあってごちゃごちゃしてるから、その辺から整理しないと本当は何が悪かったのかまで今はまだわからん
499デフォルトの名無しさん (ワッチョイ 7b19-ydOm)
垢版 |
2023/06/15(木) 12:32:47.10ID:RQPtceb60
>>497
オーバーロード、オーバーライドは使えないけど
インターフェースは使えるよ。

パラメータ付きコンストラクタは使えないけど
その辺拘るならCallByNameやAPIのコールバックで
何とか汁。
2023/06/15(木) 14:36:06.97ID:G8DPzqW/0
自動でインデント調整を行う方法があれば教えてください。
今まではSmart Indenterを使用。windows10、エクセル2010

windows11、エクセル2021にしてからは使えなくなってしまいました。下記を参考にインストールしましたが出来ず。
http://tradememo.techblog.jp/archives/73543570.html
2023/06/15(木) 22:40:10.51ID:Gxu/hKh00
>>498
そのxxxはどこで定義された変数で、何が入っていたんだ?

つかほんとに単にメモリ不足で速度低下してるだけの気がしてきたな
2023/06/16(金) 11:57:31.84ID:CbHDsKK60
人名がずらずらと並んでいるプルダウンをチェックボックス形式にする。
一人だけ選択ならそのままセルに入力され、複数人選んだら一人目の頭に@
半角スペースが空いて二人目の頭にAと自動でついて入力されたらとても嬉しいのですが、
どういうコードが考えられるか悩んでおります。
2023/06/16(金) 19:46:08.99ID:lOpXO/WO0
条件付き書式でいいんじゃね
504デフォルトの名無しさん (アウアウウー Sadd-wxnb)
垢版 |
2023/06/16(金) 20:08:57.82ID:ZRdkd62Ia
○の中の番号って20まで?
2023/06/16(金) 20:30:31.09ID:vL8BmY/W0
21~50までは、「挿入」-「記号と特殊文字」で出て来るダイアログから選べば可
51以上は丸文字をWordの機能を使って入れる形式 ← 面倒臭い
506デフォルトの名無しさん (ワッチョイ 368c-0LQ2)
垢版 |
2023/06/17(土) 00:19:14.62ID:BthtTHXs0
(2)
括弧でええやん
2023/06/17(土) 00:36:25.59ID:zHsFmXG00
使うとしたらせいぜいIまでです。
色々ご回答ありがとうございます。
2023/06/17(土) 10:20:45.20ID:UdtQ6Un6d
丸数字を配列にしておくなり文字列にしておくなりして
人数の位置から配列や文字をMIDなりで取得して編集すればいいんじゃね
2023/06/18(日) 01:03:31.39ID:waH1MHTH0
文字コード11553が①
文字コード11554が②
つまり =сhar(11552+A1) で丸付き数字に変換できる
510デフォルトの名無しさん (ワッチョイ d98e-kLz7)
垢版 |
2023/06/18(日) 02:43:33.18ID:LkDYlGEI0
>>502
こんなことで悩むようなら止めとけ
2023/06/18(日) 03:31:13.66ID:39flxc5b0
>>506
俺も諦めてそうしたことあるわ。
スターどっきり(秘)報告とかさ。
2023/06/18(日) 04:18:49.74ID:waH1MHTH0
2023/06/18(日) 06:42:10.69ID:n7dHmRLe0
>>502
ここまで目的が、決まってるなら ビーイングに聞いたら教えてくれそうな気がする
騙されたと思ってやってみ
完全ではないにしろかなり正しい流れはわかる
2023/06/18(日) 11:00:24.16ID:8nJec8eo0
2023/06/18(日) 11:19:52.82ID:n7dHmRLe0
>>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")` になっていますが、必要に応じて変更してください。
2023/06/18(日) 13:02:31.47ID:9itfWllid
複数選択時に一人目に丸数字つかなくね?
2023/06/18(日) 23:32:00.05ID:q4GYYJOx0
>>515
それ、コメントも勝手に入れてくれてるの?
どんな内容で聞いたのか気になるが、結構使えるかもしれんな
2023/06/19(月) 00:19:50.80ID:13bx54hA0
>>517
502の本文をそのまま貼り付けただけだよ

コメントもつけてくれる

意外とやるよね

特に メソッドとかプロパティとかを忘れた時に非常に 便利
2023/06/19(月) 19:05:37.62ID:gTQbq+Nl0
意外とAIの書いたコード見た目は良くね??
まあ正しいかは分からんが。
2023/06/19(月) 21:15:03.13ID:DAevJAQS0
AIは、ちょっと複雑なコードを要求すると、実在しない理想の関数とか持ち出してくる
その関数はどこにあるか聞くと自分で作れと言われる
そこの部分が一番知りたかったのに
半月ぐらい前に経験した実話よ
2023/06/19(月) 21:51:52.81ID:yUJv3dIE0
ガンダーラを探しているみたいだな
2023/06/20(火) 01:05:06.73ID:4BKdA8B40
Gandhara, Gandhara
From the United Kingdom
I'm looking for heaven
I'm going to California
だったか
2023/06/20(火) 02:18:29.21ID:A7irJ18X0
>>520
その関数の機能は AI の方から説明があると思うので それをそのまま AI に聞いて 関数を作ってもらうことはできないの?
完璧なコードでなくても大きなロジック が分かるだけでもすごく時間 節約になると思うけど
2023/06/21(水) 17:43:20.54ID:9nDnexAe0
ActiveXコントロールのイベントは、コントロールが配置されたシートのVBAコードモジュールに記述しないとダメなの?
2023/06/21(水) 19:26:57.32ID:7CHaMvnk0
>>524
そのイベント内のコードからcall関数で一般のプロシージャを呼び出せばいい
2023/06/24(土) 10:49:09.24ID:FqfK6b2x0
ビットマップファイルを読み込んで画素を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個ぐらいにしかなりません。

もっと別の理由で「セルの書式が多すぎるため、書式を追加できません」と出るようなのですが、他にどういう理由で
このエラーが発生する可能性がありますか。
2023/06/24(土) 14:45:58.27ID:TJX+Ujua0
>>526
Interior.Colorを設定した時に内部的に自動で追加されるスタイルは、実はStyles().Deleteでは消せない
これをマクロから消す方法はなくて、ワークシート全体の書式をクリアしてからExcelを再起動するしかない

あと、Google検索で解決できない質問は、ChatGPTに聞いても無駄だよ
同じブログや質問サイトから答えを拾ってきてるだけだから
2023/06/24(土) 14:58:19.61ID:TJX+Ujua0
>>526
画像を続けて何枚も表示したいときは、もう一つ解決方法があって、画像を15bitパレットに減色すれば(ほぼ)エラーが出なくなる

15bitパレットにする一番簡単な方法は、RGBそれぞれの下位3bitをすべて100(2)などに固定する
ただし微妙な階調は表現できなくなる
2023/06/24(土) 16:14:25.27ID:zDQnymy5d
ドンピシャな回答ありがとうございます
やはりstyles().deleteで削除できないスタイルなんですね。
RGB関数を使って背景色割り当てていたので、組み合わせが膨大になって書式の限界値超えてしまうことが原因ってことで、色調をもっと荒くしてみます。

実際問題画像の綺麗さは二の次でして、AIの学習をエクセルでやるためにビットマップデータを読み込ませて誤差逆伝播法やるのが本筋で
画像表示はデモンストレーションです。
流石に何万枚も画像データの読み込みは無理ですが、ある程度の精度が出るくらいはエクセルでも処理できるのではないかという目算です。
530デフォルトの名無しさん (アウアウウー Sa69-waoq)
垢版 |
2023/06/26(月) 14:01:44.74ID:+fVe3jTma
Worksheetfunctionで配列数式を入れたいのですがそういうコマンドってありますか?
forで代用するしかないのでしょうか?
2023/06/26(月) 14:40:01.51ID:tFrwHTpK0
今月(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では処理速度の低下は確認できませんでした。
セルの書式をコピーしたい場面が多いので配列を使用するのも難しいです。何か処理時間を短縮させる方法はあるでしょうか。
2023/06/27(火) 10:56:02.66ID:HcS+dZLb0
Excel2019で低下しないならExcel2019使えば解決だな
2023/06/27(火) 11:10:53.92ID:79VdYiQe0
>>532
社内で使用しているOfficeはH&Bの買い切りで、2019は一部の部長や専務クラスのPCにのみ残っています。
なのでおいそれと「マクロ使いたいのでPCを使わせてください」と言うのも憚られます。

サブスクリプションでない場合でも過去のバージョンをインストールすることが可能でしょうか。
もしくは、過去バージョンの互換モードのようなものはあるのでしょうか。
2023/06/27(火) 11:50:49.43ID:HcS+dZLb0
>>533
同じマクロを別のPCで動作させて処理時間に差が出た場合、PC本体の性能の違いなのか
インストールされているソフトの違いなのかを切り分ける場合どんなテストが必要だと考えてますか?
2023/06/27(火) 12:12:37.25ID:79VdYiQe0
>>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秒以内で終了する点
などもそう考える根拠の一つです
2023/06/27(火) 12:33:43.57ID:HcS+dZLb0
>>535
先月まで早かった処理で、Excelのバージョンが 2019→2021 に変わったら遅くなったということなら
Excelのバージョンの可能性はある
それ以外の違いに見落としがないなら
2023/06/27(火) 12:49:59.40ID:79VdYiQe0
>>356
先月まではExcel2021のPCでもコピーが遅くなる現象はありませんでした。
具体的な発生のタイミングは分かりませんが、今月頭か月中かのビルドアップデートも原因の一つではないかとも考えています。

Excelのバージョンが原因である場合、どういった対応が考えられるでしょうか?
2023/06/27(火) 13:13:57.43ID:HcS+dZLb0
>>537
先月まで遅くなかったのなら関係ないと思うが
昔なら扱えるデータ(最終行)が違ったり、省略した引数の初期値が違っているとか
使うメモリ量も変わってくる
ネットワークの速度、セキュリティーソフト、ストレージの速度、空き領域、OS側なんかも影響出る可能性はある
あと画面の更新しか止めてないのも中途半端だし
2023/06/27(火) 13:48:41.94ID:rDSyXQnX0
アップデートをアンインストールして試せよ
540デフォルトの名無しさん (ワッチョイ 03bd-waoq)
垢版 |
2023/06/27(火) 13:54:20.09ID:P3UB99BO0
昔自分が経験した備忘録だけど、IMEのよくわからんバグでofficeアップデートした際に極端に動作遅くなったことはあった
旧verのIMEにしたら治ったけど根治には至らなかった
2023/06/27(火) 15:25:29.19ID:79VdYiQe0
低速化が発生していなかったビルド16327.20248に戻して実行してみましたが、コピー10回にかかる時間は大きく変化しませんでした。
試すのに時間がかかったのは、Officeの導入などが社外への委託となっていてプロダクトキー等がすぐに確認できない状況であったためです。

次は>>540のお話を参考にIMEのバージョンを試してみようと思います。
2023/06/27(火) 16:31:16.55ID:79VdYiQe0
とりあえず場当たり的というか、根本的でない方法での解決ができたように思うので報告します。
まず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

お返事いただいた方々に感謝いたします。
2023/06/27(火) 18:09:44.31ID:mMTtkkH30
まあ最新のものにしたらろくなことがないの見本みたいな話だな。わしなんか2013なんで速いこと速いこと。絶対アプデせんからな。
544デフォルトの名無しさん (ササクッテロラ Sp81-x21g)
垢版 |
2023/06/29(木) 11:52:40.63ID:3tm6uAsep
リクナビnext
求人キーワード検索ヒット数の比較

Java 5300
SQL 2970
Python 2400
RPA 1800
VBA 238

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

残念ながら
VBAでプログラム書けますって
Excel使えます程度
2023/06/29(木) 12:17:55.56ID:lAWWyS/I0
>>544
それだけ VBA が普及しているということ
日本語喋れますねというくらいに 基本的なスペック
お前ら VBA 使えないと 人間扱いされないぞ
546デフォルトの名無しさん (スププ Sd43-2HPs)
垢版 |
2023/06/29(木) 12:21:45.26ID:u0QQbW4Md
VBA使うと脳が退化する
マジで勘弁
547デフォルトの名無しさん (ササクッテロラ Sp81-x21g)
垢版 |
2023/06/29(木) 12:30:46.05ID:3tm6uAsep
>>545
もちろん、ココで丁寧に教えてる方は素晴らしいと思う

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

企業が欲しいのは、
時代の流れに柔軟に対応出来る人材
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況