VBAが妙な挙動をしたので困った時
仕事で26万件くらいのデータを加工しないといけなくなったのでVBAでやってみた。
ステップインでは動くのに、いざ実行すると途中5千件くらいでエラーになってしまった。
プログラム書くのが苦手なのでシートをアクティブにして、そのシートの操作をしているところでいつも止まってしまうことに気づいた。(ちゃんと書けばいいのは分かってます。withで書けばいいのにめんどくさがったせい。)
以下のコードを止まるところの前に追加してみたところ動くようになった。
Application.Wait [Now()] + 0.5 / 86400
件数が多いので1秒では待ち時間が長いためこちらのサイトを参考にした。
https://www.higashisalary.com/entry/vba-wait-ms
26万件動かしてみたら今度は20万件くらいでまた別のエラーで止まってしまった。
しかもいくつかの行が非表示になっている。
Rows.Hiddenなんでどこにも書いていないのに!
データの件数が多すぎたのか?ということで以下を追加したら動いた。
'画面表示の更新を一時的に止めて
Application.ScreenUpdating = False
'この間にやりたい処理を書き、
'画面表示の更新を再開
Application.ScreenUpdating = True
こちらのサイトを参考にしました。
https://teratail.com/questions/171969
半分に分けて処理すれば良かったのかと気づいた時は処理が終わってた。
行き当たりばったり…
本業がプログラム書く人はすごいなぁ。
コロナ怖い
ついにGLAYまでコロナに罹ってしまいました。
しかもTAKUROさんが…
https://www.yomiuri.co.jp/culture/music/20220120-OYT1T50211/
静岡のエコパアリーナでの公演が中止になってしまったため、週末はYouTubeで過去のライブ映像を公開していました。
その冒頭でTAKUROさんが悔しそうに公演をキャンセルしてしまい申し訳ないというコメントをしていました。
体調が回復に向かっているとのことで少し安心しましたが2週間後にはさいたまスーパーアリーナでのツアーファイナルが待っています。
無事にメンバー全員でライブができることを願っています。
クラスってなんでしょう?
プログラミングを初めてやると、知らない言葉がたくさん出てきます。
その中のひとつである、「クラス」、
これが理解できない・・・
クラスの何がわからないのか?
- クラスが必要な理由がわからない
- クラス名の最初の文字が大文字な理由わからない(大文字と小文字の区別もあるみたいで、クラスを作るときは小文字で、呼び出すときに大文字にしてみたらエラーが帰ってきた)
- 属性を毎回初期化しないといけないのがよくわからない
- クラスってなに?っていう質問をしたときに皆違うことを言っているような気がする(違うと思っているのは私だけなのかも?)
何度も書いていたら理解できるのかな。。。
がんばろ。
タブレットと外付けキーボードでPyQ
iPhoneでPyQをしていたときは、日本語入力ができないことが最大の難点でした。
難易度が上がってくると、iPhoneでは追いつかなくなってきたので、Windowsタブレットと外付けキーボードでPyQをしてみました。
これで問題はすべて解決するかと思いきや、新しい問題が発生しました。
「実行」ボタンや「判定」ボタンを押すと、プログラムを書く黒い画面にカーソルが飛び、スクリーンキーボードが出てきて画面の半分近くを占めるという問題です。
プログラムを書く→実行→判定 という流れで問題を解くのですが、「実行」ボタンや「判定」ボタンは何度も押下するので、その都度escキーでスクリーンキーボードを消さないと画面が見えなくなります。
めっちゃ画面が大きいタブレットとかであれば問題ないかもしれませんが、長いプログラムを書くようになってくると、実行→エラーを確認→実行→エラーが解消されたか確認→実行・・・と延々に続けることになり、その都度escキーを叩くというのは、実用的とは言えません。