2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Excel VBA 質問スレ Part47

1 :デフォルトの名無しさん(エーイモ SE8b-KBVs):2017/03/15(水) 15:04:34.34 ID:SB1qQF57E.net
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part46 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1487342545/

※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

958 :デフォルトの名無しさん :2017/05/15(月) 16:59:07.80ID:au67XF4l0.net
>>951
生データを確認したい時は直近データを見たいときが殆どなので
直近データをコピペしてその貼り付け先シートでデータ確認するのがよさそうですね。
>>952
そのほうがいいのかもしれませんがエクセルしか知らない自分にはハードルが高いんですよね。
DBへ切り替える方法を簡単に解説してるサイトとか、これでググれみたいなワードがありましたら教えてください。
>>955
5秒間隔での更新は確かに重いですが、
>>949の画像のように、
データシートをアクティブにしたときと他のシートをアクティブにしたときのCPU使用率の差が大きいのが納得いかないのです。
大量のシートをアクティブにするだけで、なんでこんなにCPUが一生懸命動くのかと・・・
>>956
共有はしていません。

959 :デフォルトの名無しさん :2017/05/15(月) 17:00:47.72ID:au67XF4l0.net
>>958、訂正

>大量のシートをアクティブにするだけで

>大量のデータがあるシートをアクティブにするだけで

960 :デフォルトの名無しさん :2017/05/15(月) 17:10:44.64ID:Jjv98UEoH.net
>>958
マクロも計算式も一切ないのならデータの更新も行われないわけで、なんらかの処理が5秒おきに
実行されてるということですよね?

それがマクロ(VBA)で、なおかつ画面の再描画が実行されるなら、
・処理の前にapplication.screenupdating = false
・最後にapplication.screenupdating = true
を追加すると、動作が軽くなる可能性があります。

要は、画面の再描画が重いのでは?という疑惑です。

961 :デフォルトの名無しさん :2017/05/15(月) 17:11:46.80ID:iRZDwBv50.net
excelの中の人じゃないから 違ってるかもだけど

5秒おきに更新
非アクティブ : データの書き換え
アクティブ: データの書き換え + 画面更新
かと

VBAやってる人なら
Application.ScreenUpdating = fasle
とかは 高速化の定番よ

962 :デフォルトの名無しさん :2017/05/15(月) 17:12:46.90ID:iRZDwBv50.net
あらかぶった

963 :デフォルトの名無しさん :2017/05/15(月) 17:13:17.26ID:Jjv98UEoH.net
もう一つ怪しいのは、シートの再計算です。
https://www.moug.net/tech/exvba/0040055.html

964 :デフォルトの名無しさん :2017/05/15(月) 17:16:32.27ID:au67XF4l0.net
>>960
あ、ごめんなさい。>>949の「Changeイベントなどで動くマクロもありません」というのは、
データシートをアクティブにしたりデータシートのセルの内容を書き換えたりといったイベントで動くマクロはないという意味です。
application.screenupdatingですか。まさかそんな初歩的なミスは犯していないはず・・・今から確認してみます・・・

965 :デフォルトの名無しさん :2017/05/15(月) 17:24:05.50ID:au67XF4l0.net
>>960>>961
screenupdatingについては問題ありませんでした。
データシートに数式はありません(ないはず)。
データシートには条件付き書式はありません(ないはず)。

966 :デフォルトの名無しさん :2017/05/15(月) 18:03:55.68ID:Jjv98UEoH.net
横10個×5万行のデータをセットして、5万行目を書き換えるマクロを実行してみたけど、特に目立った
スパイクはなかったよ。CPU使用率は0.x%とか。
単にデータの多いシートにデータをセットするくらいでは、CPU使用率は上がらないってことかな。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub hoge()
  Set r = Worksheets("Sheet1").Range("A50000")

  For i = 1 To 10
    For j = 0 To 100
      r.Offset(0, j / 10) = j
    Next
    Sleep 1000
  Next
End Sub

967 :デフォルトの名無しさん :2017/05/15(月) 18:04:22.40ID:D8tuQ7tG0.net
>>965
無いはずじゃなくてちゃんと調べないとダメでしょ。
調べる関数とかあった筈。

968 :デフォルトの名無しさん :2017/05/15(月) 21:28:43.47ID:Nl227Lk00.net
>>967の渾身のボケをスルーとかお前らちょっと冷たすぎるんやないか?

969 :デフォルトの名無しさん:2017/05/15(月) 21:53:51.13 ID:MLFGMm4OQ
すみません>>957分かる人いますか?

970 :デフォルトの名無しさん :2017/05/15(月) 21:49:38.31ID:+qzB37uAp.net
データシートを更新してるルーチンが怪しいんじゃないのかなあ

971 :デフォルトの名無しさん :2017/05/15(月) 22:03:34.78ID:au67XF4l0.net
>>967
そうなんですが今も稼働中なのでチェックできないんです、すいません。
チェックできるのは土日になってしまいそうです。
>>970
データシートを更新しているマクロは、
データシートがアクティブでもその他のシートがアクティブでも、その実行速度に差はないと思うんですがどうなんでしょう?

972 :デフォルトの名無しさん :2017/05/15(月) 22:04:41.72ID:YL7X9+9D0.net
ほんとにexcel.exeのCPU使用率なの?

973 :デフォルトの名無しさん :2017/05/15(月) 22:06:08.32ID:YL7X9+9D0.net
>screenupdatingについては問題ありませんでした。
あとこの問題なかったかどうかの判断はこちらでするのでSS見せて

っていってSS見ると実は間違っているということが稀によくある

974 :デフォルトの名無しさん :2017/05/15(月) 22:26:31.63ID:ypGkRsf80.net
勘で言うとExcelオプションのハードウェア グラフィック アクセラレータを無効にするにチェック入れて再起動

あとはなんだろうprocess monitorでexcel.exeが何してるか調べるとか

975 :デフォルトの名無しさん :2017/05/15(月) 22:30:26.33ID:au67XF4l0.net
>>972
データシート以外がアクティブのときはエクセルのCPU使用率はせいぜい12%ぐらいなんですが、
データシートをアクティブにすると、画像のようにエクセルのCPUが大きく上がるのです
http://i.imgur.com/XROLZng.jpg

976 :デフォルトの名無しさん :2017/05/15(月) 22:32:46.70ID:au67XF4l0.net
>>974
それなりに長いマクロなのでSSで示すのは難しいですが、
マクロの最初にFalseにして最後にTrueに戻してるだけです。
間違っている例ってどんなのがありますか?

977 :デフォルトの名無しさん :2017/05/15(月) 22:33:59.03ID:au67XF4l0.net
>>976>>973へのレスです

978 :デフォルトの名無しさん :2017/05/15(月) 22:34:37.51ID:ypGkRsf80.net
>>976
その前にさ、i5なのになんでタスクマネージャのコア1個なの?
仮想マシンとかじゃないよね?

979 :デフォルトの名無しさん :2017/05/15(月) 22:42:31.32ID:au67XF4l0.net
>>978
タスクマネージャーのコアが1個ってなんですか?
詳しくないんですが、他OSからWindowsを起動して、そこでエクセルを起動してるとかはしてないです。
ハードディスクにはOSはWin7しかインストールしていません。

980 :デフォルトの名無しさん :2017/05/15(月) 22:44:32.91ID:ypGkRsf80.net
あと最小化しててもCPU喰うの?

981 :デフォルトの名無しさん :2017/05/15(月) 22:45:11.31ID:au67XF4l0.net
>>974
明日の朝にやってみます。ありがとうございます。
>Excelオプションのハードウェア グラフィック アクセラレータを無効にする

>process monitorでexcel.exeが何してるか調べるとか

難しくてよくわからないんでググってみます。

982 :デフォルトの名無しさん :2017/05/15(月) 22:48:12.52ID:HjU+oVHK0.net
更新のためにデータシートの一番下以外の部分も参照してる?
あと一番下以外も変化がないだけで更新してるとかは?

983 :デフォルトの名無しさん :2017/05/15(月) 22:51:33.73ID:ypGkRsf80.net
再計算の発生とかレンダリングも発生してる気がする

IEのCPU使用率やGOM起動中とか、さっきのCPUコア数の件とか
なんか怪しい点が多い

984 :デフォルトの名無しさん :2017/05/15(月) 22:54:14.32ID:au67XF4l0.net
>>980
今試してみたら、最小化したらCPU使用率は上がりませんでした。

>>982
5秒間隔で、データシート最下行のデータを更新する or データシート最下行のひとつ下の行にデータを追加する、ということをやっています。
で、最下行のデータを更新するにも、最下行のひとつ下の行にデータを追加するにも、直近9行のデータを使っています。
つまり、一番下以外の部分も参照しています。

985 :デフォルトの名無しさん :2017/05/15(月) 22:58:05.18ID:ypGkRsf80.net
>>984
あとはあれだ、描画停止だけじゃなくてこれ
Application.Cursor = xlWait
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
' この間に自分で書いたコード
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Cursor = xlDefault

986 :デフォルトの名無しさん :2017/05/15(月) 23:00:49.81ID:ypGkRsf80.net
>それなりに長いマクロ
とか書いてあるからSelectしてたり何かここに書かれていない重い原因があるんだろうよ
特定されそうな文字列は伏せてうpできねーの

それか、何をどう処理してるか具体的に書こうぜ

987 :デフォルトの名無しさん :2017/05/15(月) 23:04:45.28ID:KP72bivDr.net
やっぱり特殊な仕方でセルへのアクセスをしてるんじゃん

988 :デフォルトの名無しさん :2017/05/15(月) 23:17:13.55ID:KP72bivDr.net
そもそも行数はさておきフィールド数いくつあるのよ
200バイトくらいの文字列を突っ込んだセルが数十列あったりとかじゃないよな

989 :デフォルトの名無しさん :2017/05/15(月) 23:19:18.33ID:au67XF4l0.net
>>983
IEを起動してなくても、GOMを起動していなくても、データシートをアクティブにするとエクセルのCPU使用率は高くなります。
IEとGOMを閉じてデータシートをアクティブにしたときのCPU使用率です。
http://i.imgur.com/GMyaE03.jpg
>>986
楽天RSSというものを使用して、日経先物の買い注文や売り注文の変化を5秒間隔で集計しグラフ化しています。

マクロ高速化に関するページは一通り目を通しています。
Selectの多用など初歩的なミスはないと思います。

>>987
特殊な仕方でのセルへのアクセスとはどういったものなのでしょうか?

990 :デフォルトの名無しさん :2017/05/15(月) 23:21:10.98ID:au67XF4l0.net
>>988
列数は26列です。
最初の1列は日付、それ以外の25列は数値です。

991 :デフォルトの名無しさん :2017/05/15(月) 23:22:29.80ID:ypGkRsf80.net
自己判断ばかりで情報出さないと俺はもうパスだわ
がんばれなー

992 :デフォルトの名無しさん :2017/05/15(月) 23:27:01.14ID:au67XF4l0.net
>>991
えー、情報出してませんか?残念です。でもいろいろレスありがとうございました。

993 :デフォルトの名無しさん :2017/05/15(月) 23:27:32.77ID:KP72bivDr.net
>>990
その数値何桁あるんですか
あと、書式設定はどうなってます?

994 :デフォルトの名無しさん :2017/05/15(月) 23:30:12.17ID:ypGkRsf80.net
>>992
つか楽天RSSのせいじゃねーの?

995 :デフォルトの名無しさん :2017/05/15(月) 23:33:08.29ID:ypGkRsf80.net
楽天RSSスレがあるぽいからそっちで聞いた方がいいと思うよ
長引いてて他の人が質問しづらいだろうし

996 :デフォルトの名無しさん :2017/05/15(月) 23:34:38.44ID:KP72bivDr.net
てか、ググってみたら楽天RSSってエクセルアドインツールじゃん
そんなもん、ユーザーのカスタムコードだけ調べても原因なんか分からんだろw

997 :デフォルトの名無しさん :2017/05/15(月) 23:36:18.68ID:ypGkRsf80.net
おじさん(´・ω・`)ガッカリだよ

998 :デフォルトの名無しさん :2017/05/15(月) 23:37:21.71ID:KP72bivDr.net
しかも数式の自動計算オプションをオンにしないと使えないみたいじゃん

999 :デフォルトの名無しさん :2017/05/15(月) 23:38:35.98ID:au67XF4l0.net
>>993
http://i.imgur.com/jG68gse.jpg
こんな感じです。
1列目以外の書式は標準です。
>>994>>995
楽天RSSのせいだとしても、
アクティブのシートによってCPU使用率にここまで差があるというのが納得できないんですよね。

でも仰るように、長引いてて迷惑かもしれないんで、少々控えます。

1000 :デフォルトの名無しさん :2017/05/16(火) 00:38:16.66ID:o7mBy2CV0.net
>>999
>納得できないんですよね。
だから判断するのは質問者の手前じゃねえっつってんだろ

分かってないくせになんで納得できないんだよ
アクティブシートによって楽天RSSが負荷をかける仕様なだけだろ

すっとぼけてるだけで実は仮想マシンで色々動かしてるんだろ?
マネーゲームしてる典型的なカスの態度そのまんまだぜ

1001 :デフォルトの名無しさん :2017/05/16(火) 01:00:20.15ID:H5+sVhHM0.net
>>1000
アクティブシートによって負荷がかかる仕様ってことがあるのか、なるほど。

>すっとぼけてるだけで実は仮想マシンで色々動かしてるんだろ?
なぜそう思うのか?そんな知識は持ち合わせていない。

>マネーゲームしてる典型的なカスの態度そのまんまだぜ
すごい偏見
頭悪そうだねw

1002 :デフォルトの名無しさん :2017/05/16(火) 01:02:10.42ID:o7mBy2CV0.net
>>1001
じゃあな、いい夢見ろよ

1003 :デフォルトの名無しさん :2017/05/16(火) 08:24:25.65ID:J7MMoyEGd.net
ScreenUpdating = False しない派いる?

1004 :デフォルトの名無しさん :2017/05/16(火) 08:25:04.88ID:iIGA/64l0.net


Excel VBA 質問スレ Part48 [無断転載禁止]?2ch.net
https://echo.2ch.net/test/read.cgi/tech/1494890685/l50

1005 :デフォルトの名無しさん :2017/05/16(火) 08:25:24.77ID:iIGA/64l0.net
>>1003
めんどくさいときはしない
けど基本するかなぁ

1006 :1001:Over 1000Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 61日 17時間 20分 51秒

1007 :1002:Over 1000Thread.net
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php

総レス数 1007
340 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★