2015-01-01から1年間の記事一覧
VBエディターの標準設定でマクロを書くとこのように表示される。一応キーワードに色は付いているが、私のディスプレイ設定では黒との違いがあまり目立たない。 また、文字の線が細いため見づらい。さらに、行間がやや詰まって見えるので適宜スペースを入れた…
手作業をマクロ化することで、何時間もの作業を数秒~数分で終わらせることができる。 この大きな時間削減に比べれば、マクロの実行速度が速いか遅いかなどというのは、些細なことのように思える。しかし、関西人というのはせっかちな生き物で、画面が固まっ…
先日からこの本にトライしているのだが、、Excel VBAでパズルを解こう作者: 坪崎誠司出版社/メーカー: 株式会社プレスティージ発売日: 2010/07/06メディア: 単行本(ソフトカバー)この商品を含むブログを見る17ページ~の汎用的な順列作成というのがどうも…
マクロが遅い原因は、だいたいループにある。以下のようなマクロを実行すると、私の環境ではだいたい5秒くらいかかった。 Sub サンプルマクロ() For i = 1 To 9999 Sheets(1).Cells(1, 1).Value = i Next For j = 1 To 9999 合計 = 合計 + j Sheets(1).Cells…
以前購入して積ん読書になっていた以下の書籍に取り掛かった。Excel VBAでパズルを解こう作者: 坪崎誠司出版社/メーカー: 株式会社プレスティージ発売日: 2010/07/06メディア: 単行本(ソフトカバー)この商品を含むブログを見る最初の問題は順列の出力。順…
この記事の元ネタはVB.NETやC#に関してのもの。 「どぼん!」さんのサイト「DOBON.NET プログラミング道」で見つけた。 小数(浮動小数点数型)の計算が思った結果にならない理由と解決法、Decimal型はいつ使うか?: .NET Tips: C#, VB.NET最初、「えっ?こ…
【注意】この記事は推測を含み、事実とは異なる可能性があります。とあるブログ(既に閉鎖)で、Exp関数に1を与えてi乗してLogを取ると、iが8と16のときに不一致になるとの報告があった。 数学的には、一致するはずである。これは面白い発見だ。実際に検証して…
VBAでは画面描画を停止すると実行が早くなることは広く知られているが、実はあと2つ、設定すると有効なオプションがある。手動計算と、イベントの抑制だ。それぞれ、次のようにして設定する。 Application.ScreenUpdating = False '描画停止 Application.Ena…
VBAでセルにデータを書き込む際に、1セルずつ処理すると結構時間がかかる。以下のマクロは1000行、100列の範囲に行×列の計算結果を入力するもので、実行するとかかった時間が表示される。 Sub セルに直接書き込み() '開始時間をtに格納 Dim t As Double: t =…
知っている方からすると、いまさら何をという話かもしれないが、私は定数がカンマ区切りで一度に宣言できることをさっき知った。これまで定数は以下のように個別に宣言していた。 Const 行数 As Long = 100 Const 列数 As Long = 50 Const 実行回数 As Integ…
今回もVBAHaskellのコードにヒントを得た書き方。【参照】 thom.hateblo.jp VBAHaskellのHaskell_2_stdFunモジュールでは、関数とそのポインタを表す関数が対になっており、インデントで表現されている。 以下引用 Function firstArg(ByRef a As Variant, By…
昨日、VBAHaskellのコードを読んではじめて知ったのだが、Debug.Printで改行させずに表示させる方法があるようだ。※VBAHaskellについては過去記事を参照 thom.hateblo.jp以下は、VBAHaskellのHaskell_3_printMモジュールからprintVプロシージャの一部を引用…
'今回の記事は、全てVBAコードです。 Sub 日本語でVBA() 表示 "VBAの一部は日本語で書くことができます。" 表示 "日本語で書けるのは、文字列、マクロ名、変数名、定数名、" & _ "プロシージャ名、ラベルなどです。" 表示 "例えば、肥満度(BMI)を求めるプロ…
最近コンビニで買い物をしていて思う。「先に会計を済ませてくれ」手持ちカバンに傘なんて持っていると、手が空いて無くて袋を受け取るのも一苦労。 さっさと財布をカバンに仕舞いたいのに、商品の袋詰めが終わってからでないと会計してもらえない。結果とし…
VBAで任意のスペースを挿入する関数がSpace関数である。 次のように使用する。 Sub test() Debug.Print "a"; Space(5); "b" End Sub 結果 a b似たような関数に、Spc関数がある。(実はさっき知った) 上記のコードをSpc関数に書き換えても、通常はうまく動作…
mmYYmmddさんにて、以下の記事が公開された。 mmyymmdd.hatenablog.com「フラットな配列」 いい表現である。これは一本とられたな。さて、VBAHaskell版について紹介していこう。そもそもVBAHaskellとは何かというのは以下の過去記事を参照してほしい。 thom.…
この記事は以下の記事の続編である。 thom.hateblo.jp動的配列の拡張部分でmmYYmmddさんからアドバイスをいただいた。 ReDim Preserve で +1 するのじゃなく、いっぱいになったら *2 していって、最後に削る方がいいですよ。 なるほど。 そういえばD*さんの…
アカウント、ID、パスワード、ログイン。 これらの言葉は、今では広く認知されている。でも裏側の仕組みはあまり知られていない。 今回は、認証の仕組みを「秘伝のタレ」に例えてIT系以外の方にも分かりやすくその仕組みを解説してみたい。 (うまくいくかど…
今回はジャグ配列[たとえばArray(Array(1,2), Array(3,4,5))]を普通の配列[Array(1,2,3,4,5)]になおす為のプログラムを作成してみた。ジャグ配列については以下を参照 thom.hateblo.jp コードは以下のとおり。 Sub 配列展開(x As Variant, ByRef arr2() As V…
ついに買ってしまった!そこが知りたい!Excel VBAプロの技 Excel97/2000/2002/2003対応!作者: 井川はるき出版社/メーカー: ナツメ社発売日: 2003/11メディア: 単行本購入: 1人 クリック: 4回この商品を含むブログ (4件) を見る…とAmazonで買える時点で幻でも…
今回は、数え上げはDictionaryオブジェクトを使うと楽ですよという話。 やりたいこと 次のような配列がある。 Array("A", "A", "B", "C", "A", "B", "A") 次のように、それぞれの数を集計したい。 A= 4 B= 2 C= 1 コード 上記の要望は、以下のコードで実現で…
今日書いた記事について、面白いけど難しいという意見をいただいたので、もう少しざくっと書いてみようと思う。これが先ほどのバージョン thom.hateblo.jp黒つぶれに見えても、階調が生きていればなんとかなるという結論だったが、なんでも暗い方が良いとい…
最近まよい犬さんが写真に凝っているようで、読んでたらなんだか写真も楽しそうだなと思えてくる。 www.mayoinu.comまあ、私の場合は今のところ特に取りたいものがあるわけではなく、単純に技術的な面に興味があるのだが。さて、ネットで色々と調べていたら…
以前にVBAでワンライナー(一行コマンド)を実行するための書籍を紹介した。 thom.hateblo.jp ※すでに絶版してしまったが、Amazonで中古本が手に入る。ただ、これまでイミディエイトウインドウ自体を開くのにAlt+F11で起動し、マウスでイミディエイトウインド…
昨今の企業はどこでもセキュリティが厳しくて、勝手にフリーソフトウェアをインストールしたりできないことが多いと思う。業務に関係のないソフトは入れるなという最低限の基準をもうけているところもあれば、いかなるソフトも勝手にインストールしてはいけ…
VI(ブイアイ)というテキストエディタをご存じだろうか。 カーソルの移動をh・j・k・lの4キーで行う、なんとも奇妙なエディタである。 では文字入力はどうするのかというと、VIにはいくつかのモードがあり、iキーで編集モードに入ると普通のエディタのように…
ボウリングは誰でも気軽に楽しめるスポーツである。 とは言っても、毎回ガーターばかりでは正直楽しくないだろう。私も昔はガーターばかりだったが、高校の時に弓道を始めてから、なんとなくコツのようなものが掴めるようになった。弓道で的を射るコツは、い…
趣味「弓道」とプロフィールに書いておきながら、弓道ネタは今回が初めての投稿になる。よくある誤解について、本当はこうだよというのを説明したい。 誤解その壱:真ん中のほうが得点が高い アーチェリーと違って、弓道の一般競技は点数制ではない。 実は、…
前回ビット演算を紹介した。thom.hateblo.jpビット演算にはANDとORのほかにも色々あり、そのうちのひとつがXOR(排他的論理輪:はいたてきろんりわ)である。これは、与えられた2つのビットのうち、どちらか片方が1でもう片方が0のときに、1になる。全ケース書…
ビット演算とは、二進数同士のちょっと変わった計算のことである。通常、我々の日常生活では十進数を使っている。0~9の十種類を組み合わせて数を表現する方法だ。 二進数は1と0の二種類だけですべての数を表す方法だ。たとえば、3は二進数では11、5は101と…