はてなキーワード: vbeとは
担当者レベルで野良マクロを書きたくなる業務というのは、大概ややこしいのである。
引き継がれた通りにやったら、ここが10以下の時はこっちにしなきゃいけないとか言われる。
それどこに書いてあるんですかと聞くとどこそこのフォルダにテキストメモで入ってるとか言われる。
それこそ属人化の極みなのである。
慣れた人は、ああこれは10以下のパターンだからこっちの帳票だなってぱぱぱっと脳内で処理できるが、引き継がれた人はそうもいかない。
正しくマクロ化されていれば、少なくともVBEを覗けば、そこにその手順の全てが載っているということになる。
IFとFORとWHILE。GOTOさえ使わなければ、言語仕様によって強制的に構造化された手順書がそこにある。
そこまで整理されることで、上司や前の担当者にすら把握されていなかった業務手順の全体像というものが見えてきて、ここの手順は他に影響しないし大してお客様の役にたっていませんよねとか改善提案ができるのである。
そんなのわざわざマクロ化しないでも人間が読めるようにWordでまとめればいいだろ、と思うかもしれない。
しかし人間は曖昧さと空気読みが大得意で、文書でまとめるとつい厳密でない記述を残したり(こういった場合に注意する、とか。注意してどうするのか書かれない)、書かれていなくても経験とか常識で対応できてしまう。
VBAには曖昧さは通用しないので、得てしてWordでまとめたマニュアルなどより遥かに正確で抜けのない読みやすい(言語さえ読めれば)業務手順になる。
そこから正式に業務マニュアルにすることもできる。改善提案もできる。
それだけでなく正式にシステム化発注する際の要件定義書にすらなりえる。
スクリプト言語とはいえマクロが書かれているということは、既にほぼシステム化されているようなものなので、そこから仕様を書き起こして少し検討するだけでいいのだ。
GASを使うのは初めてだけど、なんとか形になった。
自動化っつってもそんなに大層なことはやってなくて、
そんな感じ。
感想として、前にもここに書いたけど純正エディタはすごく使いづらい。
頭文字が大文字じゃないと動かない関数なのに自動変換してくれなかったり、閉じ括弧補完してくれなかったり、インデントも行毎にいちいちTABキー押さなきゃいけなかったり、(これはたぶんだけど)ES6に対応してなかったり。せっかくjs使ってるのに…!
あと、今回はスプレッドシートとGmailしか使わなかったんだけど、カレンダーとかも交えた方が後々幸せかもしれない、と思った。
とにかく純正エディタから早く逃れたくて最後の方はやっつけになってしまった。
無料で使わせてもらってる手前、あんまり文句も言えないんだけど、もうちょっとリッチになるだけで大分使う人増えそうな感じがするだけに、すごくもったいない気がした。
退職者が「会社で何らかの『システム』を入れないから、これで作るしかない」といってVBAで作っていた。
一時は社内規定の残業上限に達するほどに、「夢中」で作っていた。
が、退職後3ヶ月、あるマクロの書き出すデータに致命的な問題が判明し、私が一部、使用停止を宣言した。
基幹系へ投入するデータが特定条件で確実に狂うのである、それも何ヶ月にも渡って誰も気づかなかった。
当該マクロでのデータ処理を禁止し、1年と少しぐらい、現業部が手作業でエクセルデータを作成していたと思う。
ろくに解説サイトも見ないでVBEでコードをこねくり回して作っていたのだと思う。
もしかすると、解説サイトや書籍の内容が理解できなかったのではないか、とすら思う。
Dim da as String da = "データ" Dim after as String after = "修正済" '---------------------------------------------- With ThisWorkbook.Worksheets(after) .Cells(i, 1).Value = ThisWorkbook.Worksheets(da).Cells(i, 1).Value .Cells(i, 2).Value = ThisWorkbook.Worksheets(da).Cells(i, 2).Value .Cells(i, 3).Value = ThisWorkbook.Worksheets(da).Cells(i, 3).Value .Cells(i, 4).Value = ThisWorkbook.Worksheets(da).Cells(i, 4).Value End with
シートをまたいで、ただ値をコピーして集計していく程度の内容であるが、Workbook/Worksheetの呼出が理解できていないのだと思う。
また、変数はワークシート名を格納する程度にしか使っていない。
シートの見出しも「修正決定○○数」という、一体、何の数量なのか理解に苦しむ見出しである。
使える制御構文はFor Nextだけらしく、Do WhileやFor Eachもなく、果てはLike構文すら見たことがない。
その人が退職して直ぐ後のミーティングで、自部署の担当役員がレジュメにこう書いていた
「努力は夢中に勝てない」
退職者も「夢中」で書いていたのだろうか。
大学推奨のウイルス対策ソフトとしてインストールしたんだけどこいつウイルスなんじゃが
・インストール後の再起動の後にFirefoxを破壊する(exeファイルが何か別のものに差し変わっている 16ビットアプリケーションがどうたら起動しない)
・再インストールしようとするとBSODで落ちる 気づいたらプログラムと機能のところにFireFoxがない
・セーフモードだとインストーラが立ち上がるのでインストールしてしばらくは動くが、updater.exeが動くとBSODで落ちた挙句にFirefoxを破壊
・Mcafeeをアンインストールしようとするとパスワードが求められる
・大学のvbeのePO経由で行うアンインストールスクリプト動かしてもアンインストールされない
・腹が立ったのでサービスを停止しようとしたができない
IsNumeric Function (Visual Basic)
IsNumeric returns True if the data type of Expression is Boolean, Byte, Decimal, Double, Integer, Long, SByte, Short, Single, UInteger, ULong, or UShort, or an Object that contains one of those numeric types. It also returns True if Expression is a Char or String that can be successfully converted to a number.
ここは普通のことをいっている。 IsNumeric が True を返すのは以下のとき。
Indicates that no beginning value has been assigned to a Variant variable. An Empty variable is represented as 0 in a numeric context or a zero-length string ("") in a string context.
Empty は context にあわせて以下のように解釈される。
というわけで IsNumeric(Empty) は Empty が数値として解釈されて 0 になるので True を返す。