2015-08-01から1ヶ月間の記事一覧
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と…
まよい犬さんの以下記事を読んだ。 www.mayoinu.com写真のことはあまり分かっていないけれど、たぶんRAW(ロウ)データというのはパソコンでいうビットマップファイルのことかと思う。JPEGファイルの「画質劣化」であるが、困ったことにJPEGは編集→保存を繰り…
Excel VBAでWin32 APIを使う方法はネット上に色々出ている。 しかしネットの情報は玉石混合で、どれが正しい作法なのかよく分からない。 そこで先日以下の書籍を見つけたのだが、、、Excel VBAによるWin32 APIプログラミング入門作者: 大村あつし出版社/メー…
以下の記事で、ByRef x As VariantにLongやStringなどの別の型を渡すとメモリアドレスが変わるとの紹介が。 mmyymmdd.hatenablog.com前回私が書いた記事もそこがネックだった。 thom.hateblo.jpさて、この事象について、色々試していたら原因が見えてきたの…
今回は普通のWindowsのお話。デスクトップのファイルを、マイドキュメントやCドライブに移動させるとき、通常は切り取り・貼り付けかドラッグ&ドロップを行う。 一方、コピー・貼り付けという手段もある。見た目には、移動元のファイルが残るか、消えるかの…
前回検証記事で、Win32apiを使った変数のアドレス交換を紹介した。 thom.hateblo.jpただし、この方法には受け渡しする変数がVariant型でなければならないという制約がある。 そこで、Variant以外の変数でも対応できるように作ろうとしたのがこちら。。 Decla…
先日、以下の記事を書いた。 thom.hateblo.jpそのとき私は、VBAでメモリ番地の入れ替えはマシン語でも呼び出さないかぎり出来ないと思っていたのだが、ふつうにCopyMemoryで出来たようだ。mmYYmmddさんがそれを実現する関数を作成してくれた。 https://mmyym…
私は割とアルゴリズムに弱い。 ソートやサーチなどはそもそも大抵の言語に最初から機能としてあるので、今までプログラムを作ってきた中でそれほど困ったことにはならなかった。本格的にアルゴリズム学習の必要性を感じたのは、このブログを立ち上げた頃であ…